Seleccione la puerta de enlace utilizada para ciertos comandos en Linux

Seleccione la puerta de enlace utilizada para ciertos comandos en Linux

Tengo varias interfaces de red que proporcionan una conexión a Internet. Puedo cambiar la interfaz utilizada para el acceso a Internet route add default gw ...en cualquier momento.

Sin embargo, ¿es posible seleccionar la puerta de enlace solo para un comando determinado? Por ejemplo, haga que un proceso utilice un enlace de módem GSM, mientras que el sistema utiliza el enlace Ethernet para todas las demás solicitudes de Internet.

Respuesta1

Puedes hacerlo con iptablesun usuario diferente. Suponiendo que la dirección IP de la interfaz que desea que use el comando es 1.2.3.4el nombre eth1y la puerta de enlace 1.2.3.1.

1) Crear un nuevo usuario:

adduser user2

2) Marcar paquetes provenientes de ese usuario:

iptables -t mangle -A OUTPUT -m owner --uid-owner user2 -j MARK --set-mark 42

3) Aplicar la dirección IP en esos paquetes:

iptables -t nat -A POSTROUTING -o eth1 -m mark --mark 42 -j SNAT --to-source 1.2.3.4

4) Enrutar los paquetes marcados a través de eth1la puerta de enlace de:

ip rule add fwmark 42 table 42
ip route add default via 1.2.3.1 dev eth1 table 42

5) Ejecute el comando como nuevo usuario:

sudo -u user2 ping example.com

ping example.comahora se enrutará a través de la puerta de enlace, 1.2.3.1no de la puerta de enlace predeterminada del sistema.

información relacionada