我有 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
我有一些其他服务器在具有固定 IP 地址范围的 NAT 后面192.168.1.101-110
,并且masquerade
针对整个范围执行规则192.168.1.0/24
:
-A POSTROUTING -s 192.168.1.0/24 -o vmbr0 -j 伪装
上述规则可以让我位于 NAT 后面的服务器访问互联网。(下载并 ping 公共 IP)。
我的网页可以通过访问从互联网访问example.com
,但无法从 NAT 网络内部192.168.1.0/24
使用相同域名或主机服务器IP地址。
我想知道,为什么 NAT 防火墙后面的 Web 服务器无法被对端使用 NAT 服务器域名或 IP 访问?
我是否需要SNAT
专门添加规则到网络服务器并删除该masquerade
行?
答案1
如果您使用静态 IP,则可能需要使用 SNAT,因为 MASQUERADE 需要从网络接口获取 IP 地址,因此会受到惩罚。
此外,如果您从防火墙计算机进行测试,它将尝试访问自己的 Web 服务器,而不是专用的 Web 服务器。我们需要在 OUTPUT 链中放置一条规则来处理这种情况:
iptables -t nat -A OUTPUT -d $INET_IP --dport 80 -j DNAT --to-destination $HTTP_IP