请问,我尝试从 VMB ping 10.0.3.8(LXC 容器的 ip),但没有成功!您有什么想法吗?
以下是我想要做的事情的解释:(红色箭头)
蓝色箭头表示 ping 工作正常。红色箭头表示存在问题:我尝试从 VMB (192.168.1.7) ping 10.0.3.8,但这条消息被阻止了:ping 10.0.3.8 PING 10.0.3.8 (10.0.3.8) 56(84) 字节数据。--- 10.0.3.8 ping 统计信息 --- 已发送 68 个数据包,已接收 0 个数据包,100% 数据包丢失,耗时 67214 毫秒 –
多谢。
此致。
答案1
当您创建 Linux 容器时,它存在于自己的网络空间中。这就是 IP 地址看起来如此不同的原因。您的虚拟机有 192.168.1.x,而您的 Linux 容器被分配了 10.0.3.x。
解决此问题的一种方法是在 Linux 容器上创建专用的虚拟网卡,然后从 192.168.1.x 网络中提取一个地址。
以下是核心说明,但详细步骤和背景来自这篇 Bonsai Framework 文章。
在主机上创建永久 macvlan
/etc/network/interfaces
在主机文件底部添加,# Creates a macvlan interface called macvlan0 without an IP address iface mvlan0 inet manual pre-up ip link add mvlan0 link eth0 address 8a:38:2a:cc:d7:aa type macvlan mode bridge post-down ip link del macvlan0 auto mvlan0
重新启动系统以使更改生效。mvlan0
使用 查看网络设备时,您将注意到ifconfig -a
。
macvlan
通过修改位于的配置文件将容器连接到主机/var/lib/lxc/[container]/config
。
要为新网卡添加的条目,
# macvlan for external IP lxc.network.type = macvlan lxc.network.macvlan.mode = bridge lxc.network.flags = up lxc.network.link = mvlan0 lxc.network.hwaddr = 00:16:3e:8d:4f:51 lxc.network.name = eth0
对于 hwaddr,通过免费网站生成一个唯一的本地管理单播 MAC 地址,例如helion.org。
最后,调整容器内的接口文件以通过静态绑定,或者如果您愿意,可以使用动态。
就我而言,我调整了我的家用路由器,以便 192.168.0.1 到 192.168.0.20 不是动态分配的,而是在我的 LXC 中使用静态的。
因此我修改了我的容器接口文件如下,
auto eth0
iface eth0 inet static
address 192.168.0.12
gateway 192.168.0.1
netmask 255.255.255.0
auto eth1
iface eth1 inet dhcp
重新启动您的 Linux 容器。