本文为问题型总结及对问题原因的分析
今日在学习openstack的网络,我们用的是flatdhcp这种网络模式。一直有个疑惑,为什么固定ip是不能访问,而浮动ip是可以ping通。这是怎么做到的。 其实固定ip和浮动ip本质是没什么区别的,先需要看下iptables的一些知识
假设我们在云主机上ping 浮动ip 192.168.139.7,那么是直接从本地进程出发,到路由表,走output链 查看iptables的规则,可以看到在nat的表中有一个dnat的规则,也就是
- Chain nova-network-OUTPUT (1 references)
- target prot opt source destination
- DNAT all -- 0.0.0.0/0 192.168.139.7 to:192.168.138.17
复制代码
既然修改的是nat表中的output链,这个过程是把目标访问是浮动ip变为固定ip。这个可以通过,而直接ping固定ip是不能通过的,那么只有通过在filter这里的output链中的规则了。果然查看filter可以看到
- Chain nova-compute-inst-43 (1 references)
- pkts bytes target prot opt in out source destination
- 28080 4431K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
- 0 0 nova-compute-provider all -- * * 0.0.0.0/0 0.0.0.0/0
- 0 0 ACCEPT udp -- * * 192.168.138.227 0.0.0.0/0 udp spt:67 dpt:68
- 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 match-set b0f65738cef046168b1dbed09be4c14 src
- 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 ! ctstate DNAT
- 0 0 ACCEPT 4 -- * * 0.0.0.0/0 0.0.0.0/0
- 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 1:65535
- 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
- 0 0 nova-compute-sg-fallback all -- * * 0.0.0.0/0 0.0.0.0/0
复制代码
其中有一个很重要的DROP!这条规则最后就是在filter的output链路中! 那么如果我们这个ping是从其他地方过来的,数据包又是怎么走的?这个时候在上面的图中走的是数据包到本地进程这条路线,只要有路由就是ping通。 以上都是开通安全规则的情况
|