Conexión de la máquina Linux al enrutador / ISP secundario: ¿cómo configurar el enrutamiento correctamente?

8

Resumen:

Tengo (presumo enrutamiento) problemas al agregar un ISP secundario a mi configuración de red existente: el tráfico entrante Router1no se responde, pero el tráfico local y entrante Router0funciona bien.

¿Cómo puedo mantener las piezas que actualmente funcionan bien, mientras hago el tráfico entrante a través del Router1trabajo?

Elaboración:

He esbozado un diagrama a continuación con los elementos básicos esenciales de la situación (en la práctica, hay más dispositivos en cada LAN, pero no importan).

Esta es la situación:

  • Tengo dos redes internas: LAN0es 192.168.x.0/24y LAN1es 192.168.y.0/24. Ambos funcionan bien para el tráfico interno (por ejemplo, http usando cURL ).
  • LAN0siempre ha estado conectado a través de Router0y ISP0al Internet.
  • LAN1siempre tuvo Router1, pero ahora está conectado a través ISP1de Internet.
  • Las máquinas que solo funcionan LAN0y tienen una ruta predeterminada a través del Router0trabajo funcionan bien para el tráfico saliente y entrante.
  • Las máquinas que solo funcionan LAN1y tienen una ruta predeterminada a través del Router1trabajo funcionan bien para el tráfico saliente y entrante.
  • El tráfico interno LAN0y LAN1siempre ha funcionado bien.
  • El tráfico entrante a través Router1de WindowsBllega correctamente: puedo conectarme a él a través de RDP desde WindowsC.
  • El tráfico entrante a través Router1de LinuxBllega (según tcpdump ), pero no se responde como un curl http://e.f.g.hfront LinuxCshow con un tcpdump en los LinuxB shows:

Solo muestra los paquetes que, de acuerdo con el formato de salida tcpdump , tienen establecido un indicador SYN :

LinuxB:/tmp/LinuxB.eth1.80 # tcpdump -i eth1 'port 80'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
13:35:19.489779 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047182 ecr 0,sackOK,eol], length 0
13:35:19.788841 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047478 ecr 0,sackOK,eol], length 0
13:35:19.888835 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047578 ecr 0,sackOK,eol], length 0
13:35:19.989412 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047678 ecr 0,sackOK,eol], length 0
13:35:20.089685 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047778 ecr 0,sackOK,eol], length 0
13:35:20.190836 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047877 ecr 0,sackOK,eol], length 0
13:35:20.392123 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287048072 ecr 0,sackOK,eol], length 0
13:35:20.693692 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:21.197162 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:22.204134 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:24.115961 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:27.852374 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:31.967049 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0

Esta es la LinuxBtabla de ruta:

LinuxB:/tmp/LinuxB.eth1.80 # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.x.1     0.0.0.0         UG    0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
link-local      *               255.255.0.0     U     0      0        0 eth0
192.168.x.0     *               255.255.255.0   U     0      0        0 eth0
192.168.x.0     *               255.255.255.0   U     0      0        0 eth1

Dado que la conexión a través de RDP de WindowsCque WindowsBlas obras excelentes, reanudo esto es de hecho un problema de enrutamiento. Esta es la WindowsBtabla de ruta:

C:\temp>route print
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 0c 29 35 77 e1 ...... AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler Miniport
0x3 ...00 0c 29 35 77 eb ...... VMware Accelerated AMD PCNet Adapter - Packet Scheduler Miniport
===========================================================================
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.x.1     192.168.x.4      10
          0.0.0.0          0.0.0.0      192.168.y.1     192.168.y.4       5
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
      192.168.x.0    255.255.255.0      192.168.x.4     192.168.x.4      10
      192.168.x.4  255.255.255.255        127.0.0.1       127.0.0.1      10
    192.168.x.255  255.255.255.255      192.168.x.4     192.168.x.4      10
      192.168.y.0    255.255.255.0      192.168.y.4     192.168.y.4      10
      192.168.y.4  255.255.255.255        127.0.0.1       127.0.0.1      10
    192.168.y.255  255.255.255.255      192.168.y.4     192.168.y.4      10
        224.0.0.0        240.0.0.0      192.168.x.4     192.168.x.4      10
        224.0.0.0        240.0.0.0      192.168.y.4     192.168.y.4      10
  255.255.255.255  255.255.255.255      192.168.x.4     192.168.x.4       1
  255.255.255.255  255.255.255.255      192.168.y.4     192.168.y.4       1
Default Gateway:       192.168.y.1
===========================================================================
Persistent Routes:
  Network Address          Netmask  Gateway Address  Metric
          0.0.0.0          0.0.0.0      192.168.y.1       5
          0.0.0.0          0.0.0.0      192.168.x.1      10

Entonces, ¿cómo puedo hacer que la ruta LinuxBsea ​​así?

  • mantenga la ruta predeterminada activada LinuxBpara 192.168.x.1que el tráfico saliente siga usando Router0/ISP0
  • siguen respondiendo a las peticiones de entrada procedente de LAN0sobreLAN0
  • siguen respondiendo a las peticiones de entrada procedente de LAN1sobreLAN1
  • siga respondiendo solicitudes entrantes a través de Router0( a.b.c.d/ 192.168.x.1) a través de192.168.x.1
  • comenzar a responder solicitudes entrantes a través de Router1( e.f.g.h/ 192.168.y.1) a través de192.168.y.1
  • bonificación: tener Router1conmutación por error o equilibrio de carga conRouter0

Posdata:

La imagen PNG a continuación se genera en texto UML a través del motor en línea gratuito PlantUML . Si desea ver el texto UML original, pegue el enlace de la imagen PNG en este formulario PlantUML , luego presione Submit.

ingrese la descripción de la imagen aquí

Jeroen Wiert Pluimers
fuente
Acabo de encontrar una respuesta interesante en unix.stackexchange.com/a/23345/69111 que estoy investigando para ver si se aplica a mi caso y cómo implementarlo usando yast.
Jeroen Wiert Pluimers
1
Yastparece estar fuera de enrutamiento complejo y routeparece estar en desuso a favor de ip. Ver opensuse.14.x6.nabble.com/yast2-advanced-routing-td3083578.html y suse.com/documentation/sles11/book_sle_admin/data/…
Jeroen Wiert Pluimers
1
Su solución vinculada en unix.stackexchange va en la dirección correcta y resolvería el problema de Linux: el nodo de Linux tiene dos tablas de enrutamiento separadas y usa la tabla apropiada según la interfaz en la que se inició la conexión. No conozco ninguna solución para Windows. A menos que haya una necesidad real de dos subredes, me desharía de una y usaría un enrutador para ambos ISP. Puede comprar enrutadores que puedan manejar dos WAN correctamente, o puede usar otro sistema Linux para hacerlo, lo que simplificaría el enrutamiento en los sistemas detrás de él.
David Mackintosh
@DavidMackintosh en el futuro lo haré. Esto es temporal: la fibra es en realidad DSL y se moverá a una dirección de fibra diferente. La máquina es DNS y MX, por lo que quiero que sea accesible desde dos ISP para que tenga continuidad, ya que no estoy seguro de si DSL se cerrará antes o después de que la fibra se active.
Jeroen Wiert Pluimers

Respuestas:

1

Tenía un script de shell para hacer algo así hace mucho, mucho tiempo, pero, lo siento, pude encontrarlo. Por lo tanto, solo puedo darle consejos sobre las soluciones que implementé en ese momento. Estoy escribiendo principalmente de memoria, por lo que faltan algunos ejemplos:

  1. Tenía una tabla de enrutamiento por enlace ascendente (ruta ip ... tabla 101, ruta ip ... tabla 102). Eso va en / etc / iproute2 / rt_tables.

    101 isp1 102 isp2

    Necesita configurar esas tablas también:

    ruta IP agregar valor predeterminado a través de $ Gateway1 dev $ interfaz1 tabla isp1 ruta IP agregar valor predeterminado a través de $ Gateway2 dev $ interfaz2 tabla isp2

    # No olvides la tabla predeterminada:

    ruta IP agregar valor predeterminado a través de $ DefaultGateway dev $ DefaultInterface

  2. Habilitar el seguimiento de conexión de iptables (modprobe nf_conntrack)

  3. Establezca una regla de iptables para NUEVAS conexiones entrantes para -j MARCAR los paquetes de alguna manera (es decir: 0x201, 0x202)
  4. Establezca una regla de IP que garantice que el tráfico que sale a través de una interfaz utiliza la tabla de enrutamiento correcta

    regla IP agregar desde $ Ip1 tabla isp1 ip regla agregar desde $ Ip2 tabla isp2

  5. Establezca una regla ip (ip rule add ...) que indique que "los paquetes marcados 0x201 buscarán la tabla de enrutamiento 201", una regla para cada enlace ascendente.

Con todo en su lugar, debería poder recibir e iniciar conexiones con cualquier enlace ascendente wan e incluso equilibrar las conexiones salientes.

Eso sería lo básico. Iptables + "ruta ip" + "regla ip" y listo.

marc.fargas
fuente