今日在学习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通。
以上都是开通安全规则的情况
时间: 2024-10-10 10:49:29