综合

vmware能ping通虚拟机解析不了域名

时间:2010-12-5 17:23:32  作者:综合   来源:焦点  查看:  评论:0
内容摘要:昨天下午,我正给新搭的CentOS虚拟机配环境。`ping www.baidu.com` 直接报 `Name or service not known`,但 `ping 220.181.38.148`

昨天下午,虚拟析我正给新搭的机解CentOS虚拟机配环境。`ping www.baidu.com` 直接报 `Name or 域名service not known`,但 `ping 220.181.38.148` 却通得飞快。虚拟析VMware里网络适配器选的机解NAT模式,宿主机能正常上网,域名虚拟机也能拿到IP——就是虚拟析DNS解析卡壳。

这类问题八成出在 `/etc/resolv.conf` 上。机解我打开一看,域名里面只有一行 `nameserver 192.168.1.1`,虚拟析这是机解宿主机路由器的地址。NAT模式下,域名VMware的虚拟析虚拟网卡走的是VMnet8,默认网关应该是机解 `192.168.xxx.2`(VMware提供的NAT设备),DNS服务器也应该指向它。域名直接填宿主机的路由器IP,虚拟机的DNS请求被NAT转发后,宿主机路由器可能压根不认这个来源。

改法很简单:把 `resolv.conf` 里的nameserver改成 `192.168.xxx.2`(具体看`ip route show`里的default网关),或者干脆填 `8.8.8.8`。但这里有个坑——如果你用的是DHCP自动分配,重启网络服务或重启虚拟机,这个文件会被覆盖回默认值。我试过改完立刻生效,但一重启就恢复原样,得去改 `/etc/sysconfig/network-scripts/ifcfg-ens33` 里的 `DNS1=192.168.xxx.2`,再 `systemctl restart network` 才能永久生效。

还有一种情况,如果你在VMware里配置了自定义DNS(比如桥接模式连公司内网),那问题可能出在虚拟机防火墙。我同事遇到过,`systemctl stop firewalld` 后DNS立刻正常,最后发现是firewalld默认规则把UDP 53端口挡了。用 `firewall-cmd --add-service=dns --permanent` 就能解决,不用整个关掉防火墙。

另外,别忽略 `/etc/nsswitch.conf`。有个老哥折腾了半天,最后发现是hosts行里没有 `dns`,系统压根没走DNS查询。正常应该是 `hosts: files dns`,如果被改成 `files` 开头,那就只查hosts文件,不查DNS。

最烦人的是Windows宿主机上VMware的虚拟网络服务没启动。去服务管理器看 `VMware NAT Service` 和 `VMware DHCP Service`,如果停了,虚拟机根本拿不到正确的DNS转发。启动后记得把虚拟机的网卡禁用再启用,或者直接重启虚拟机。

最后说个偏方——如果你只是临时测试,直接在 `/etc/hosts` 里加一行 `220.181.38.148 www.baidu.com` 也能糊弄过去。但这不是长久之计,域名一多就崩。老老实实把DNS配置理顺,VMware里ping通域名才算真正通。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap