PBR与iptables

我知道问题被多次回答,但这种情况有点不同。

所以这里是我所拥有的:

  • 所有用户必须在eth0上使用默认网关,除了一个
  • 那一个只能在eth1上使用网关,在任何情况下都不能使用eth0

另外这个东西很容易实现,但一起…设置它主要工作:1002用户通过eth1去现在,如果没有可用的地方。 但是,一些主机仍然通过eth0路由。 我不知道为什么。

这是我的设置:

user @ localhost:〜$ ip规则

0: from all lookup local 1000: from all fwmark 0x5 lookup 5 2000: from all fwmark 0x5 lookup 6 32766: from all lookup main 32767: from all lookup default` 

 user@localhost:~$ ip route list table 5 0.0.0.0/1 via 10.10.0.185 dev eth1 

 user@localhost:~$ ip route list table 6 blackhole 0.0.0.0/1 

 user@localhost:~$sudo iptables -S -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT 

 user@localhost:~$ sudo iptables -t nat -S -P PREROUTING ACCEPT -P INPUT ACCEPT -P OUTPUT ACCEPT -P POSTROUTING ACCEPT -A POSTROUTING -o eth1 -j MASQUERADE 

 user@localhost:~$ sudo iptables -t mangle -S -P PREROUTING ACCEPT -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -P POSTROUTING ACCEPT -A OUTPUT -m owner --uid-owner 1002 -j MARK --set-xmark 0x5/0xffffffff 

您指定了0.0.0.0/1的路由。 该子网由0.0.0.0至127.255.255.255(含)组成。 目前还不完全清楚,为什么你只想路由一半可能的IP地址。 我怀疑你的意思是所有的路线(例如0.0.0.0/0 )。