OpenVZ容器和NAT

我一直想用OpenVZ解决我的NAT问题。 我在他们的网站/维基上使用了他们的指南 ,但是我似乎无法使其工作。

我的Linux机器在CentOS 6(64位)上运行,在我家里。 我的路由器的默认stream量路由器被设置为我的Linux机器在192.168.1.90(因此所有的stream量,除非在端口转发,否则发送和接收从/到192.168.1.90) – 这在主机节点上工作得很好。 我在默认端口上testing了Teamspeak 3和Apache。 他们都工作得很好,可以从外面访问(端口80不使用/不能被ISP使用)。 然而,每当我创build一个奴隶节点,这突然变成地狱。

设置名称服务器之后,我可以ping通,调用主机名,并尽我所能做客户端,但是我无法托pipe任何可以被外部访问的东西。 让我们再次使用Apache,我可以从networking内部访问192.168.1.91,但无法从外部,即使我在我的路由器添加一个端口转发configuration指向0.91,而不是默认.90 – 没有运气。 在OpenVZ的指导之前,我做了所有的步骤,并检查两次,一切正常,并下降到“从互联网访问容器” – 我的config / 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; 

我尝试着和没有最后一行,因为这应该是从内部指挥stream量到外部,这工作正常。 我无法在端口80和8081上访问我的网站(第一行 – 我尝试更改为8081)。

在canyouseeme.org我试图查找这些端口。 主机节点它工作正常,当Apache运行,但在这个IPtablesconfiguration的奴隶节点,它给“没有路由到主机”。 没有它只是给“拒绝连接”。

我的完整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 

我猜这个问题不是在你的主机上,它是在你的容器里,也许有没有默认路由在它尝试:

 ip route 

并确保有默认的路由规则