网络环境 1、一台服务器中有两个网络出口,出口1为电信;出口2为联通;出口3位移动,三个网络出口通过p55p1出网只是vlan不同。默认网关在移动 2、内网出口为p55p2出网 网络需求 内网的所有80流量和443流量全部走联通口,其中内网源地址中的1.1.1.1用户80流量走电信 网络top 需要指定一个策略路由表 web 和 nw 其中web走80和443流量,nw走1.1.1.1的80流量 操作命令(linux系统) ip route re 0/0 via 移动网关 ---->指定默认路由在移动 在策略路由表文件中添加路由表 echo "230 web " >> /etc/iproute2/rt_table echo "240 nw " >> /etc/iproute2/rt_table 指定策略路由表的默认路由 ip route re 0/0 via 联通网关 table web ip route re 0/0 via 电信网关 table nw


针对所有80和443流量做标签1 iptables -t mangle -A PREROUTING -i p55p2 -p tcp -m tcp --dport 80 -j MARK --set-xmark 0x1 针对源地址1.1.1.1的流量做标签2 iptables -t mangle -A PREROUTING -i p55p2 -s 1.1.1.1 -p tcp -m tcp --dport 80 -j MARK --set-xmark 0x2 +++++重点,需要将第二个规则放在第一个规则上面 并且第二个规则需要设定除了1.1.1.1源地址意外的所有地址,所以应如下: iptables -t mangle -A PREROUTING -i p55p2 -s 1.1.1.1 -p tcp -m tcp --dport 80 -j MARK --set-xmark 0x2 iptables -t mangle -A PREROUTING !-s 1.1.1.1 -i p55p2 -p tcp -m tcp --dport 80 -j MARK --set-xmark 0x1 理论可以按照第一个方法写 本人实验没成功。不知道哪里问题


设置策略路由 ip rule add from all fwmark 0x1 table web ip rule add from all fwmark 0x2 table nw

总结 本文章主要解决问题是mangle表规则如果写入不清晰会出现的情况。