Configurar una ruta de multidifusión a través de un salto intermedio

Configurar una ruta de multidifusión a través de un salto intermedio

Tengo un host con dos contenedores Docker (con NET_ADMINcapacidad):

  • backendcon una interfaz eth0( 172.16.7.3)
  • openvpn-servercon interfaces eth0( 172.16.7.2) y tun0( 10.8.0.1), ejecutando un servidor OpenVPN (modo tun)

Hay un cliente OpenVPN en otra máquina openvpn-clientcon interfaz tun0( 10.8.0.2). La VPN está funcionando.

Configuración de ruta adicional:

  • backendtiene rutas 10.8.0.0/24 via 172.16.7.2y 224.0.0.0/4 via eth0.
  • openvpn-servertiene rutas 10.8.0.0/24 dev tun0y 224.0.0.0/4 dev tun0.

backendpuede hacer ping con éxito openvpn-client(enrutado a través de openvpn-server): ping 10.8.0.2funciona de maravilla.

Observaciones:

ping -t3 239.1.2.3Cuando ejecuto openvpn-server, pasan por el túnel VPN y puedo ver los paquetes ICMP que llegan openvpn-client(con tcpdump -i tun0 net 224.0.0.0/4on openvpn-client).

Además, cuando ejecuto ping -t3 239.1.2.3on backend, salen a través de ese host eth0y entran en openvpn-serveron eth0. Puedo verlos en openvpn-serveruso tcpdump -i eth0 net 224.0.0.0/4.

Problema:

Me gustaría poder seguir ejecutando ping -t3 239.1.2.3y backendque los pings se reenvíen a openvpn-client, como si 10.8.0.2me hubieran hecho ping. (El objetivo final es realizar multidifusión de paquetes UDP a backendtodos los clientes VPN).

Mi intento:

smcroute -d -n -j eth0 239.1.2.3 -a eth0 172.16.7.3 239.1.2.3 tun0

Pensé que esto configuraría la ruta de multidifusión, pero en realidad no hace nada. No puedo ver los paquetes ICMP salientes en openvpn-server's tun0. -- ¿Qué ocurre?


También intenté configurar pimden dos pares cualesquiera de los tres hosts, y también en los tres. Como resultado, pude hacer un iperfpunto de referencia (como se sugiereaquí) entre backendy openvpn-server, y también entre openvpn-servery openvpn-client, pero no entre backendy openvpn-client. Parece que el reenvío/enrutamiento a través del salto en el medio de alguna manera no funciona. (Había configurado el TTL en 5, por lo que ese no debería ser el problema).

Me complace proporcionar más detalles si es necesario (como ip route listel resultado), pero no quería saturar la pregunta innecesariamente.

Respuesta1

El problema fue que no me aseguré de que openvpn-clientse uniera al grupo de multidifusión, por lo que el enrutador en el medio ( openvpn-server) no sabía que debía enviar tráfico de multidifusión allí.

La siguiente configuración es suficiente:

  • En backend, configure la ruta 224.0.0.0/4 via 172.16.7.2; esto garantiza que el tráfico para el rango de IP de multidifusión se envíe openvpn-server(es posible que desee especificar un rango más estrecho)
  • Instalar y pimdcomenzaropenvpn-server
  • Asegúrese de que openvpn-clientanuncie que quiere unirse al grupo de multidifusión.scmroutePara ello, se necesita un demonio IGMP como el . Esto funciona en sólo dos pasos:

    1. smcroute -d-- iniciar el demonio
    2. smcroute -j tun0 239.1.2.3-- para unirse al grupo

    Tenga en cuenta que no es posible ejecutar ambos en un solo comando ( smcroute -d -j tun0 ...).

De esta manera, todo funciona como se esperaba.

Nota:Si inicia los demonios pimdo smcrouteantes de que OpenVPN se haya configurado tun0, las cosas no funcionarán. Es mejor iniciarlos usando route-upel gancho de OpenVPN.

información relacionada