免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1526 | 回复: 0
打印 上一主题 下一主题

iptables设置mark后snat的一个诡异现象 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-17 18:07 |只看该作者 |倒序浏览
先简单说说需求。两个wan口,n个lan口,根据不同的协议进行不同的转发。
我用的是clearos和layer7-user-space。
对每个数据包打标记8。如果标记8则转发到wan1,否则转发到wan2。
之后设置snat,如果标记8,snat的源地址改为wan1的地址。否则同理设置为wan2的。
感觉这样设置没问题了。但是出现了下面的情况。

上面的policy ACCEPT接受0个包,为什么下面的规则还有处理的数据包?

下面附上我的设置。  我的layer7给QQ协议打标记8,经测试,这步肯定没问题。
我的环境是用虚拟机搭建的。wan1和wan2其实都是局域网内分配的,网管是192.168.72.254
我执行了下面的脚本

#! /bin/sh
ip route add table 8 via 192.168.72.254 dev eth1 #这个是wan2,对应的IP是192.168.72.106
ip route add table 10 via 192.168.72.254 dev eth0 #这个是wan1,对应的IP是192.168.72.103
iptables -F
iptables -t mangle -A PREROUTING -s 192.168.164.0/24 -j NFQUEUE
iptables -t mangle -A PREROUTING -d 192.168.164.0/24 -j NFQUEUE #这两步是为了layer在用户态可以执行,这步设置没问题

iptables -t nat -A POSTROUTING -m mark ! --mark 8 -j SNAT --to-source 192.168.72.103
iptables -t nat -A POSTROUTING -m mark --mark 8 -j SNAT --to-source 192.168.72.106

跟踪各个规则,发现在POSTROUTING的mangle点的hook函数中,还可以检测到被标记的数据包。
到下一个hook函数,也就是nat表中的函数,就检测不到了。
出现了上面图片的结果。
这什么情况啊?完全没头绪
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP