Ubuntu 22.04 LTS配置桥接网络后重启,主机DNS无法正常工作
Ubuntu 22.04 LTS配置桥接网络后重启,主机DNS无法正常工作
我之前碰到过一模一样的情况,桥接网络配置好后虚拟机跑的没问题,但主机重启后DNS就罢工了,大概率是NetworkManager和systemd-resolved的联动出了点小问题,咱们一步步来排查解决:
1. 先搞清楚当前DNS的实际状态
先运行这条命令看看系统现在用的DNS服务器是啥,以及各个接口的DNS配置:
resolvectl status
重点看桥接接口(比如br0)的DNS服务器字段,如果是空的,或者显示的不是你预期的地址,那问题就出在这儿了。另外也留意下原来的物理网卡(比如enp0s3)的状态,桥接后物理网卡应该是作为桥的从属接口,不该单独有DNS配置。
2. 检查并修复桥接接口的DNS配置
用nmcli查看桥接连接的详细配置:
nmcli connection show br0
找到ipv4.dns和ipv4.dns-search这两项,如果是空的,说明DNS配置没生效。咱们手动加上常用的公共DNS试试:
# 设置DNS服务器,这里用谷歌的,你也可以换成自己的内网DNS nmcli con mod br0 ipv4.dns "8.8.8.8 8.8.4.4" # 重启桥接连接让配置生效 nmcli con up br0
如果你的网络是用DHCP自动获取的,也可以确保桥接接口的IPv4方式是自动:
nmcli con mod br0 ipv4.method auto nmcli con up br0
这样系统应该会从路由器自动获取DNS地址。
3. 确保systemd-resolved和NetworkManager配合正常
Ubuntu默认是用systemd-resolved管理DNS的,但有时候配置会乱掉:
- 先检查
/etc/nsswitch.conf里的hosts配置,确保resolve在dns前面,这样系统会优先用resolved的配置:
找到sudo nano /etc/nsswitch.confhosts:那一行,改成:hosts: files mdns4_minimal [NOTFOUND=return] resolve dns myhostname - 然后检查
/etc/resolv.conf的软链接是否正确,它应该指向systemd-resolved的配置文件:
如果不是指向ls -l /etc/resolv.conf/run/systemd/resolve/stub-resolv.conf,就重新建立软链接:sudo rm /etc/resolv.conf sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf - 最后重启相关服务:
sudo systemctl restart systemd-resolved NetworkManager
4. 清理物理网卡的残留DNS配置
桥接后物理网卡应该只作为桥的从属,不能单独配置IP和DNS。用nmcli查看物理网卡的配置:
nmcli connection show enp0s3 # 替换成你的物理网卡名
如果发现ipv4.dns有配置,把它清空:
nmcli con mod enp0s3 ipv4.dns "" nmcli con up enp0s3
5. 极端情况:重置NetworkManager配置
如果上面的步骤都没用,可能是之前的NetworkManager配置有冲突。先备份一下现有配置,然后重置:
# 备份配置文件 sudo cp -r /etc/NetworkManager/system-connections/ ~/nm-backup/ # 删除现有配置 sudo rm -rf /etc/NetworkManager/system-connections/ # 重启NetworkManager sudo systemctl restart NetworkManager
然后重新按照指南配置桥接网络,应该就能解决问题了。
备注:内容来源于stack exchange,提问作者Offspring
相关产品推荐
相关产品推荐

