我在 Arch 系统上安装了 Lxd(通过软件包安装,而不是 snapd),昨天升级后我重启了系统,发现虚假域名 .lxd 的名称解析停止工作;dns 由 dnsmasq 在 10.0.10.1 上提供,由 lxc-net 服务启动。dnsmasq 还用于为网络上的其他主机提供内部域,并且运行良好。我netstat -lnp
可以看到 dnsmasq 的两个实例都绑定在正确的地址上,但是:
- 当我从另一个容器 ping 一个容器(例如
ping proxy.lxd
)时,主机主网卡的 ip 被解析(192.168.1.63),并且 ping 可以工作。 - 当直接 ping 另一个容器的 IP 地址时,它可以工作。
- 主机上相同的命令给出
ping: proxy.lxd: Name or service unknown
。
系统的 dnsmasq(不是由 lxc-net 启动的)配置为:server=/lxd/10.0.10.1
并且直到昨天它都运行良好。
升级不涉及 dnsmasq 或 lxc-net 脚本,但 lxd 从 4.8-1 升级到 4.9-1
它似乎与 dnsmasq 有某种关系,但找不到理解和解决它的方法。
网络在容器和主机上都运行良好,只是 DNS 转到了……/dev/null 有人遇到过这种情况吗?我该如何解决?
答案1
好吧,这在某种程度上是我的错。我仍然不知道为什么会发生这种情况,但经过一番挖掘,我无法诚实地说出它之前是如何工作的。话虽如此,“解决方案”是配置系统 :)
我禁用了之前用于设置网桥的 lxc-net 脚本和dnsmasq,然后:
lxc network create bridgename
创建桥并在 lxd 中管理它;lxc network edit bridgename
对其进行配置;- 将桥接器添加到默认配置文件(
lxc profile edit default
); - 配置
/etc/dnsmasq.conf
为监听 127.0.0.1、网卡地址和桥接地址,仅为桥接地址设置 dhcp,添加local=/lxd/
以解析 container.lxd。
然后有效。