今天排查服务器,发现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