Tengo 2 tarjetas de red con ips públicas. Estoy ejecutando 2 servicios. Entonces, ¿cómo direcciono las conexiones?
Por ahora solo funciona una IP de interfaz, aunque se puede hacer ping a ambas desde Internet.
Mi tabla de enrutamiento es como este cajero automático:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.31.128.1 0.0.0.0 UG 0 0 0 eth1
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.31.128.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
172.31.129.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Entonces, ¿qué le agrego para que funcione?
Por ahora, eth1 funciona sin problemas.
Respuesta1
Supongo que Linux por los nombres de las interfaces y la etiqueta "iproute2".
Esto no funciona, porque simplemente especificar una ruta predeterminada significará que todo el tráfico saliente pasará a través de esa interfaz, ¡incluso las respuestas a las solicitudes que provienen de la otra interfaz!
En su caso, está diciendo que tiene IP públicas, pero las dos interfaces conectadas directamente tienen direcciones IP privadas, por lo que supongo que eso significa que tiene NAT activada. Siempre que tenga NAT, no puede usar este tipo de enrutamiento triangular, donde los paquetes entrantes y salientes toman rutas diferentes, porque los paquetes han sido cambiados en el camino hacia la entrada por el cuadro NAT y deben cambiarse de la misma manera. a la salida. Su cliente solicitante termina recibiendo paquetes de una dirección IP que no espera y no reconoce la respuesta.
Lo que debe hacer es decirle al sistema operativo que cualquier paquete con direcciones IP que se originen en su interfaz en 172.31.128.0/24 hacia Internet debe llegar a la puerta de enlace en 172.31.128.1 y, correspondientemente, a la subred 172.31.129.0/24. .
Eso se puede lograr así:
ip route add 172.31.129.0/24 dev eth0 src 172.31.129.XXX table T1
ip route add default via 172.31.129.1 table T1
ip route add 172.31.128.0/24 dev eth1 src 172.31.128.XXX table T2
ip route add default via 172.31.128.1 table T2
ip rule add from 172.31.129.XXX table T1
ip rule add from 172.31.128.XXX table T2
Deberá reemplazar XXX con la dirección IP de su servidor en esas subredes locales.
Eso debería ayudarte a empezar. Encontrarás más sobre este tema ensección 4.2 del CÓMO de control de tráfico y enrutamiento avanzado de Linux.