Selecione o gateway usado para determinados comandos no Linux

Selecione o gateway usado para determinados comandos no Linux

Tenho várias interfaces de rede que fornecem conexão à Internet. Posso alterar a interface utilizada para acesso à internet route add default gw ...a qualquer momento.

Porém, é possível selecionar o gateway apenas para um determinado comando? Por exemplo, faça com que um processo use um link de modem GSM, enquanto o sistema usa o link Ethernet para todas as outras solicitações de Internet.

Responder1

Você pode fazer isso com iptablesum usuário diferente. Supondo que o endereço IP da interface que você deseja que o comando use seja 1.2.3.4o nome eth1e o gateway 1.2.3.1.

1) Crie um novo usuário:

adduser user2

2) Marque os pacotes vindos desse usuário:

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

3) Aplique o endereço IP nesses pacotes:

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

4) Roteie pacotes marcados através eth1do gateway de:

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

5) Execute o comando como novo usuário:

sudo -u user2 ping example.com

ping example.comagora seria roteado pelo gateway 1.2.3.1e não pelo gateway padrão do sistema.

informação relacionada