假如您正在经历日志满天飞的苦恼,这里有两个额外的规则能够使用,当然,这要看是因为什么引起的了。我们这里的第一条规则会阻塞目的端口是135到139的广播包。大部分Microsoft使用者会用到NetBIOS 或SMB,而他们就使用这些广播包。这条规则能够阻塞任何位于外网的那些Microsoft Network产生的广播包,我们的日志也就能够简洁一些了。第二条规则也是解决日志问题,但是问题的产生者变了,这回是外网的DHCP查询。假如您的外网是由非交换的以太网组成的,在那里客户机能够通过DHCP 得到IP地址,也就是说,假如外网里会有很多DHCP查询广播包,那就启用这条规则吧。
 | 注意,我把最后这两条规则也注释掉了,因为有些人可能想看看相关的记录。假如您正经历“合法日志过多”的痛苦,就试试丢弃那些包吧。其实,在INPUT链中,就在这两条有关日志的规则之前,更有更多这种类型的规则。 |
7.2.6.5. 处理ICMP的链
现在,我们该决定能够接受哪些ICMP类型了。在INPUT链中,假如ICMP包是从eth0 (即本例的Internet接口)进入的,我们就要把他重定向到icmp_packets 链(前面提到过),以检查是否是能够接受的类型。现在,我只接受三种ICMP包:ICMP Echo requests,TTL equals 0 during transit和TTL equals 0 during reassembly。默认不接受其他任何ICMP类型的原因是,几乎任何其他类型的ICMP包都是RELATED状态的,也就是说他们都会被处理 RELATED状态的规则放行。
 | 假如一个ICMP包是用来回应“已存在的包或流”的,那他就是和那些流相关的,也就是说,他的状态是RELATED。更多的信息在章节状态机制里。 |
现在来解释一下我为什么只接受上面提到的三种ICMP包。Echo Request用来请求echo reply,这个操作主要被用来ping其他的机子,以确定那些机子是否可用。假如没有这一条规则,其他机子将不能通过ping来确定我们是否可用。注意,有些人倾向于删掉此规则,只是因为他们不想被Internet看到。删掉这个规则将会使任何来自Internet的、对我们防火墙的ping都无效,因为防火墙对他们完全没有回应。
允许超时(Time Exceeded,如TTL equals 0 during transit传输期间生存时间为0和TTL equals 0 during reassembly在数据报组装期间生存时间为0)信息进入,我们就能够追踪从本地到某台主机的路径,或在包的TTL为0时,我们能得到回应信息。比如,在我们追踪到某台主机的路径时,会以 TTL = 1的包开始。当他得到第一个路由时,TTL减为0,我们也会得到第一个路由返回的超时信息。然后是TTL = 2的包,我们就会得到第二个路由器返回的超时信息。如此,直到得到我们的目的主机返回的信息。这样,我们就能够从路径上的每一台主机得到一个回应,从而我们能够看到路径上的每一台主机,也就能够知道路径是断在哪台机子了。
完整的ICMP类型列表在附录ICMP类型里。关于ICMP类型的更多信息和用法,我建议您看看下面的文章:
 | 注意,我阻塞了任何我不想接受的ICMP包,这对您的网络来说可能会有问题,但在我这里,一切工作正常。 |