Pérdida extraña de paquetes a través de NAT con dos interfaces WAN

Pérdida extraña de paquetes a través de NAT con dos interfaces WAN

Tengo una máquina servidor Linux que también uso como puerta de enlace de red / "enrutador". Tiene tres interfaces de red activas: dos interfaces de red conectadas a Internet a través de diferentes ISP y la tercera que proporciona acceso a Internet a mis máquinas locales a través de NAT. Tengo equilibrio de carga entre los enlaces WAN.

Desde el servidor, se puede acceder a la red perfectamente: todo funciona, el equilibrio de carga funciona y, en general, no se pierden paquetes. Las conexiones entre el servidor y las máquinas locales también funcionan perfectamente. Pero si accedo a Internet/WAN desde una máquina local a través del servidor, siempre veo una pérdida constante de paquetes de ~40%. Esto hace que las conexiones sean muy inestables. Investigando un poco, pude ver que recibo (y pierdo) paquetes que llegan a través de ambas interfaces más o menos por igual, por lo que esnocomo si una de las interfaces estuviera arrastrando todo lo demás al perder todos sus paquetes.

Si desactivo cualquiera de los dos enlaces WAN, esta pérdida de paquetes desaparece instantáneamente. Reaparece instantáneamente si vuelvo a habilitar ambos enlaces WAN.

Que podria causar esto? ¿Alguna sugerencia sobre cómo solucionar este problema sin tener que abandonar uno de los enlaces WAN?

mi iptablestabla de filtros:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination     

mi iptablesmesa nat:

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  10.42.0.0/24        !10.42.0.0/24 

mi iptablesmesa de mangle:

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            mark match ! 0x0
MARK       all  --  0.0.0.0/0            0.0.0.0/0            state NEW MARK set 0x2
MARK       all  --  0.0.0.0/0            0.0.0.0/0            state NEW statistic mode random probability 0.50000000000 MARK set 0x1

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination    

ip route showproducción:

default 
    nexthop via 10.7.0.254  dev eth0 weight 1
    nexthop via 78.62.255.254  dev eth2 weight 1
10.7.0.0/16 dev eth0  proto kernel  scope link  src 10.7.5.102 
10.42.0.0/24 dev eth1  proto kernel  scope link  src 10.42.0.254 
78.62.192.0/18 dev eth2  proto kernel  scope link  src 78.62.239.10 
169.254.0.0/16 dev eth1  scope link  metric 1000 

todo está sin editar tal como está; en este caso no me importa mucho la "privacidad"

Respuesta1

Según las tablas que ha mostrado, no está haciendo nada para asegurarse de que NAT mantenga los flujos saliendo por la misma interfaz en la que comenzaron, lo que significa que aproximadamente la mitad de sus paquetes salientes probablemente se estén traduciendo mal.

Para realizar correctamente el equilibrio de carga NAT, necesita una regla de enrutamiento previo en la tabla mangle que marque aleatoriamente los nuevos flujos con un 1 o un 2, necesita ip rulereglas que enrutan los paquetes marcados con 1 a la interfaz WAN 1 y los paquetes marcados con 2 a la interfaz WAN 2. y necesita reglas SNAT independientes en la iptablestabla NAT, una para cada interfaz WAN.

Para una descripción más detallada, consulte El equilibrio de carga de Iptables de Diego Lima en pocas palabras

información relacionada