LXD/LXC 奇怪的重启断网问题解决

这篇博客记录了解决LXD(Linux Containers)在Debian系统中与Docker并行运行时遇到的网络故障。问题表现为容器在重启后失去网络连接,而通过设置net.ipv4.ip_forward=1并重启系统,或者调整iptables规则,可以避免Docker设置的FORWARD链DROP导致的连接问题。作者推测可能是LXD服务启动时机不当导致的网络配置错误。解决方案无需卸载和重装LXD,只需关闭并重新启动LXD服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2023-5-30 更新
LXD 又出现这样的断网问题
把 net.ipv4.ip_forward=1 增加到 /etc/sysctl.conf 最后一行,重启。
问题解决,实锤了是 https://wiki.debian.org/LXD 中描述的 LXD 与 Docker 链接冲突的问题。

2023-4-10 更新
搞 Debian 系统的 LXD 时,发现了 Debian 对 lxd 的已知问题跟踪。似乎是 Docker 的原因。
已知问题 跟踪链接:https://wiki.debian.org/LXD
要使用一些办法来规避

Running LXD and Docker on the same host can cause connectivity issues. A common reason for these issues is that Docker sets the FORWARD policy to DROP, which prevents LXD from forwarding traffic and thus causes the instances to lose network connectivity. There are two different ways you can fix this:
As outlined in bug 865975, message 91, you can add net.ipv4.ip_forward=1 to /etc/sysctl.conf which will create a FORWARD policy that docker can use. Docker then won't set the FORWARD chain to DROP when it starts up.

Alternately, you can use the following command to explicitly allow network traffic from your network bridge to your external network interface: iptables -I DOCKER-USER -i <network_bridge> -o <external_interface> -j ACCEPT (from the upstream LXD documentation)

以下为过时,请按照文章开头 “2023-5-30 更新” 进行操作

系统为Ubuntu 20.04
使用 LXD/LXC 版本为当前最新的 4.24

症状表现为

  1. 容器原来可以正常联网,可以ping通宿主机的局域网和外网,但是重启机器后,容器突然就无法联网,即无法ping通和访问宿主机的局域网和外网。
  2. 并且在正常联网和突然无法联网之间,你没有给宿主机和容器做任何的网络设定。
  3. 但是proxy设备却正常,外部机可以通过容器的proxy设备访问容器的本地localhost网络。
  4. 并且,手动重启容器,删除后重建容器,手动重启宿主机,删除和重建网桥,手动给容器删除和新增网桥,调整容器和宿主机的路由表和iptables,都没有用。但卸载LXD/LXC后重装 LXD/LXC 有效。

解决方法:
找了和试了很多办法,终于成功找到免于重装LXD的办法了
在 root 权限,使用命令

sudo lxd shutdown

彻底关闭 lxd 服务,然后使用命令重启 lxd 服务

sudo lxd

现在再开启容器,可以发现容器可以联网了。。。

原因推测:
LXD/LXC的网络服务有bug。bug原因可能为LXD的服务先于某些服务或驱动,然后过早地启动,导致网络服务内部配置有误。手动重启LXD服务,可以使LXD的网络服务以现行的状态重新配置网络服务,从而能连上网络。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值