今天排查服务器,发现iptables中有一条规则:

-A INPUT -j REJECT --reject-with icmp-host-prohibited

这个的意思,拒绝所有的数据包,返回icmp不可达,加上这条规则之后,所有数据包都不能外出,除了在该规则之前声明允许的数据包


---一个正确的例子---------

*filter

:INPUT ACCEPT [46:4000]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [27:2774]

-A INPUT -i lo -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -s 10.151.100.0/19 -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m multiport --dports 2021:2100 -j ACCEPT

-A INPUT -p udp --sport 123 -j ACCEPT

-A INPUT -p tcp --sport 123 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT


上述规则,便是允许ssh、允许ntpdate,其他都不能出去

更深入的解释,看这篇博文http://alsww.blog.51cto.com/2001924/826926


文件第2-4行,有个函数:OUTPUT ACCEPT [0:0]

中括号中的意思是 [通过该规则的数据包:字节总数],上面我也搞不清是为什么是27:2774,从另一台服务器上copy过来的,看这篇http://bbs.chinaunix.net/thread-2087882-1-1.html