iptables中的MARK在iproute中的使用
时间:2004-12-16 来源:NetDC
考虑种种,决定用iptables来做MARK,然后使用iproute来做策略。
iptables -t mangle -A PREROUTING -i eth1 -p tcp -m tcp --dport 6667 -j MARK --set-mark 1(原先的文档漏了-t mangle)
在/etc/iproute2/rt_tables中添加一个irc的路由表,
echo "200 irc" >> /etc/iproute2/rt_tables
然后,做策略
ip ru add fwmark 1 table irc(将MARK为1的包丢到irc这个路由表中)
ip ro add default *.*.*.* dev eth0 src *.*.*.* table irc(设置irc这个路由表的默认路由)
到这里,基本的已经做完了,
有两个注意点:
1.这些执行完后需要再执行ip ro flush cache 来使路由立即生效;
2.将reverse path filtering关闭,
echo "0" > /proc/sys/net/ipv4/conf/eth0/rp_filter(这里设置的是eth0的接口,因为广电的出口设置在这里了)
这个如果打开,那么因为回来的数据包不会过irc的路由表,就会被系统丢掉(系统找不到这个包出去时的路由!!!)
如果有网友看到我的这篇文章,并参考这个来做一些策略路由的话,我假定你对iptables和iproute都有一定的了解。在我这里,原先NAT已经是正常工作的了,而且两个出口都做了SNAT。