Tengo un escenario bastante simple. Lamentablemente no encontré ninguna respuesta que coincida con este problema. Tengo dos enrutadores Linux (= puertas de enlace) para diferentes WAN (192.168.0.70 y 192.168.0.80). Ambos reenvían el puerto 50000 a un servidor Linux 192.168.0.60. El servidor tiene sólo una interfaz con la puerta de enlace predeterminada 192.168.0.70. Sin configuración adicional tienes este comportamiento:
solicitud entrante sobre 192.168.0.70 -> respuesta funcionando (debido a la puerta de enlace predeterminada)
solicitud entrante sobre 192.168.0.80 -> no funciona porque la respuesta toma 192.168.0.70
¿Cómo puedo gestionar que las solicitudes a través de 192.168.0.80 se envíen de vuelta a través de 192.168.0.80?
Respuesta1
Tendremos que marcar NUEVAS conexiones con un marcador, luego distinguir los paquetes salientes según el marcador y usar cualquiera de las dos tablas de enrutamiento para enrutarlos a la puerta de enlace adecuada. Es posible que tengas que cargar el módulo CONNTRACK,
modprobe ip_conntrack
Llamemos a MAC70 la dirección MAC de la puerta de enlace 192.168.0.70 y a MAC80 la dirección MAC de 192.168.0.80. Entonces
iptables -A INPUT -m state --state NEW -m mac --mac-source MAC70 -p tcp --dport 50000 -j CONNMARK --set-mark 1
iptables -A INPUT -m state --state NEW -m mac --mac-source MAC80 -p tcp --dport 50000 -j CONNMARK --set-mark 2
Estas dos reglas marcan las nuevas conexiones entrantes (para el protocolo TCP, modifíquelas si es necesario) con dos marcadores simples. Los marcadores son para todas las conexiones.es decirtodos los paquetes siguientes del tipo ESTABLECIDO, RELACIONADO pertenecientes a este paquete inicial tendrán la misma marca.
La distinción sólo se puede hacer en función de la dirección MAC de la puerta de enlace, porque la dirección IP de origen de cada paquete es la del cliente que inicia la conexión.noel de la puerta de entrada. Por lo tanto, esto sólo se aplica a las conexiones Ethernet, porque las tramas wifi no llevan direcciones MAC.
Ahora
ip rule add fwmark 1 table router70
ip rule add fwmark 2 table router80
Estos dos comandos especifican qué tabla de enrutamiento (de dos) usar, dependiendo de la marca de conexión/paquete.
Ahora configuramos dos tablas de enrutamiento:
echo 200 router70 >> /etc/iproute2/rt_tables
echo 201 router80 >> /etc/iproute2/rt_tables
ip route add 192.168.0.0/24 dev eth0 table router70
ip route add 192.168.0.0/24 dev eth0 table router80
ip route add default via 192.168.0.70 table router70
ip route add default via 192.168.0.80 table router80
Esto supone que su NIC Ethernet se llama eth0; de lo contrario, cámbiela en consecuencia. El enrutamiento para todos los demás puertos y/o protocolos sigue siendo el que ya tiene, cualquiera que sea.
Estás listo.