У меня есть 1 хост-сервер как сервер NAT, он имеет имя общественного достояния example.com
связанный с его общедоступным IP-адресом PUB_IP_ADD
.
У меня есть другой веб-сервер позади NAT с IP-адресом 192.168.1.100
и правила перенаправления портов сделаны на хост-сервере:
- PREROUTING-i eth0-p tcp-m tcp - dport 80-j DNAT - к месту назначения 192.168.1.100:80
У меня есть некоторые другие серверы позади NAT с фиксированным диапазоном IP-адреса 192.168.1.101-110
и masquerade
правила сделаны для целого 192.168.1.0/24
диапазон:
- ПОДМЕНА POSTROUTING-s 192.168.1.0/24-o vmbr0-j
вышеупомянутые правила могут позволить моим серверам позади Интернета доступа NAT. (загрузите и проверьте с помощью ping-запросов общедоступного дюйм/с).
К моей веб-странице можно получить доступ из Интернета путем посещения example.com
но не может быть получен доступ из сети NAT в тех 192.168.1.0/24
при помощи того же IP-адреса сервера доменных имен или хост-сервера.
Интересно, почему к веб-серверу позади брандмауэра NAT не могут получить доступ его коллеги при помощи доменного имени сервера NAT или IP?
Сделайте я должен добавить SNAT
правила конкретно к веб-серверу и удаляют masquerade
строка?
Вы можете использовать SNAT, если вы используете статические IP-адреса, поскольку MASQUERADE страдает штрафом, поскольку ему необходимо получить IP-адрес из сетевого интерфейса.
Кроме того, если вы проводите тестирование с компьютера с брандмауэром, он попытается получить доступ к своему собственному веб-серверу, а не к выделенному веб-серверу. Нам нужно поместить правило в цепочку OUTPUT, чтобы справиться с этим случаем:
iptables -t nat -A OUTPUT -d $INET_IP --dport 80 -j DNAT --to-destination $HTTP_IP