MANUAL: Mikrotik, el amigo gorrón [IPTV pululante]

Hola!

Introducción​

Os os vengo a traer un manual muy sencillo y divertido, que creo va a ser un bombazo, precisamente por la simpleza del mismo. Y, de paso, para ahorrarnos unos duros, que siempre viene bien. El propósito del post es meramente educativo, no quiero incitar a nadie a cometer nada ilegal y, por descontado, no me responsabilizo de lo que hagáis con ello, así que consultad vuestros contratos de servicio para aseguraos que no cometéis ninguna ilegalidad.

El propósito del manual es muy simple: ver IPTV en un domicilio distinto a donde lo tenemos contratado, SIN TENER NI PAJOTERA IDEA DE MIKROTIK (o casi), partiendo de la siguiente premisa: el setup del operador, no se toca. Es decir, vamos a montar algo que, sin manipular en absoluto el router que nos instala nuestro operador y que funciona flamante con su servicio de IPTV, sea capaz de teletransportar el servicio de tv a otro lugar. La idea mola, ¿verdad? Pues al lío.

Os presento a Paco y Pepe, dos colegas. Paco es abonado al servicio de televisión IPTV del operador dominante en su región y tiene cero conocimiento de qué narices es un Mikrotik (le suena a ruso, pero poco más puede decir). Pepe, es un apasionado de la marca, y algo manitas en la materia, fiel seguidor de este foro y sus manuales. Pepe, lleva tiempo dándole vueltas a una cosa: ¿sería capaz de transportar el servicio de televisión IPTV de Paco, sin causarle a este molestia alguna? Porque claro, Paco ni tiene ni papa del tema, y lo de cambiar su flamante router del operador por un mikrotik... como que no. Pero Pepe, que es muy insistente, lleva tiempo devanándose los sesos pensando, ¿seré capaz de montar un router mikrotik tonto, que sea capaz de, conectado el router de Paco, obtener y transportar dicho servicio? ¿Me podría valer el nuevo tipo de túnel WireGuard para ello? Pues ya os adelanto, que Pepe ha triunfado... pero bien.

Premisas y materiales​

Pepe tiene en su casa una infraestructura de la hostia, montada con Mikrotik, como buen aficionado a la marca. Su flamante router Letón comanda su casa y, por allí tirado, tiene un viejo mAP [RBmAP2nD] al que no sabe qué uso darle. También, ha conseguido hacerse de un desco de la operadora que usa Paco, el cual funciona fantástico en casa de Paco, pero claro, se le hace un poco incómodo irse a ver la tele allí. Pepe, que es algo gorrón pero muy generoso, ha pensado en regalarle el mAP a Paco, previamente configurado para teletransportar dicho servicio. Sin más, pasamos a ver las sencilla configuraciones con las que Pepe ha conseguido ver la TV de Paco, cómodamente desde su casa. Para ello, Pepe va a hacer uso de todo el conocimiento que ha adquirido leyendo este foro, y va a poner en práctica una combinación ganadora: WireGuard + EoIP. Lo que pretende es que un desco conectado a un puerto concreto del router de su casa, se teletransporte a casa de Paco como si estuviera allí mismo conectado. Pero, y aquí viene la miga del asunto, sin tocar para nada el equipamiento de Paco.

Configuración​

Empezaremos con la configuración del router de Pepe. Partiendo de la configuración básica, Pepe sólo ha tenido que hacer un par de cosas para que esto funcione
  • Montar un túnel WireGuard entre el router de su casa y el mAP
  • Montar un EoIP encima de ese túnel, sobre las direcciones /30 que WireGuard para dicho túnel
  • Añadir un nuevo bridge con igmp-snooping y meter en ese bridge el puerto donde va a conectar el desco, más el EoIP anterior.
Sin más, esta sería la configuración adicional de Pepe
Código:
#######################################
########## ROUTER DE PEPE #############
#######################################

############## WIREGUARD ##############
# Creamos una nueva interfaz para este propósito
/interface/wireguard
add listen-port=54321 name=wg-sts-iptv
# Creamos un nuevo peer que representa al router gorrón
# La public key la cogemos de la interfaz de dicho router
# remoto, el router gorrón
/interface/wireguard/peers
add allowed-address=172.17.0.2/32 \
  comment=gorron-iptv interface=wg-sts-iptv \
  public-key="PUBLIC_KEY_PACO"

########### DIRECCIONAMIENTO ##########
# Creamos la dirección /30 de este lado del túnel
/ip/address
add address=172.17.0.1/30 interface=wg-sts-iptv

######### EoIP SOBRE LAS /30 ##########
# Creamos un nuevo túnel EoIP
/interface/eoip
add local-address=172.17.0.1 name=eoip-iptv \
  remote-address=172.17.0.2 tunnel-id=0 mtu=1500

########### NUEVO BRIDGE IPTV ##########
# Creamos el nuevo bridge con igmp-snooping
/interface/bridge
add igmp-snooping=yes name=bridge-iptv
# Metemos los puertos involucrados, desco = ether2
/interface/bridge/port
add bridge=bridge-iptv interface=ether2
add bridge=bridge-iptv interface=eoip-iptv

############## FIREWALL  ##############
# Aceptamos en input la conexión del router remoto
/ip firewall filter
add action=accept chain=input dst-port=54321 \
protocol=udp comment="vpn: allow wireguard gorron" \
place-before=[find comment="defconf: drop all not coming from LAN"]
# Aceptamos también el tráfico del EoIP en input,
# especialmente útil si la comunicación no es bi-direccional
add action=accept chain=input comment="iptv: allow gre for eoip" \
    in-interface=wg-sts-iptv protocol=gre place-before=\
    [find comment="defconf: drop all not coming from LAN"]

Listo su router, Pepe va a preparar el mAP que con todo el cariño le va a regalar a su amigo Paco. En este caso, en lugar de partir de una configuración por defecto, Pepe ha decidido montar un router tonto, que se va a comportar como un switch en casa de Paco, tal que sea enchufar y listo. Es decir, Pepe ha partido, para este equipo, de un reset sin configuración. Ese router, una vez encendido y conectado al router de Paco, llamará a casa de Pepe para enlazar ambos equipos vía WireGuard. Establecido dicho enlace, se levantará un segundo túnel EoIP, capaz de teletransportar el segmento de L2 del router de Paco, tal que el desco remoto en casa de Pepe crea que está efectivamente conectado al router de la operadora en casa de Paco. Y, es resto, es coser y cantar...
Código:
#######################################
########## ROUTER DE PACO #############
#######################################

############## VARIABLES ##############
:local puertoWireguardPepe "54321"
:local publicKeyWireguardPepe "PUBLIC_KEY_PEPE="
:local subredLanPepe "192.168.88.0/24"
:local direccionDDNSPepe "pepe.pericopalotes.com"
:local nombreRouterPaco "gorron"

############## WIREGUARD ##############
# Creamos una nueva interfaz para este propósito
# Obviamos el puerto, no lo vamos a usar
/interface/wireguard
add name=wg-sts-iptv
# Creamos un nuevo peer que representa el router de Pepe
# La public key la cogemos de la interfaz
# wireguard-sts-iptv del router remoto.
# Modificamos el endpoint por la dirección cloud de Pepe
/interface/wireguard/peers
add allowed-address=0.0.0.0/0 endpoint-address=\
  $direccionDDNSPepe endpoint-port=$puertoWireguardPepe \
  interface=wg-sts-iptv \
  public-key=$publicKeyWireguardPepe \
  persistent-keepalive=25s

######### EOIP SOBRE LAS /30 ##########
# Creamos un nuevo túnel EoIP
/interface/eoip
add local-address=172.17.0.2 name=eoip-iptv \
  remote-address=172.17.0.1 tunnel-id=0 mtu=1500

############ NUEVOS BRIDGES ###########
# Creamos el nuevo bridge con igmp-snooping para IPTV,
# además del bridge normal del router que usaremos
# como interfaz de loopback, para administración
/interface/bridge
add admin-mac=[/interface/ethernet/get ether2 mac-address] \
    auto-mac=no name=bridge-lo
add igmp-snooping=yes name=bridge-iptv
# Metemos cada puerto en su sitio, ether1 = router del operador
# ether2 = lo reservamos como puerto de administración
# si queremos aprovechar todos los puertos como switch,
# metermos todos ellos en el bridge iptv +  el túnel EoIP
/interface/bridge/port
add bridge=bridge-lo interface=ether2
add bridge=bridge-iptv interface=ether1
add bridge=bridge-iptv interface=eoip-iptv

########### DIRECCIONAMIENTO ##########
# Direccionamos el bridge loopback y el túnel
/ip/address
add address=192.168.79.1/24 interface=bridge-lo
add address=172.17.0.2/30 interface=wg-sts-iptv

########## DHCP ADMINISTRACION  #######
/ip/pool
add name=pool-lo ranges=192.168.79.2-192.168.79.254
/ip/dhcp-server
add address-pool=pool-lo interface=bridge-lo name=dhcp-lo
/ip/dhcp-server/network
add address=192.168.79.0/24 gateway=192.168.79.1

####### CREAMOS LA INTERFAZ WAN #######
# Nuestra WAN = bridge-iptv, como switch que somos
# Levantaremos un cliente DHCP para obtner IP
# y salida a internet, para poder llamar a casa
# obtendremos una ruta por defecto y un DNS
/ip/dhcp-client
add interface=bridge-iptv

