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

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的网络服务以现行的状态重新配置网络服务,从而能连上网络。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LXC(Linux Containers)和LXD(Linux Container Daemon)是一种轻量级虚拟化技术,常用于在Linux系统中创建和管理容器。以下是一些常用的LXC/LXD配置: 1. 安装LXD:使用适合你的Linux发行版的包管理工具进行安装。 2. 初始化LXD:运行`sudo lxd init`命令来初始化LXD。在初始化过程中,你可以设置默认的存储池、络设置、镜像源等。 3. 创建容器:使用`lxc launch`命令创建一个新容器。例如,要创建一个名为"mycontainer"的容器,可以运行`lxc launch images:ubuntu/20.04 mycontainer`。 4. 动和停止容器:使用`lxc start`命令动容器,例如`lxc start mycontainer`。使用`lxc stop`命令停止容器,例如`lxc stop mycontainer`。 5. 进入容器:使用`lxc exec`命令可以在容器内执行命令。例如,要在"mycontainer"容器内执行`ls`命令,可以运行`lxc exec mycontainer -- ls`。 6. 管理容器配置:使用`lxc config`命令可以管理容器的配置。例如,要查看容器的IP地址,可以运行`lxc config show mycontainer | grep ipv4.address`。 7. 管理络:使用`lxc network`命令可以管理LXD络。例如,要列出所有络,可以运行`lxc network list`。 8. 导出和导入容器:使用`lxc export`命令可以将容器导出到一个文件。例如,要将"mycontainer"导出到"mycontainer.tar.gz"文件,可以运行`lxc export mycontainer mycontainer.tar.gz`。使用`lxc import`命令可以从导出文件导入一个容器。 这些是LXC/LXD的一些常用配置,还有其他更高级的配置和功能可供探索。你可以使用`lxc --help`命令或参考LXD的官方文档来获取更多详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值