将多个公共 IP 路由到内部子网

将多个公共 IP 路由到内部子网

我租用的专用服务器被分配了一个 /29 ips 块。我希望能够保留其中一个 IP 用于管理服务器本身,并将其余 IP 转发到其自己的内部子网,以便多个 OpenVZ 容器能够共享公共 IP。

例如,我可能在 4 个容器中有两个 Web 服务器和两个文件服务器。这不是实际要运行的服务,但为了便于举例,我将使用它们。我希望我的一个公共 IP(XX.XX.XX.2)指向 192.168.2.0/24 子网上的两个容器,另一个公共 IP(XX.XX.XX.3)指向 192.158.3.0/24 子网中的容器。子网之间不需要通信,但每个容器必须能够访问 Web。

我曾尝试使用如上所述的基于源的路由这里和 OpenVZ wiki 上描述的 NAT这里没有成功。主机运行的是 Centos 6,每个虚拟机运行的是 Debian 7(如果这有区别的话)。

答案1

  1. 设置 openvz 容器以使用桥接网络(使用 veth 接口)。

  2. 为您想要连接容器的每个内部网络创建一个网桥(在您的情况下有 2 个网桥,一个用于 192.168.2.0/24,一个用于 192.168.3.0/24。我们将它们称为 br2 和 br3)。

  3. 为每个网桥提供正确网络上的 IP 地址(例如 br2 可以是 192.168.2.1,br3 可以是 192.168.3.1)

  4. 配置将它们连接到各自网桥的容器。

    例如,将应驻留在网络 192.168.2.0/24 上的容器连接到 br2(假设它们是 CT1 和 CT2),将您想要驻留在 192.168.3.0/24 上的容器连接到 br3(假设它们是 CT3 和 CT4)。

  5. 为每个容器分配一个与其所连接网桥位于同一网络上的 IP 地址。设置网桥的 IP 地址和默认网关。

    例如:CT1 和 CT2 的 IP 分别为 192.168.2.101 和 192.168.2.102。它们的网关为 192.168.2.1(br2 的 IP 地址)

  6. 在物理主机上启用 ip 转发

  7. 配置物理主机连接到 Internet 的接口上的所有公共 IP(假设为 eth0),并使用正确的子网掩码。

  8. 为您的 CT 配置 NAT,如下所示:

    iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j SNAT --to first.pulic.ip.address
    iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j SNAT --to second.pulic.ip.address
    

相关内容