2018/12/06

Configuracion router Asus AC86u para Movistar TV (NAT mode, multidispositivo)

Tras unos años (como no) con el blog abandonado, vuelvo con un nuevo artículo sobre cómo configurar un router ASUS, en este caso el modelo ac86u, con soporte para Movistar TV sustituyendo completamente el router de Movistar (el que sea).
Con esta configuración el router funcionará como el de serie y podrás ver la televisión tanto el en desco (probado con un Zyxel, pero imagino que en el desco 4K funcionará igual), como en VLC, Raspberry Pi, etc.
Ojo porque este modelo de router aun no incluye soporte nativo para lo que Asus llama "Movistar Triple VLAN" dado que está basado en un chip de broadcom diferente al usado en modelos más antiguos y por lo tanto es necesario hacer una configuración personalizada.
Para ello he usado el firmware de RMerlin, que básicamente es el de Asus pero con algunas mejoras, entre ellas la inclusión de scripts personalizados.
Como ando mal de tiempo, este tutorial no será un guíaburros, así que se asume que controlas conceptos básicos como para acceder al router por ssh, modificar un fichero o cambiar de directorio. No obstante, tengo una versión anterior del tutorial para mi antiguo router ac66u que sí lo es, así que en este caso es utilizar la anterior guía pero con las modificaciones que indico en este post que son ligeramente diferentes.

En este caso, nuevamente intalaremos el firmware de Rmerlin (probado tanto con la 384.7.2 como con la 384.8, última versión disponible a fecha de este artículo). Podéis descargarlo de aquí:


Lo primero será acceder al router para configurarlo al igual que el ac66u pero con las siguientes modificaciones:

- Recomiendo deshabilitar el AiProtection. Por un lado, evita acceder a muchas páginas web legítimas dado que la clasificación realizada por Trendmicro es bastante discutible, y por otro lado puede causar bloqueos indeseados.

Para ello dejaremos así este apartado:







Por otro lado, es imprescindible deshabilitar la protección contra DNS Rebind o el desco no podrá conectar con las URLs de servicio de Movistar.
De igual forma recomiendo usar los DNS de Movistar, no los de CloudFlare o los de Google, dado que el router debe resolver algunos endpoints internos de Movistar y con otros DNS podría no funcionar.
Para todo ello dejaremos así la sección LAN:
 



La sección de LAN/IPTV debe quedar tal que así, esto es, configurada para que funcione el acceso a internet.


Y la sección WAN, genérica para Movistar. La contraseña del usuario de PPPoE es cualquiera, dado que Movistar hace tiempo que no usa auth PPPoE y en su lugar utiliza un ID de la ONT de fibra.



Con esto tendremos el servicio básico de acceso a internet funcionando.

Ahora toca la parte de Movistar TV. Es necesario activar el acceso SSH al router y conectarse con un terminal SSH (si estás en Windows, putty. En linux o mac, con el cliente SSH).



La particion JFFS debe estar igualmente habilitada.



Una vez hecho esto, nos conectaremos al router por SSH y procederemos a crear los siguientes archivos en la ruta /jffs/scripts. Usaremos vi. Si no sabes usarlo, al tutorial del ac66.

Lo que vamos a hacer es, por un lado, crear una nueva interfaz virtual llamada eth0.v1 en la VLAN2 de la interfaz wan (eth0). Esta VLAN2 es la que recibe el tráfico de Movistar TV.
Luego asignamos a dicha interfaz nuestra IP de servicio de Movistar TV.
Y finalmente ajustamos la reglas de firewalling y reconfiguramos el servicio de multicast para poder enrutar dentro de nuestra red todo el tráfico IGMP.

Crea un fichero llamado /jffs/scripts/wan-start
#!/bin/bash

MOVISTAR_TV_IP=10.64.XX.XX
MOVISTAR_TV_MASK=255.XX.XX.0
MOVISTAR_TV_GW=10.64.0.1

# Allow IPTV vlan 2 on new vlan inferface (eth0.v1)
#nvram set wan10_ifname=eth0.v1

