免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ok_lin
打印 上一主题 下一主题

[网络管理] iptables match顺序问题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2010-01-20 12:26 |只看该作者
系统启动后 insmod m1 m2 m3
策略使用 m3 m2 m1 的顺序测试

发现既不是按照m1 m2 m3  也不是按照m3 m2 m1

是按照当你输入iptables -vnL查看时打印出来的顺序来匹配的。

那么这个 -vnL 的顺序又是怎么来的呢?值得研究一下
另外,我还没发现过设置策略时和显示时不一样的情况
-vnL 和 iptables-save 的顺序又是否一致呢?

论坛徽章:
0
22 [报告]
发表于 2010-01-20 12:53 |只看该作者
不懂系统编程,弱弱的发表点意见:
是否和下面的这个有关

# cat /proc/net/ip_tables_matches
length
bcount
tcpseq
mport
tcpmss
connmark
udplimit
connlimit
state
recent
mac
mark
iprange
limit
tcp
udp
icmp

论坛徽章:
0
23 [报告]
发表于 2010-01-20 14:23 |只看该作者
原帖由 platinum 于 2010-1-20 12:26 发表

那么这个 -vnL 的顺序又是怎么来的呢?值得研究一下
另外,我还没发现过设置策略时和显示时不一样的情况
-vnL 和 iptables-save 的顺序又是否一致呢?



linux> iptables -t mangle -A HOSTBW -m ttl --ttl-eq 300 -m tos --tos 16  -j ACCEPT
linux> iptables -t mangle -A HOSTBW -m tos --tos 16 -m ttl --ttl-eq 300  -j ACCEPT

以上两条规则-vnL显示一样的:
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           TOS match 0x10 TTL match TTL == 44
      0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           TOS match 0x10 TTL match TTL == 44

我用的是iptables-1.2.9

[ 本帖最后由 ok_lin 于 2010-1-20 14:25 编辑 ]

论坛徽章:
0
24 [报告]
发表于 2010-01-20 14:28 |只看该作者
原帖由 zhoutao0712 于 2010-1-20 12:53 发表
不懂系统编程,弱弱的发表点意见:
是否和下面的这个有关

# cat /proc/net/ip_tables_matches
length
bcount
tcpseq
mport
tcpmss
connmark
udplimit
connlimit
state
recent
mac
mark
ipran ...


感谢这位兄弟,我试了一下,似乎不是按这里的顺序。

论坛徽章:
0
25 [报告]
发表于 2010-01-20 14:30 |只看该作者

  1. # iptables -A FORWARD -m ttl --ttl-eq 30 -m tos --tos 16
  2. # iptables -A FORWARD -m tos --tos 16 -m ttl --ttl-eq 30

  3. # iptables -vnL FORWARD
  4. Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
  5. pkts bytes target     prot opt in     out     source               destination
  6.     0     0            all  --  *      *       0.0.0.0/0            0.0.0.0/0           TTL match TTL == 30 TOS match 0x10
  7.     0     0            all  --  *      *       0.0.0.0/0            0.0.0.0/0           TOS match 0x10 TTL match TTL == 30

  8. # iptables-save -ct filter
  9. # Generated by iptables-save v1.4.0 on Wed Jan 20 14:30:25 2010
  10. *filter
  11. :INPUT ACCEPT [184:16578]
  12. :FORWARD ACCEPT [0:0]
  13. :OUTPUT ACCEPT [161:18688]
  14. [0:0] -A FORWARD -m ttl --ttl-eq 30 -m tos --tos Minimize-Delay
  15. [0:0] -A FORWARD -m tos --tos Minimize-Delay -m ttl --ttl-eq 30
  16. COMMIT
  17. # Completed on Wed Jan 20 14:30:25 2010

  18. # iptables -V
  19. iptables v1.4.0
复制代码

我的没有问题
但 TTL 最大只能 255,我设置 300 时报错,因此改成了 30
可能你的版本太低了

论坛徽章:
0
26 [报告]
发表于 2010-01-20 14:46 |只看该作者
原帖由 platinum 于 2010-1-20 14:30 发表

# iptables -A FORWARD -m ttl --ttl-eq 30 -m tos --tos 16
# iptables -A FORWARD -m tos --tos 16 -m ttl --ttl-eq 30

# iptables -vnL FORWARD
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
...



应该是版本不一样,1.2.9的就是这样的,很郁闷,只有修改Makefile才可以改变位置。

感谢版主及各位的关注,谁要是研究透了请告诉我啊。谢谢!

论坛徽章:
0
27 [报告]
发表于 2010-01-20 14:51 |只看该作者
为什么修改 Makefile 就可以改变位置?

论坛徽章:
0
28 [报告]
发表于 2010-01-20 15:17 |只看该作者
原帖由 platinum 于 2010-1-20 14:51 发表
为什么修改 Makefile 就可以改变位置?


我原来提到过initext.c这个文件,它是iptables的extensions目录下文件不编译成.so时由Makefile生成的,
而文件中ipt_(模块名)_init() 的顺序是以后iptables规则中模块的匹配顺序,只要修改Makefile中变量PF_EXT_SLIB中的模块顺序就可以了。

PF_EXT_SLIB:=ah connlimit connmark ... ...  layer7 LAYER7

具体iptables以后怎么操作的我没去研究。

版主可以编个1.2.9的试试。

论坛徽章:
0
29 [报告]
发表于 2010-01-20 16:12 |只看该作者
呵呵,我就不换成旧的了,还是你换成新的试试吧

论坛徽章:
0
30 [报告]
发表于 2010-01-21 16:23 |只看该作者
我现在的内核是2.4.18,iptables是1.3.0的,现在没有bcount和mport模块,请问白金老大要打哪个补丁才有呢,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP