网络接口选择

网络接口选择

假设我有多个网络接口,并且我想根据应用程序有选择地使用它们。eth0 是主路由表中具有标准网关的标准接口,eth1 是具有不同网关的另一个接口。

假设我以用户“user_eth1”的身份启动一个应用程序。

我使用了以下一组 iptables/ip 规则。

IP表:

iptables -t mangle -A OUTPUT -m user --uid-owner user_eth1 -j MARK --set-mark 100
iptables -t nat -A POSTROUTING -m user -uid-owner -o eth1 user_eth1 -j SNAT --to-source     <eth_ipaddress>

IP规则:

ip rule add fwmark 100 lookup table100

我构建了“table100”,如下所示(毫无疑问)

ip route show table main | grep -Ev ^default | while read ROUTE; do ip route add table table100 $ROUTE; done
ip route add default via <default_gateway> table table100

根本不起作用。这是怎么回事?

先感谢您!

答案1

这有什么问题?

  1. 您确定“-m 用户”吗?可能是“-m 所有者”?
  2. «-t nat -A POSTROUTING -m user -uid-owner» 最好与 «-m mark --mark» 一起使用 — 您已经分配了标记,记得吗?

好吧,无论如何,这个设置是合法的。你可以用tcpdump它来调试它。

相关内容