OpenVZ:根据端口将请求发送到容器



我在服务器上运行Debian 7.0,我有OpenVZ的一些容器。

我想根据对服务器的请求,将此请求发送给特定的容器。示例:

domain.com:500 -> Container1 will handle it
domain.com:501 -> Container2 will handle it

我希望,如果可能的话,避免了iptables,因为我只是对此遇到麻烦,并且永远不会真正理解它的规则(我也很想避免使用Haproxy)。我使用UFW没有问题。

我正在寻找一个非常简单的解决方案。

如果使用ufw,然后转到/etc/ufw/和edit.rules file。该文件以:

开始
# NAT table rules
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-F

之后,请添加(只是一个示例):

# container 1 rules
-A PREROUTING -i eth0 -p tcp --dport 500 -j DNAT --to-destination container1-ip-address:port
# container 2 rules
-A PREROUTING -i eth0 -p tcp --dport 501 -j DNAT --to-destination container2-ip-address:port

您应该用服务器的接口替换ETH0(我认为您正在使用桥接)。

保存文件。重新启动UFW防火墙:

ufw disable
ufw enable

我想您的容器已经具有Internet访问权限,因此我认为您已经启用了内核中的端口转发支持(您应该在/etc/sysctl.conf 中具有此行:

net.ipv4.conf.all.forwarding = 1
net.ipv4.ip_forward = 1

最新更新