选择 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而不是系统默认网关进行路由。

相关内容