OpenVZ 容器和 NAT

OpenVZ 容器和 NAT

几天来我一直在尝试解决 OpenVZ 的 NAT 问题。我使用了他们的指导在他们的网站/维基上,但我似乎无法让它工作。

我的 Linux 机器在我自己家里运行的是 CentOS 6(64 位)。我的路由器的默认流量路由器设置为我的 Linux 机器 192.168.1.90(因此,除非端口转发中另有说明,否则所有流量都是从 192.168.1.90 发送和接收的)- 这在主机节点上运行良好。我在默认端口上测试了 Teamspeak 3 和 Apache。它们都运行良好,并且可以从外部访问(端口 80 未被使用/无法被 ISP 使用)。但是,每当我创建一个从属节点时,情况就会突然变得糟糕。

设置名称服务器后,我可以 ping 主机名,调用主机名并执行作为客户端可以执行的所有操作,但是我无法托管任何可以被外部访问的内容。让我们再次以 Apache 为例,我可以从网络内部在 192.168.1.91 上访问它,但无法从外部访问,即使我在路由器中添加端口转发配置以指向 .91 而不是默认的 .90 - 也没有运气。在之前链接的 OpenVZ 指南中,我执行了所有步骤并检查了两次,一切正常,然后转到“从互联网访问容器” - 我的配置/iptables 如下:

iptables -t nat -A PREROUTING -p tcp -d 46.32.xx.xxx --dport 80 \
-i eth0 -j DNAT --to-destination 192.168.1.91:80;
iptables -t nat -A POSTROUTING -s 192.168.1.91 -o eth0 -j SNAT --to     46.32.xx.xxx;

我尝试了最后一行和不最后一行,因为它应该将流量从内部引导到外部,这样就可以正常工作。我无法在端口 80 和 8081 上访问我的网站(第一行 --dport 我尝试更改为 8081)。

我在 canyouseeme.org 上尝试查找这些端口。当 Apache 运行时,主机节点运行正常,但在使用此 IPtables 配置的从属节点上,它显示“无路由到主机”。如果没有,它只会显示“连接被拒绝”。

我的完整 IPTables 规则列表如下(不包括之前所述的规则):

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

答案1

我猜问题不在你的主机上,而是在你的容器中,也许其中没有默认路由,请尝试:

ip route

并确保有默认路由规则

相关内容