当我运行 lxd init 时,我选择此设置。
Would you like to create a new network bridge (yes/no)? no
因为我在 /etc/network/interfaces 中创建了自己的 br0
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address x.x.50.2
netmask 255.255.252.0
broadcast x.x.x.255
network x.x.x.0
gateway x.x.53.254
dns-nameservers 8.8.8.8
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
iface eth0 inet manual
然后我启动 lxd centos 并运行
lxc config device add first eth0 nic nictype=bridged parent=br0
lxc config device set first eth0 ipv4.address x.x.51.2
lxc config device set first eth0 security.mac_filtering true
并更改配置
/var/lib/lxd/containers/second/rootfs/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HOSTNAME=LXC_NAME
NM_CONTROLLED=no
TYPE=Ethernet
IPADDR=x.x.51.2
NETMASK=255.255.255.255
GATEWAY=x.x.53.254
DNS1=8.8.8.8
DNS2=x.x.x.x
MTU=
DHCP_HOSTNAME=x.x.50.2
当我尝试 ping 8.8.8.8 时,我收到连接:网络无法访问
/etc/resolv.conf
nameserver 8.8.8.8
search lxd
nameserver x.x.x.x
我做错了什么,我无法弄清楚,也许我缺少一些概念?
答案1
您是否为容器使用了专用 NIC?您不需要在网桥上设置静态 IP 地址:
auto br0
iface br0 inet manual
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
iface eth0 inet manual
如果你在考虑中设置你的 IP 地址,我倾向于不在 lxc 配置级别设置它
lxc config device unset first eth0 ipv4.address
如果您与 LXD 容器共享到 LXD 主机的管理接口,那么您可以在网桥上重置 IP 地址,但我建议对两个连接使用单独的设备。
如果这些都不起作用,你需要找到网络中断的地方。我采取了一步一步的方法,先从容器外部开始,然后进入容器内部,这涉及检查各个级别的网络访问:
- 在主机上:
- 暂时从您的配置中删除桥接器(只需将其注释掉)并在 eth0 上设置静态 IP 地址。
- 你能 ping 通 eth0
ping 192.168.0.10
吗?如果能,则表示 eth0 已启动并正常工作。如果不能,则表示你的网卡有问题。 - 您能 ping 网关
ping 192.168.0.1
吗?如果能,则第 2 层连接正常。如果不能,则存在第 2 层问题。检查您的连接、交换机等(任何基于 MAC 的过滤)。 - 您能 ping 通网关外吗
ping 8.8.8.8
?如果能,则第 3 层连接正常。如果不能,则很可能存在第 3 层问题。请检查路由表ip route show
、路由器等。
- 你能 ping 通 eth0
- 如果所有这些都正常工作,您就知道 eth0 工作正常。现在您再次创建网桥,将 eth0 重新设置为手动,并将该 IP 地址提供给网桥。重复上述 3 个子步骤。如果所有步骤都成功,那么您就知道问题不在主机上,而是在容器上。
- 从网桥中删除 IP 地址并将其重新设置为手动。继续下一步。
- 暂时从您的配置中删除桥接器(只需将其注释掉)并在 eth0 上设置静态 IP 地址。
- 在容器中:
- 您能 ping 通 eth0
ping 192.168.0.10
吗?如果能,则表示 NIC 正常工作,请继续。如果不能,则表示 NIC 本身存在问题,您将无法获得任何网络连接。检查 LXD 日志、内核日志、运行以太网测试等。如果是这种情况,则问题很可能是配置问题,因为您已经在主机上测试了实际的 eth0 设备,并发现它到目前为止工作正常。 - 您能 ping 通网关吗
ping 192.168.0.1
?如果能,则第 2 层正常运行,请继续。如果不能,则存在第 2 层问题。 - 您能 ping 通网关外吗(我们已经知道您不能)
ping 8.8.8.8
?存在第 3 层问题。检查路由ip route show
- 您能 ping 通 eth0