虚拟机桥接上网没办法解析域名

 人参与 | 时间:2026-10-17 07:10:07

虚拟机桥接模式上不了网,虚拟浏览器直接甩出一句“DNS_PROBE_FINISHED_NO_INTERNET”,机桥接上解析但你 ping 8.8.8.8 又是网没通的。这个现象太典型了——网络层能走通,办法域名解析却卡死。域名问题不在虚拟机网卡,虚拟也不在宿主机防火墙,机桥接上解析十有八九是网没 DNS 配置没跟着桥接模式走。

桥接的办法本质是让虚拟机从物理网络里直接拿一个独立 IP,跟宿主机平起平坐。域名宿主机通常靠 DHCP 自动获取 IP 和 DNS,虚拟虚拟机桥接后如果 DHCP 没正常跑完,机桥接上解析或者手动配了静态 IP 却忘了写 DNS,网没就会变成“有 IP 没解析”。办法我见过最离谱的域名一次,虚拟机里 /etc/resolv.conf 空空如也,连 nameserver 那一行都没有。ping 公网 IP 能通,因为路由没问题;但任何需要域名的地方全挂,连 apt 更新都报“无法解析归档地址”。

先确认一件事:虚拟机到底拿到 DNS 没有。Linux 下敲 cat /etc/resolv.conf,Windows 下 ipconfig /all 看 DNS 服务器那一栏。如果显示的是 127.0.0.1 或者 127.0.0.53,那可能是 systemd-resolved 在中间挡了一道,实际上游 DNS 没配。这种情况在 Ubuntu 18.04 之后特别常见,桥接后 systemd-resolved 仍然监听本地回环,但没把物理网络的 DNS 转发进来。

另一个高频坑是 VMware 的虚拟网络编辑器。桥接模式默认是“自动”,自动选择物理网卡。如果你宿主机有多个网卡——比如一个有线一个无线——虚拟机可能桥到了那个没连外网的网卡上。结果就是虚拟机拿到了一个 169.254 开头的自动私有地址,或者干脆没拿到 IP。这时候别说 DNS,网关都不通。手动指定桥接到正确的物理网卡,问题直接消失。

还有一种情况:宿主机用的是公司内网,DNS 服务器是内网地址,比如 10.0.0.2 这种。虚拟机桥接后 DHCP 拿到的 DNS 也是内网地址,但虚拟机里的防火墙或者 SELinux 策略把 UDP 53 端口挡了。我遇到过一次 CentOS 7 桥接后 DNS 死活不通,dig @10.0.0.2 google.com 超时,但 dig @8.8.8.8 google.com 正常。最后发现是 firewalld 默认区域把 DNS 请求拦了。关掉 firewalld 或者放行 53 端口,立刻恢复。

排查顺序其实很直接。先 ping 8.8.8.8,通的话说明三层没问题,直接查 DNS。再 nslookup baidu.com 8.8.8.8,如果指定外部 DNS 能解析,那就是本地 DNS 配置错了。如果指定了也不行,检查虚拟机网卡是不是真的桥接到了正确的物理网络。最后看宿主机能不能解析——宿主机自己都上不了网,虚拟机桥接当然跟着废。

修的时候别只盯着虚拟机。桥接模式下虚拟机和宿主机在同一个二层网络里,宿主机能用的 DNS,虚拟机也应该能用。把宿主机的 DNS 地址抄进虚拟机,或者干脆在虚拟机里手动写 nameserver 8.8.8.8 和 nameserver 114.114.114.114,重启网络服务。大多数情况下,这一行就解决问题。如果重启后 /etc/resolv.conf 被覆盖,那得去改 /etc/systemd/resolved.conf 或者 /etc/network/interfaces 里的 DNS 配置,别跟临时文件较劲。

桥接上网解析不了域名,核心就一句话:IP 通了不代表 DNS 通了。桥接只是把虚拟机扔进物理网络,DNS 还得自己配。别被“桥接”两个字骗了,它不负责帮你找域名。

顶: 11936踩: 976