Una interfaz de red con 2 puertas de enlace

Una interfaz de red con 2 puertas de enlace

Tengo 2 enrutadores conectados mediante cable ethernet. El enrutador secundario tiene su servidor DHCP deshabilitado y tiene una dirección IP de 192.168.1.2. Ambos enrutadores tienen Internet diferente. Si creo otra puerta de enlace predeterminada con una métrica más baja, puedo usar la segunda red como red principal.

ip route add default via 192.168.1.2 dev eno1 metric 10

Funciona como se esperaba.

Ahora estoy intentando usar ambas redes simultáneamente. ¿Es posible crear un usuario de Linux y enviar todo el tráfico del usuario a través de la puerta de enlace secundaria? Probé los siguientes comandos:

useradd kreator
ip rule add fwmark 42 table 42
ip route add default via 192.168.1.2 dev eno1 table 42 metric 200
iptables -t mangle -A OUTPUT -m owner --uid-owner kreator -j MARK --set-mark 42
iptables -t nat -A POSTROUTING -o eno1 -m mark --mark 42 -j SNAT --to-source 192.168.1.2

Luego corrí sudo -u kreator ping google.comy no registró nada. ¿Qué me estoy perdiendo?

Estoy en Arch Linux y el administrador de red es el demonio NetworkManager.

Respuesta1

Según los comentarios, el enfoque fue sólido:

  1. Indique al sistema operativo que consulte la tabla 42 para conocer las decisiones de enrutamiento en cualquier paquete con un fwmarkvalor de 42:ip rule add fwmark 42 table 42
  2. Agregue la ruta predeterminada alternativa a esa tabla:ip route add default via 192.168.1.2 dev eno1 table 42 metric 200
  3. Marque (en la mangletabla) todos los paquetes salientes (en la OUTPUTcadena) que se originan en un proceso propiedad del usuario kreatorcon 42:iptables -t mangle -A OUTPUT -m owner --uid-owner kreator -j MARK --set-mark 42

En este punto, los paquetes que se originan en el usuario kreatorse marcan y enrutan mediante la ruta predeterminada alternativa en la tabla 42, según se desee. El iptablescomando adicional que ajustaba la POSTROUTINGcadena era erróneo, ya que cambiaba la IP de origen a la del enrutador secundario y probablemente provocaba que el enrutador descartara el paquete.

información relacionada