########## DNS SERVER BACKUP ##########
# Le damos  un DNS de backup, por si nos
# falla el que entregue el cliente DHCP
/ip/dns
set servers=1.1.1.1,1.0.0.1

############ RUTA ESTÁTICA ############
# Esto le permitirá a Pepe administrar
# el router gorrón en remoto. Suponemos
# 192.168.88.0/24 segmento pricipal LAN
# de Pepe el cual alcanzamos al otro lado
# del túnelWireGuard, 172.17.0.1
/ip/route
add dst-address=$subredLanPepe gateway=172.17.0.1

############### WIRELESS  #############
# Como no lo usamos, lo desactivamos
/interface/wireless
set [find] disabled=yes

############ HORA Y NOMBRE ############
# Establecemos la franja horaria del equipo
/system/clock
set time-zone-name=Europe/Madrid
# y le damos un nombre
/system/identity
set name=$nombreRouterPaco

Y, con esto y un bizcocho, hemos aprendido una vez más a a sacarle partido a la tecnología que nos ofrecen los equipos Mikrotik. Esto os puede valer para llevaros el servicio a una segunda residencia, de vacaciones, etc. O, como Pepe, para ser un gorrón y ver la TV de Paco.

Los resultados de este setup son espectaculares. El tráfico Multicast gasta 7Mbps, y sube hasta los 10-12Mbps viendo contenido, para el proveedor que he podido probar. El mAP se mantiene por debajo del 30% de CPU... un equipo con 650 MHz y 64MB de RAM. Me parece, sencillamente, brillante.

PS: agradecimientos, a @roolezz por prestarse a probar todas las locuras que se me pasan por la cabeza con estos setups, él fue quien me dio la chispa para saber que esto podía funcionar, haciendo una prueba rápida en su casa, sin ella no me habría aventurado a probarlo a fondo.
También muy especial agradecimiento para J.E.D y R.G.U. por su amabilidad a la hora de prestarme su servicio de IPTV para la puesta en producción de este manual, los cuales han hecho de "amigo Paco" en este asunto. Sois los mejores chicos ;)

Bonus track: comunicación bidireccional

En el hipotético caso de que tengamos confianza más que de sobra con Paco, Pepe puede montar una configuración incluso más estable que la anterior, haciendo la comunicación bidireccional. Esto implica dos cosas: conocer la IP pública de Paco (lo tenemos solucionado con el ddns de mikrotik) y abrir el puerto correspondiente a la interfaz de WireGuard en su router de operadora.
Lo primero, activamos el IP Cloud en el equipo que le regalemos a Paco.
Código:
/ip/cloud
set ddns-enabled=yes

Acto seguido, obtenemos los datos del DDNS y del puerto de WireGuard que tenemos en el router de Paco, que nos harán falta más adelante:
Código:
:put ("ddns: " . [/ip/cloud get dns-name])
:put ("puerto: " . [/interface/wireguard get [find name=wg-sts-iptv] listen-port])

Con estos dos datos, podemos modificar el peer de Paco en Pepe, para que apunte a dicha dirección y puerto. Supongemos que hemos obtenido una dirección DNS tal que xxxyyyzzz.sn.mynetname.net y un puerto 12345. Los cambios en el peer serían los siguientes:
Código:
/interface/wireguard/peers set [find comment=gorron-iptv] \
  endpoint-address=xxxyyyzzz.sn.mynetname.net endpoint-port=12345

Y, como último paso, tenemos que entrar en el router de la operadora y hacer dos cosas:
  • Fijar la IP que el DHCP le otorga a nuestro router gorrón (o configurar una IP + ruta estática en el mikrotik), con un lease estático.
  • Abrir el puerto que obtuvimos, de la interfaz WireGuard de Paco, y redireccionarlo a la IP estática o dinámica reservada que tenga el Mikrotik.

Con estos dos cambios, sería seguro quitar el "keep-alive" del peer de Pepe en Paco, puesto que ambos routers empezarían a llamarse entre sí en caso de pérdida de conexión, y se encontrarían más temprano que tarde. Gracia al compi @huzoaaz por la sugerencia del bonus track de este manual, y por su ofrecimiento a probar todas estas configuraciones ;)

Espero que lo disfrutéis, un saludo!
 
Última edición:
@pokoyo @roolezz J.E.D y R.G.U
Agradecimientos a todos los participantes que han hecho posible este setup.
Esto servirá a mucha gente, ya lo veréis.
Yo casi que me he visto reflejado en la magnífica historia que nos ha contado pokoyo.
Saludos y muchas gracias.
De nada majete, que lo disfrutéis!

Saludos!
 
Buenos días a todos.

Cada día alucino más con este foro. ¿Y Paco y Pepe pueden ver cosas distintas a la vez cada uno en su casa?
 
