8 votos

¿Enganchar la máquina Linux con router secundario/ISP: Cómo configurar enrutamiento correctamente?

Resumen:

Tengo (supongo que de enrutamiento) problemas al agregar una secundaria ISP a mi configuración de red existente: el tráfico entrante a través de la Router1 no respondió, pero el tráfico local y entrante a través de la Router0 está trabajando bien.

¿Cómo puedo evitar que las piezas que actualmente funcionan bien de trabajo, mientras que la toma de tráfico entrante a través de la Router1 trabajo?

Elaboración:

He esbozado un diagrama de abajo con lo esencial de la situación (en la práctica hay más dispositivos en cada LAN, pero no importa).

Esta es la situación:

  • Tengo dos redes internas: LAN0 es 192.168.x.0/24 y LAN1 es 192.168.y.0/24. Ambos funcionan bien para el tráfico interno (por ejemplo, http usando cURL).
  • LAN0 ha sido siempre conectado a través de la Router0 y ISP0 a la Internet.
  • LAN1 siempre había Router1, pero ahora está conectado a través de ISP1 a la Internet.
  • Las máquinas sólo en LAN0 y tener una ruta por defecto a través de la Router0 funcionan bien para las llamadas salientes y entrantes de tráfico.
  • Las máquinas sólo en LAN1 y tener una ruta por defecto a través de la Router1 funcionan bien para las llamadas salientes y entrantes de tráfico.
  • El tráfico interno en LAN0 y LAN1 siempre ha funcionado bien.
  • El tráfico entrante a través de la Router1 para WindowsB llega correctamente: me puedo conectar a ella a través de RDP de WindowsC.
  • El tráfico entrante a través de la Router1 para LinuxB llega (de acuerdo a tcpdump), pero no respondió como un curl http://e.f.g.h h LinuxC muestra con un tcpdump en LinuxB muestra:

Muestra sólo los paquetes que - de acuerdo con el formato de salida de tcpdump - tienen un SYN flag set:

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 LinuxB tabla de rutas:

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 WindowsC a WindowsB funciona bien, me reanudar este es de hecho un problema de enrutamiento. Esta es la WindowsB tabla de rutas:

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

Así que ¿cómo puedo conseguir la hoja de ruta en LinuxB a ser como este:

  • mantener la ruta predeterminada en LinuxB a 192.168.x.1 para el tráfico de salida se mantiene el uso de Router0/ISP0
  • mantener responder a las solicitudes entrantes procedentes de LAN0 a LAN0
  • mantener responder a las solicitudes entrantes procedentes de LAN1 a LAN1
  • mantener responder a las solicitudes entrantes a través de la Router0 (a.b.c.d/192.168.x.1) a través de la 192.168.x.1
  • comenzar a responder a las solicitudes entrantes a través de la Router1 (e.f.g.h/192.168.y.1) a través de la 192.168.y.1
  • bonus: tiene Router1 de fallos o de equilibrio de carga con Router0

Posdata:

El PNG de la imagen de abajo se genera en UML de texto a través de la línea gratis de PlantUML motor. Si quieres ver la original UML texto, pegar la imagen PNG enlace en este PlantUML formulario, a continuación, pulse Submit.

enter image description here

1voto

marc.fargas Puntos 11

Tuve un script de shell para hacer algo así un largo largo tiempo atrás, pero, lo siento, la pueda encontrar. Así que sólo puedo dar los punteros a las soluciones que he implementado en aquel entonces. Estoy escribiendo sobre todo de memoria, por lo que algunos de los ejemplos son los que faltan:

  1. Yo tenía uno de la tabla de enrutamiento por la subida (ip route ... tabla 101, ruta ip ... tabla 102). Que va en /etc/iproute2/rt_tables.

    101 isp1 102 isp2

    Usted necesita para la instalación de estas mesas también:

    ip route add default via $Gateway1 dev $Interfaz1 tabla isp1 ip route add default via $Gateway2 dev $Interfaz2 tabla isp2

    #No olvides la tabla predeterminada:

    ip route add default via $DefaultGateway dev $DefaultInterface

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

  3. Establecer una regla iptables para conexiones entrantes a -j MARCA los paquetes de alguna manera (es decir: 0x201, 0x202)
  4. Establecer una ip regla que asegurarse de que el tráfico va a salir por un interfaz utiliza la derecha de la tabla de enrutamiento

    ip regla añadir desde $Ip1 tabla isp1 ip regla añadir desde $Ip2 tabla isp2

  5. Establecer una ip de la regla (ip regla agregar ...) afirmando que "paquetes marcados 0x201 deberá de búsqueda de la tabla de enrutamiento 201", una regla por cada enlace ascendente.

Con todo en su lugar, usted debe ser capaz de recibir e iniciar conexiones con cualquier wan de enlace ascendente y el equilibrio conexiones salientes.

Estos serían los conceptos básicos. Iptables + "ip route" + "ip regla" y ya está bueno para ir.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: