選擇用於 Linux 上某些指令的網關

選擇用於 Linux 上某些指令的網關

我有多個網路介面提供與網際網路的連線。我可以route add default gw ...隨時更改用於互聯網存取的介面。

但是,是否可以只為某個指令選擇網關?例如,讓一個程序使用 GSM 調變解調器鏈接,而係統使用乙太網路連結來處理所有其他互聯網請求。

答案1

iptables您可以與其他使用者一起使用。假設您希望命令使用的介面的 IP 位址是、1.2.3.4名稱eth1和網關1.2.3.1

1)建立新使用者:

adduser user2

2) 標記來自該使用者的資料包:

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

3) 在這些包上套用 IP 位址:

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

4) 透過 的eth1網關路由標記的封包:

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

5)以新使用者身分執行命令:

sudo -u user2 ping example.com

ping example.com現在將透過網關1.2.3.1而不是系統預設網關進行路由。

相關內容