
我有多個網路介面提供與網際網路的連線。我可以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
而不是系統預設網關進行路由。