iptables_默认规则

:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

:INPUT ACCEPT [0:0]
# 该规则表示INPUT表默认策略是ACCEPT(默认策略最后匹配,input默认策略一般设置为drop)

:FORWARD ACCEPT [0:0]
# 该规则表示FORWARD表默认策略是ACCEPT(默认策略最后匹配,forward默认策略一般设置为drop)

:OUTPUT ACCEPT [0:0]
# 该规则表示OUTPUT表默认策略是ACCEPT(默认策略最后匹配,output默认策略一般设置为accept)

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 意思是允许进入的数据包只能是刚刚我发出去的数据包的回应,ESTABLISHED:已建立的链接状态。RELATED:该数据包与本机发出的数据包有关。

-A INPUT -p icmp -j ACCEPT #允许icmp包,比如ping等
-A INPUT -i lo -j ACCEPT #允许来自于lo接口(localhost)的数据包

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
# 这两条的意思是在INPUT表和FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。并且发送一条host prohibited的消息给被拒绝的主机。(有了这两条策略就不会执行input和forward的默认策略了,需要在前面单独指定允许的input和forward策略)
--------------------------------------------------------------------------
以上即是iptables的默认策略

如果还想控制出去的数据包可以在后面加一条
-A OUTPUT -j REJECT --reject-with icmp-port-prohibited(或unreachable)
或将OUTPUT默认改为DROP
则必须单独在前面指定out的策略