VirtualBox 上 proxmox 5.1 中的 LXC 容器访问互联网

VirtualBox 上 proxmox 5.1 中的 LXC 容器访问互联网

我已经在 macOS(10.12)中的 VirtualBox 上安装了 Proxmox VE 5.1。

猜测的操作系统是 Debian Strech(Proxmox 基于 Debian 构建),有 2 个“物理”网络接口(从 VirtualBox 配置),Host-Only并且NAT我可以通过 NAT 接口访问互联网:

root@proxmox:~# traceroute 1.1.1.1
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
 1  10.0.3.2 (10.0.3.2)  0.792 ms  0.694 ms  0.625 ms
 2  1dot1dot1dot1.cloudflare-dns.com (1.1.1.1)  2.829 ms  2.818 ms  3.318 ms

debian 主机中的 /etc/network/interfaces 包含:

auto lo
iface lo inet loopback

auto enp0s3
iface enp0s3 inet static
    address  192.168.56.101
    netmask  255.255.255.0

auto enp0s8
iface enp0s8 inet static
    address  10.0.3.15
    netmask  255.255.255.0
    gateway  10.0.3.2
#NAT

auto vmbr0
iface vmbr0 inet static
    address  172.16.1.1
    netmask  255.255.255.0
    bridge_ports dummy1
    bridge_stp off
    bridge_fd 0

作为“客户机”,debian 可以从两个接口(macOS IP:192.168.56.1、10.0.3.2)看到 macOS(“主机”)。

虚拟接口vmbr0是为 proxmox LXC 容器创建的,我添加了一个 iptables 规则,将所有流量从 vmbr0 发送到该enp0s8接口(VirtualBox 中的 NAT 接口)。

iptables -A POSTROUTING -s 172.16.1.0/24 -o enp0s8 -j MASQUERADE -t nat

问题是当我在 proxmox 内部创建一个 LXC 容器时,使用vmbr0as 网络接口,LXC 容器无法访问互联网,我可以 ping 到 proxmox“主机”(IP:172.16.1.1)但不能ping 到其他任何内容。

我也尝试使用 enp0s8 作为bridge_ports参数,结果相同。

/etc/network/interfacesLXC容器(Ubuntu 16.04)中的文件包含:

auto eth0
iface eth0 inet static
        address 172.16.1.100
        netmask 255.255.255.0
        gateway 172.16.1.1

我在另一个 proxmox 服务器中有一个非常相似的配置(但在裸机中,而不是 VirtualBox 安装),并且它运行正常。

有人能告诉我网络配置中哪些地方不正确或缺失,以允许容器访问互联网吗?

答案1

问题在于 debian 主机(proxmox 中的“master”)没有激活 ip_routing,因此执行以下命令一切开始正常:

echo 1 > /proc/sys/net/ipv4/ip_forward

所以现在,我得到(来自 lxc 容器):

# traceroute 1.1.1.1
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
 1  172.16.1.1 (172.16.1.1)  0.978 ms  0.931 ms  0.911 ms
 2  10.0.3.2 (10.0.3.2)  0.894 ms  0.810 ms  0.757 ms
 3  * * *
 4  1dot1dot1dot1.cloudflare-dns.com (1.1.1.1)  5.780 ms  6.463 ms  6.909 ms

相关内容