vlanctl --mcast --if-create eth0 1
vlanctl --if eth0 --rx --tags 1 --set-rxif eth0.v1 --filter-vid 2 0 --pop-tag --rule-append
vlanctl --if eth0 --tx --tags 0 --filter-txif eth0.v1 --push-tag --set-vid 2 0 --rule-append

# Enable eth0v1 (VLAN2) interface
ifconfig eth0.v1 allmulti up

# IP for VLAN2 interface
ifconfig eth0.v1 $MOVISTAR_TV_IP netmask $MOVISTAR_TV_MASK up

# Add Movistar TV routers
sleep 1
ip route add to 172.23.0.0/16 via $MOVISTAR_TV_GW
ip route add to 172.26.0.0/16 via $MOVISTAR_TV_GW
#ip route add to 224.0.0.0/4 via $MOVISTAR_TV_GW

Sustituye tu IP de Movistar TV máscara y gateway con los de tu servicio. Si no sabes cuáles son, salta al tutorial del ac66u.

Crea otro fichero llamado /jffs/scripts/firewall-start

#!/bin/bash

if [ "$1" == "ppp0" ]; then
#       Firewall rules for IGMP (not needed anymore)

        #iptables -A INPUT -p igmp -i eth0.v1 -d 224.0.0.0/4 -j ACCEPT
        #iptables -A INPUT -p udp -m udp -i eth0.v1 -d 224.0.0.0/4 -j ACCEPT
        #iptables -A FORWARD -p igmp -i eth0.v1 -d 224.0.0.0/4 -j ACCEPT
        #iptables -A FORWARD -p udp -i eth0.v1 -m udp -d 224.0.0.0/4 -j ACCEPT
        #iptables -A FORWARD -o eth0.v1 -j ACCEPT

#       Restart mcpd daemon
        bash /jffs/scripts/mcpd &
fi

A continuación crea otro fichero llamdo /jffs/scripts/nat-start
#!/bin/bash

# NAT for vlan2
iptables -t nat -I POSTROUTING -o eth0.v1 -j MASQUERADE

# Disable IGMP filter in eth0.v1
/bin/echo 0 > /proc/sys/net/ipv4/conf/eth0.v1/rp_filter
/bin/echo 0 > /proc/sys/net/ipv4/conf/br0/rp_filter

Finalmente otro fichero llamado /jffs/scripts/mcpd

#!/bin/bash

/usr/bin/killall -q mcpd
sleep 1
mcpd

A continuación da permisos de ejecución a todos los scripts recién creados:
chmod a+ax /jffs/scripts/*

Y crea un fichero de configuración alternativo para el daemon de mcpd en /jffs/configs/mcpd.conf


##### IGMP configuration #####
igmp-default-version 3
igmp-query-interval 20
igmp-query-response-interval 100
igmp-last-member-query-interval 10
igmp-robustness-value 2
igmp-max-groups 25
igmp-max-sources 25
igmp-max-members 25
igmp-fast-leave 1
igmp-admission-required 0
igmp-admission-bridging-filter 0
igmp-proxy-interfaces eth0.v1
igmp-snooping-interfaces br0
igmp-mcast-interfaces eth0.v1

##### MCAST configuration #####
igmp-mcast-snoop-exceptions 239.255.255.250/255.255.255.255 224.0.255.135/255.255.255.255
mld-mcast-snoop-exceptions ff05::0001:0003/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

Reinicia el router, y a funcionar.

Problemas:
- Si no te funciona, haz las siguientes pruebas:
1) Chequea que existe una interfaz eth0.v1 con la IP de Movistar TV  (comando ifconfig)
2) Chequea que existe un ruta hacia la red 172.26.0.0/16 o 172.23.0.0/16 (comando ip route)
3) Comprueba si puedes hacer ping a 172.26.23.4 (te debería responder)
4) Si todo lo anterior es correcto, prueba a matar el demonio de multicast (killall mcpd) y a volver a lanzarlo (/bin/mcpd)

Nota: es posible que si trasteas con el router (tocar reglas internas, modificar el AiProtection, etc) te quedes sin acceso. En ese caso, reboot. Esto no va integrado en la interfaz del router y por lo tanto pueden ser sobreescritas por la interfaz de gestión y romper configuraciones.