您通过eth1或eth0路由数据包.表格mangle应该解决这个问题.
为此,我必须标记数据包并设置处理它的规则.首先,添加一条规则,使内核路由通过表标记为2的数据包
ip rule add fwmark 2 table 3
假设网关为10.0.0.1,添加通过不同接口重定向流量的路由:
ip route add default via 10.0.0.1 table 3
刷新路由缓存.
ip route flush cache
现在,设置用于标记指定数据包的防火墙规则:
iptables -t mangle -A OUTPUT -p tcp --dport 465 -j MARK --set-mark 2
最后,放松反向路径源验证.有人建议你把它设置为0,但根据https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt,2似乎是更好的选择.如果你跳过这个,你将收到数据包(这可以使用tcpdump -i tap0 -n确认),但数据包不被接受.更改设置以使数据包被接受的命令:
sysctl -w net.ipv4.conf.tap0.rp_filter=2
参考:http://serverfault.com/questions/345111/iptables-target-to-route-packet-to-specific-interface