Buenos días a todos.

Cada día alucino más con este foro. ¿Y Paco y Pepe pueden ver cosas distintas a la vez cada uno en su casa?
Por su puesto, que para eso tenemos el multicast y dos descos independientes.

Saludos!
 
Buenos días, estoy revisando esto y le podría encontrar utilidad. La pregunta es, ¿se podrían conectar dos mk independientes a uno gorrón? Es decir compartir el router tonto para dos gorrones.
 
Buenos días a todos.

Cada día alucino más con este foro. ¿Y Paco y Pepe pueden ver cosas distintas a la vez cada uno en su casa?

Claro… date cuenta que es como si estuvieran en la misma red… y en la misma red, cada desco y dispositivo pueden ver cada uno sus cosas….
 
Buenos días, estoy revisando esto y le podría encontrar utilidad. La pregunta es, ¿se podrían conectar dos mk independientes a uno gorrón? Es decir compartir el router tonto para dos gorrones.
Sí. Donde metes un túnel EoIP, puedes meter 10, simplemente cambiando el ID del túnel. Eso sí, los Pepe’s ha de ser algo más generosos, y gastarse los duros en regalarle a Paco un equipo algo más decente, tipo RB750gr3.

Saludos!
 
Qué maravilla. Habrá que probarlo.

¿Algún Paco voluntario? Tengo un RB750gr3 ocioso, jejeje

(es broma) (bueno, no)
 
Sí. Donde metes un túnel EoIP, puedes meter 10, simplemente cambiando el ID del túnel. Eso sí, los Pepe’s ha de ser algo más generosos, y gastarse los duros en regalarle a Paco un equipo algo más decente, tipo RB750gr3.

Saludos!
Como ves para uno de los gorrones en su casa un RB941-2ND-TC para solo conectarle el descodificador.
 
Y el más difícil todavía ¿Se puede implenetar en casa de Pepe vía wifi o sólo es posible por cable?
 
Y el más difícil todavía ¿Se puede implenetar en casa de Pepe vía wifi o sólo es posible por cable?
Se complica. A la wifi no le gusta andar haciendo de WAN cuando va metida en un bridge, tendrías que tirar de WDS. Pero, la pregunta es, ¿para qué? A menos que le estés birlando el wifi a Paco, y de paso le quieras birlar la tv (pobre Paco!), no tiene sentido ese setup.

Saludos!
 
Creo que me he explicado mal. Dejamos la casa de Paco tal y como se ha explicado. Una vez estamos en casa de Pepe montando el bridge sobre ether2 ¿Se puede montar sobre una wifi para que no haya que conectar el decodificador de Pepe por cable al router?
 
Creo que me he explicado mal. Dejamos la casa de Paco tal y como se ha explicado. Una vez estamos en casa de Pepe montando el bridge sobre ether2 ¿Se puede montar sobre una wifi para que no haya que conectar el decodificador de Pepe por cable al router?
Sí, sin problema. Haces una interfaz virtual wireless, y la metes en ese bridge-iptv. Y conectas el desco vía wifi a esa red.

Saludos!
 
Como habéis abierto una caja de Pandora con este tema me surgen más dudas al aire.

En caso de que Paco en vez de HGU tenga ONT más router Movistar del pleistoceno ¿Sería buena opción cabiarle ese router por un HAPac2 y configurárselo? No habría que configurar teléfono porque lo tiene enganchado a la ONT así que en este caso sería sólo dar de alta la VLAN de Internet y la de la tele ¿No?
 
Como habéis abierto una caja de Pandora con este tema me surgen más dudas al aire.

En caso de que Paco en vez de HGU tenga ONT más router Movistar del pleistoceno ¿Sería buena opción cabiarle ese router por un HAPac2 y configurárselo? No habría que configurar teléfono porque lo tiene enganchado a la ONT así que en este caso sería sólo dar de alta la VLAN de Internet y la de la tele ¿No?
Ese caso ya está cubierto, y sí, se puede hacer, con otros manuales que están en esta web. Pero en ese caso, estarías sustituyendo el router de la operadora, no estarías en la premisa de este post.

Saludos!
 
Cierto que en ese caso me voy de la premisa de este post. Estos cacharros dan tantas posibilidades que me voy por las ramas.

Gracias a todos los que habéis implementado esto, sigo fliplando con vuestra capacidad para exprimir los Mikrotik y con lo que nos permiten hacer.
 
Hola! Acabo de apuntarme al foro para agradeceros el esfuerzo y la enorme cantidad de información útil que tenéis recopilada por aquí.

De paso, tengo también una duda, y es si este tipo de uso del EoIP no dará problemas al tener 2 servidores DHCP en el mismo dominio de broadcast, uno de Paco y otro de Pepe.
 
Arriba