选择用于Linux上某些命令的网关


1

我有多个网络接口提供到互联网的连接。我可以随时更改用于访问互联网的界面route add default gw ...

但是,是否可以仅为特定命令选择网关?例如,一个进程使用GSM调制解调器链路,而系统使用以太网链路进行所有其他互联网请求。

Answers:


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


呃,有点辛苦。不过,这些天我会尝试一下。
dronus 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.