连接两个 OpenVZ 内部网络,使容器可以互相看到

连接两个 OpenVZ 内部网络,使容器可以互相看到

我有两个 OpenVZ 主机,上面有容器。这是当前布局:

主机 A:(eth0(连接到互联网),eth1(连接到主机 B))

主机 B:(eth0(连接到互联网),eth1(连接到主机 A))

主机 A 和主机 B 上有 OpenVZ 容器。主机 A 和主机 B 各有一个公共 IPv4 地址,容器没有公共 IP,它们需要位于内部专用网络上。

如何配置网络以便两个主机上的容器可以相互通信并访问互联网。

答案1

在收到大量关于 SF... 不是!?的回复后,我做了自己的研究并找到了答案。这就是我的方法。

配置

-SSH 到主机 A 并更新 /etc/network/interfaces 如下:

auto lo
iface lo inet loopback

iface eth1 inet manual

auto vmbr1
iface vmbr1 inet static
        address 10.0.2.99
        netmask 255.255.255.0
        bridge_ports eth1
        bridge_stp off
        bridge_fd 0

auto eth0
iface eth0 inet static
        address public_ip_here
        netmask 255.255.255.0
        gateway public_ip_gateway_here

auto vmbr0
iface vmbr0 inet static
        address 10.0.1.1
        netmask 255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0

        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up   iptables -t nat -A POSTROUTING -s '10.0.1.0/24' -o eth0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '10.0.1.0/24' -o eth0 -j MASQUERADE

-SSH 到主机 B 并更新 /etc/network/interfaces 如下:

auto lo
iface lo inet loopback

iface eth1 inet manual

auto vmbr1
iface vmbr1 inet static
        address 10.0.2.199
        netmask 255.255.255.0
        bridge_ports eth1
        bridge_stp off
        bridge_fd 0

auto eth0
iface eth0 inet static
        address public_ip_here
        netmask 255.255.255.0
        gateway public_ip_gateway_here

auto vmbr0
iface vmbr0 inet static
        address 10.0.1.1
        netmask 255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0

        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up   iptables -t nat -A POSTROUTING -s '10.0.1.0/24' -o eth0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '10.0.1.0/24' -o eth0 -j MASQUERADE

-在所有新容器上,创建 eth0 (->vmbr0) 和 eth1 (->vmbr1),并从适当的块中为每个 eth 接口分配一个静态 IP。

-在所有新容器上,确保默认路由指向 10.0.1.1,如果不是,则相应地更新容器中的网络配置文件。

服务器网络拓扑:

  • 主机 A(eth0:公网 IP,vmbr0:10.0.1.0/24)(eth1/vmbr1:10.0.2.99/24)

  • 主机 B(eth0:公网 IP,vmbr0:10.0.1.0/24)(eth1/vmbr1:10.0.2.199/24)

  • 容器(eth0-mapped-to->vmbr0:10.0.1.[CT#]/24)(eth1-mapped-to->vmbr1:10.0.2.[如果在 host-a 上则为 CT#,否则为 CT#+100]/24)

  • 两个主机上的容器可以在 10.0.1.x IP 块中拥有相同的 IP,但不能在 10.0.2.x IP 块中拥有相同的 IP

示例容器配置:

  • 主机 A 上的容器 # 100(eth0->vmbr0:10.0.1.100/24,网关:10.0.1.1)(eth1->vmbr1:10.0.2.100/24,网关:10.0.2.99)

  • 主机 B 上的容器 # 100(eth0->vmbr0:10.0.1.100/24,网关:10.0.1.1)(eth1->vmbr1:10.0.2.200/24,网关:10.0.2.199)

  • 主机 A 上的容器 # 101(eth0->vmbr0:10.0.1.101/24,网关:10.0.1.1)(eth1->vmbr1:10.0.2.101/24,网关:10.0.2.99)

  • 主机 B 上的容器 # 101(eth0->vmbr0:10.0.1.101/24,网关:10.0.1.1)(eth1->vmbr1:10.0.2.201/24,网关:10.0.2.199)

相关内容