我有一台具有一个公共 IP 的 proxmox 服务器。我已设置 NAT 和 iptables 以将端口 80 和 443 转发到我的 apache2 服务器。在我尝试从 NAT 网络内部发出请求之前,一切正常。
我有一些域指向我的服务器,当我尝试wget foo.de
从 NAT 网络内的任何服务器访问我的任何域时,我得到的Connecting to foo.de ... failed: Connection refused.
从该网络外部来看一切都按预期工作。
这是我的 iptables 配置:
auto lo
iface lo inet loopback
iface ens3 inet manual
auto vmbr0
iface vmbr0 inet static
address xxx.xxx.xxx.xxx/xx
gateway xxx.xxx.xxx.xxx
bridge-ports ens3
bridge-stp off
bridge-fd 0
auto vmbr1
iface vmbr1 inet static
address 10.10.10.1
netmask 255.255.255.0
network 10.10.10.0
broadcast 10.10.10.255
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up sysctl -w net.ipv4.conf.all.route_localnet=1
post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.10.10.2:80
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.10.10.2:80
post-up iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to 10.10.10.2:80
post-down iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to 10.10.10.2:80
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 443 -j DNAT --to 10.10.10.2:443
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 443 -j DNAT --to 10.10.10.2:443
post-up iptables -t nat -A OUTPUT -p tcp --dport 443 -j DNAT --to 10.10.10.2:443
post-down iptables -t nat -A OUTPUT -p tcp --dport 443 -j DNAT --to 10.10.10.2:443
我刚刚设置了循环接口,因为我可以通过服务器的公共 URL 从主机访问服务器,但仍然无法从 NAT 网络内部访问。服务器直接连接到互联网,前面没有任何路由器。有什么想法可以解决这个问题吗?