Iptables是Linux的防火墙
有三个规则链,分别是
- INPUT - 所有以主机为目的地的封包。
- OUTPUT - 所有源自主机的封包。
- FORWARD - 这些封包的目的地或来源地都不是主机,但路经主机(由它选路)。假若你的主机是一个路由器,这条规则链将会被应用。
以一个安装了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,此条规则的意思是所有的报文都会被转发。因为对于上面的规则,所有的转发报文也会被顺利转发。