Это не столько вопрос 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" означает в третьем правиле
Спасибо
Первое правило использует расширение отслеживания соединений 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'ed, когда он покидает сегмент, или, другими словами, прокси-сервер, поскольку маршрут по умолчанию, скорее всего, 172.16.100.6.