我有多个网络接口提供互联网连接。我可以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
而不是系统默认网关进行路由。