这不是一个 OpenStack 问题,而是一个 iptables 问题。请考虑 NAT 表中的以下链
Chain nova-network-POSTROUTING (1 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- any any 172.16.100.0/24 10.128.0.223
0 0 ACCEPT all -- any any 172.16.100.0/24 172.16.100.0/24 ! ctstate DNAT
0 0 SNAT all -- any any 172.16.100.6 anywhere ctstate DNAT to:10.128.0.161
有人能告诉我 1) 第二条规则中的“!ctstate DNAT”是什么意思,以及 2) 第三条规则中的“ctstate DNAT to:10.128.0.161”是什么意思
谢谢
答案1
第一条规则使用连接跟踪扩展 ctstate 并反转动态网络地址转换协议! - 我相信规则是说,当源来自 172.16.100.0/24 并且目的地是同一网络时,不要对源进行 NAT(因此,如果这是一个虚拟路由器,那么这将是 dhcp 提供等,也是该子网上的任何主机到主机通信) - 第二部分 172.16.100.6 到任何地方都应该动态 NAT 为 10.128.0.161。因此,如果 172.16.100.6 是您的 openstack 外部路由器,conntrack 模块将匹配规则 2 以进行内部流量,匹配规则 3 以进行其他所有流量,即 - 路由器和主机将始终首先匹配规则 2 以进行内部流量,但一台主机在离开网段时会特别将其源 NAT,或者换句话说,代理服务器,因为默认路由可能是 172.16.100.6。