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