LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 697|回复: 3

Iptables 问题

[复制链接]
发表于 2004-6-4 07:39:51 | 显示全部楼层 |阅读模式
看过的几乎所有的书上都说,对注册在每一条链上的nf_hook_ops,
都是按照优先级的高低开始执行注册在链上结构中的hook函数的.当优先级高的规则 ACCEPT 一个数据包时,此包将被下一个hook函数继续判断是否匹配,
直到匹配一个规则 并且 DROP(或NF_QUEUE) 时才结束这个包在这条链中的流程.否则将达到预定义的规则

在 使用iptables 中,使用
iptables -P INPUT DROP
来设定 INPUT 链上的预定义规则为 DROP

这里我的问题是,为什么当预定义规则设为 DROP 时 所有数据包都无法访问呢,相当于断开网络!而且其它的规则定义时,并不象说的那样如果是 ACCEPT 的时候 就会继续再判断,直到 DROP
  1. #!/bin/sh
  2. echo "Starting iptables rules..."
  3. #Refresh all chains
  4. /sbin/iptables -F
  5. [color=red]
  6. /sbin/iptables -P INPUT ACCEPT
  7. /sbin/iptables -P OUTPUT ACCEPT
  8. /sbin/iptables -P FORWARD ACCEPT
  9. [/color]
  10. [color=green]
  11. /sbin/iptables -A INPUT -p tcp --syn --dport http -j ACCEPT
  12. /sbin/iptables -A INPUT -p tcp --syn --dport ssh -j ACCEPT
  13. [/color]
  14. [color=blue]
  15. /sbin/iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j DROP
  16. /sbin/iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j DROP
  17. /sbin/iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j DROP
  18. /sbin/iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j DROP
  19. /sbin/iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j DROP
  20. [/color]
  21. [color=purple]
  22. /sbin/iptables -A INPUT -p tcp --syn -j DROP
  23. [/color]
  24. # END
复制代码

如果这样写的话,我的 http 和 ssh 服务都可以用,按理讲,因为最后一条

/sbin/iptables -A INPUT -p tcp --syn -j DROP

的存在,应该时所有发起的 tcp 联接都应该被拒绝才对呀! 为什么?只要 ACCEPT 了,就不进行下面的检查了???

然而如果把蓝色的部分放在红色和绿色的中间时, http 和 ssh 服务都不可用
而且差不多是网络不通了!

而 当把红色的部分换为:
  1. [color=red]/sbin/iptables -P INPUT DROP
  2. /sbin/iptables -P OUTPUT DROP
  3. /sbin/iptables -P FORWARD DROP
  4. [/color]
复制代码
时 ,无论其它规则如何,网络都是不通的!

请高手指点!
发表于 2004-6-10 15:01:17 | 显示全部楼层
iptables有顺序从前面的向后的一条条的解析..

/sbin/iptables -A INPUT -p tcp --syn -j DROP
这就是你为什么改这条时,会不通的原因...

你想做什么防火墙...
 楼主| 发表于 2004-6-22 19:21:51 | 显示全部楼层

:)谢谢!

不过可能我的问题你没有仔细看过的!
:p
但是现在我知道原因了!
因为当我:
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -P FORWARD DROP
后,后面的所有规则都是加在 INPUT链上的,所以最终表现出为断开网络的迹象,因为所有的 通过 OUTPUT 链的包都被 DROP掉了!
然后就是 iptables中解析每一条规则时,我想可能和我说得情况不一样。上面的问题中表述的现象应该是在Netfilter中实现的情况,但在iptables中应该是每一条都又决定权!
发表于 2004-6-22 21:58:07 | 显示全部楼层
不过可能我的问题你没有仔细看过的!        不好意思。。。没看完。。

后面的所有规则都是加在 INPUT链上的,所以最终表现出为断开网络的迹象,因为所有的 通过 OUTPUT 链的包都被 DROP掉了!    兄弟说的是。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表