
Abstracto:
Tengo problemas (supongo que de enrutamiento) al agregar un ISP secundario a mi configuración de red existente: el tráfico entrante Router1
no recibe respuesta, pero el tráfico local y el entrante Router0
funcionan bien.
¿Cómo puedo mantener funcionando bien las piezas que actualmente funcionan y, al mismo tiempo, hacer que el tráfico entrante Router1
funcione?
Elaboración:
He esbozado un diagrama a continuación con lo esencial 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:
LAN0
is192.168.x.0/24
yLAN1
is192.168.y.0/24
. Ambos funcionan bien para el tráfico interno (por ejemplohttpusandorizo). LAN0
siempre ha estado conectado a travésRouter0
yISP0
alInternet
.LAN1
Siempre lo tuveRouter1
, pero ahora está conectado a travésISP1
deInternet
.- Las máquinas que solo están encendidas
LAN0
y tienen una ruta predeterminadaRouter0
funcionan bien para el tráfico entrante y saliente. - Las máquinas que solo están encendidas
LAN1
y tienen una ruta predeterminadaRouter1
funcionan bien para el tráfico entrante y saliente. - El tráfico interno continúa
LAN0
yLAN1
siempre ha funcionado bien. - El tráfico entrante
Router1
llegaWindowsB
correctamente: puedo conectarme a través de RDP desdeWindowsC
. - El tráfico entrante a través
Router1
deLinuxB
llega (segúntcpdump), pero no respondió como muestra unacurl http://e.f.g.h
fachadaLinuxC
con untcpdump activadoLinuxB
muestra:
Muestra sólo paquetes que, según elformato de salida tcpdump- tener unSINCconjunto de banderas:
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 desde WindowsC
a WindowsB
funciona bien, supongo que se trata de 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
Entonces, ¿cómo puedo hacer que la ruta LinuxB
sea así?
- mantenga la ruta predeterminada activada
LinuxB
para192.168.x.1
que el tráfico saliente siga usandoRouter0
/ISP0
- seguir respondiendo solicitudes entrantes provenientes de
LAN0
ahoraLAN0
- seguir respondiendo solicitudes entrantes provenientes de
LAN1
ahoraLAN1
- siga respondiendo solicitudes entrantes a través de
Router0
(a.b.c.d
/192.168.x.1
) vía192.168.x.1
- comience a responder solicitudes entrantes a través de
Router1
(e.f.g.h
/192.168.y.1
) vía192.168.y.1
- ventaja: tener
Router1
conmutación por error o equilibrio de carga conRouter0
Posdata:
ElImagen PNG a continuaciónse genera enUMLenvía mensajes de texto a través de Internet gratisPlantaUMLmotor. Si desea ver el texto UML original, pegue elEnlace de imagen PNGdentro de estoFormulario PlantUML, entonces presione Submit
.
Respuesta1
Tenía un script de shell para hacer algo así hace mucho tiempo pero, lo siento, pude encontrarlo. Así que sólo puedo darles algunas indicaciones sobre las soluciones que implementé en aquel entonces. Estoy escribiendo principalmente de memoria, por lo que faltan algunos ejemplos:
Tenía una tabla de enrutamiento por enlace ascendente (ruta IP... tabla 101, ruta IP... tabla 102). Eso va a /etc/iproute2/rt_tables.
101 isp1 102 isp2
También necesitas configurar esas tablas:
ruta ip agregar valor predeterminado a través de $Gateway1 dev $Interface1 tabla isp1 ruta ip agregar valor predeterminado a través de $Gateway2 dev $Interface2 tabla isp2
#No olvides la tabla predeterminada:
ruta ip agregar valor predeterminado a través de $DefaultGateway dev $DefaultInterface
Habilitar el seguimiento de conexiones de iptables (modprobe nf_conntrack)
- Establezca una regla de iptables para NUEVAS conexiones entrantes para -j MARCAR los paquetes de alguna manera (es decir: 0x201, 0x202)
Establezca una regla de IP que garantice que el tráfico que sale a través de una interfaz utilice la tabla de enrutamiento correcta.
regla ip agregada desde la tabla $Ip1 isp1 regla ip agregada desde la tabla $Ip2 isp2
Establezca una regla IP (regla IP agregar...) 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.
Esos serían los básicos. Iptables + "ruta ip" + "regla ip" y listo.