专家详解Netfilter/iptables FAQ

豆豆网   技术应用频道   2008年03月28日    社区交流

内容摘要:netfilter的架构就是在整个网络流程的若干位置放置了一些检测点(HOOK ),而在每个检测点上上登记了一些处理函数进行处理(如包过滤,NAT等,甚至可以是用户自定义的功能)。

  首先,检查你是否在使用2.4.20内核,如果是,请立即应用https://bugzilla.netfilter.org/cgi-bin/bugzilla/showattachment.cgi?attach_id=8这个补丁!2.4.20内核有一个已经确认的bug引起大量伪造的UNREPLIED连接跟踪条目(查看https://bugzilla.netfilter.org/cgi-bin/bugzilla/show_bug.cgi?id=56)

  因此你看/proc/net/ip_conntrack时就会发现UNREPLIED条目有一个非常高的计时器(可能超过5天),你可能会感到非常奇怪,为什么我们要浪费连接跟踪条目在UNREPLIED条目(很明显,它没有连接)上呢?

  答案很简单:UNREPLIED条目是临时条目,如:一旦我们的连接跟踪条目装满时(达到/proc/sys/net/ipv4/ip_conntrack_max定义的数量时),我们将删除旧的UNREPLIED条目。换句话说:用空条目进行替换,我们只保留真实有用的条目。

  18、为什么不能执行iptables –c(--check)?

  首先是我们懒惰:),一旦你启动了有状态的防火墙要执行一个检查选项几乎是不可能的,传统的无状态的防火墙仅依赖当前数据包的头来进行判断,但是使用连接跟踪后(-m state规则),过滤结果的判断依赖于数据包头+有效负载,也包括这个连接里面前面的数据包。

  19、为什么我在PREROUTING链表中不能使用REJECT target?

  REJECT target是为过滤器准备的,过滤表已经有INPUT/OUPUT/FORWARD链表了,REJECT target只能用在这些链表中(以及子链表)。

  Netfilter用户在nat或mangle表中不做包过滤。

  20、在内核升级后(nat表)报'iptables: Invalid argument'

  你只升级了你的内核,没有对命令进行修改(特别是nat表),你经历的可能象下面这样:

  # iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE

来源:51CTO.com    作者:黄永兵    责编:豆豆技术应用

正在加载评论...