openstack中nova使用了iptables实现其网络相关功能,乍看openstack的iptables表比较复杂,整理了一下iptables的filter表和nat表的结构,以一个all in one的openstack的iptables表为例,展示了iptables的filter表和nat表在openstack中的使用。
Filter表
INPUT链结构:
实例:
INPUT链:
nova-network-INPUT链:
开放了67和53端口(DHCP 和 DNS端口)。
nova-compute-INPUT链:
开放了67和68端口(Bootps端口和Bootpc端口)
nova-api-INPUT链:
开放了nova-metadata的8775端口。
FORWARD链结构:
实例:
FORWARD链:
在系统默认的链中添加了4条自定义链。
nova-filter-top链:
nova-network-local链:
nova-compute-local链:
转到各个instance的nova-compute-inst-XXX链。
nova-compute-inst-XXX链:
每个instance的访问控制规则链,由secgroup定义。
nova-compute-provider链:
nova-compute-sg-fallback链:
上述规则都不满足则丢弃。
nova-api-local链:
nova-network-FORWARD链:
实现网关作用。
nova-compute-FORWARD链:
开放了67和68端口(Bootps端口和Bootpc端口)
nova-api-FORWARD链:
OUTPUT链结构:
实例:
OUTPUT链:
添加了4条自定义链。
nova-filter-top链同上。
nova-network-OUTPUT链:
nova-compute-OUTPUT链:
nova-api-OUTPUT链:
NAT表
PREROUTING链结构:
实例:
PREROUTING链:
nova-network-PREROUTING链:
metadate和floating ip的DNAT规则。
nova-compute-PREROUTING链:
nova-api-PREROUTING链:
POSTROUTING链结构:
实例:
POSTROUTING链:
nova-network-POSTROUTING链:
nova-compute-POSTROUTING链:
nova-api-POSTROUTING链:
nova-postrouting-bottom链:
nova-network-snat链:
从public_interface出去的包进行SNAT,10.224.148.69是public_interface的ip。
nova-network-float-snat链:
floating ip的SNAT规则。
nova-compute-snat链:
nova-compute-float-snat链:
nova-api-snat链:
nova-api-float-snat链:
OUTPUT链结构:
实例:
OUTPUT链:
nova-network-OUTPUT链:
floating ip的DNAT规则。
nova-compute-OUTPUT链:
nova-api-OUTPUT链:
Refer:
http://www.ibm.com/developerworks/cloud/library/cl-openstack-network/index.html