Iptable

来源:互联网 发布:java map源码 编辑:程序博客网 时间:2024/05/03 17:36

Iptables是Linux的防火墙

有三个规则链,分别是

  • INPUT - 所有以主机为目的地的封包。
  • OUTPUT - 所有源自主机的封包。
  • FORWARD - 这些封包的目的地或来源地都不是主机,但路经主机(由它选路)。假若你的主机是一个路由器,这条规则链将会被应用。
规则是以列表的方式被加进每条规则链。每个封包会被头一条规则开始检查,才至最后一条。假若封包与其中一条规则吻合,相应的动作便会被执行,例如接纳(ACCEPT)或丢弃(DROP)封包。一旦有吻合的规则,这个封包便会按照规则来处理,而不再被规则链内的其它规则所检查。假如封包通过所有检查而不符合任何规则链内的任何一条规则,那应这条规则链的缺省动作将会被执行。这就是所谓的缺省政策,可以设置为接纳(ACCEPT)或丢弃(DROP)封包。


以一个安装了Docker的Ubuntu14.04为例:

sudo iptables -L -n
Chain INPUT (policy ACCEPT)----默认policy
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)----默认policy
target     prot opt source               destination         
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)----默认policy
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination   

对于INPUT链,和OUTPUT链,缺省策略是ACCECPT,而且这两个链没有任何的规则,因此所有以主机为目的地的报文都会被接收,主机发出去的所有报文也会顺利发送出去。

对于FORWORD,第一条规则是说所有的报文都会转到自定义的链DOCKER处理,而DOCKER链没有任何的规则,所以报文转到DOCKER链处理后,到达了链的底部会重新回到上一个链的下一个规则处理,也就是
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED,此条规则的意思是所有的报文都会被转发。因为对于上面的规则,所有的转发报文也会被顺利转发。

0 0