ping: www.baidu.com: Name or service not known解决方案

本文档介绍了如何解决Linux系统下ping命令无法解析域名的问题。通过检查并编辑`/etc/resolv.conf`文件,添加Google公共DNS,然后修改`/etc/sysconfig/network-scripts/ifcfg-ens33`配置文件,将`ONBOOT`设置为`yes`,成功修复了网络连接,使得能够正常ping通www.baidu.com。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[tutuzi@localhost ~]$ ping www.baidu.com
ping: www.baidu.com: Name or service not known

解决方案如下:

  • 先检查下以下文件内是否正确配置了 DNS
    sudo vim /etc/resolv.conf
    
    没有正确配置可以添加如下代码:
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    保存退出后再次尝试,如果还是不能解决 ~ 就接下往下
  • 尝试以下修改 (ONBOOT=no # 改为 yes):
    sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
    
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=dhcp
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens33
    UUID=66a3b565-7c0e-4919-b905-e65582dea05d
    DEVICE=ens33
    ONBOOT=yes # 改为 yes
    ~                                                                               
    ~                                                                               
    ~                                                                               
    ~                                                                               
    ~                                                                               
    ~                                                                               
    ~                                                                               
    ~                                                                               
    "/etc/sysconfig/network-scripts/ifcfg-ens33" 15L, 280C        15,1          All
    
  • 最终可以解决问题:
    [tutuzi@localhost ~]$ ping www.baidu.com
    PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
    64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=128 time=8.56 ms
    64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=128 time=8.66 ms
    64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=128 time=8.38 ms
    64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=4 ttl=128 time=7.49 ms
    
<think>好的,用户的问题是虚拟机无法解析域名,具体来说,当在虚拟机中尝试ping www.baidu.com时出现“name or service not known”错误。我需要根据用户提供的参考信息,即隔离网络拓扑的情况,来分析可能的原因并提供解决方案。 首先,根据引用[^1],隔离网络拓扑下,虚拟机的网络连接被断开,无法访问外部网络,但宿主机可以通过virbr0的IP(192.168.122.1)访问虚拟机。这种情况下,虚拟机通常使用NAT模式连接,所以DNS解析可能存在问题。 接下来,我需要考虑常见的导致DNS解析失败的原因。首先检查虚拟机的网络配置是否正确,是否能够获取到DNS服务器地址。如果使用NAT模式,DNS通常由宿主机或虚拟网络管理器(如libvirt的dnsmasq)提供。需要查看虚拟机内的/etc/resolv.conf文件是否配置了正确的DNS服务器,比如192.168.122.1,这是libvirt默认的dnsmasq服务地址。 然后,检查dnsmasq服务是否在宿主机上正常运行。如果服务未启动,虚拟机就无法通过该服务解析域名。此外,虚拟机的防火墙设置也可能阻止DNS查询,需要检查iptables或firewalld的配置,确保53端口(DNS)没有被阻止。 如果问题仍然存在,可能需要检查宿主机的网络连接,确保宿主机本身可以解析域名,并且虚拟网络接口virbr0配置正确。另外,临时修改DNS设置,如将/etc/resolv.conf中的DNS服务器更改为公共DNS(如8.8.8.8),测试是否能解析,这有助于确定是否是DNS服务器的问题。 最后,考虑重新启动网络服务或虚拟机,有时候服务重启可以解决临时的配置问题。如果所有步骤都尝试过但问题依旧,可能需要检查更深入的网络配置或查看日志文件(如/var/log/messages或journalctl)来排查错误。 总结起来,解决步骤应包括检查网络模式、DNS配置、服务状态、防火墙设置,以及可能的DNS覆盖问题。需要逐步排除每个可能的原因,确保每个环节都正常运作。</think>### 虚拟机无法解析域名的解决方案 #### 1. 检查虚拟机网络模式 虚拟机无法解析域名通常与网络配置模式相关。根据引用描述,隔离网络拓扑下虚拟机默认使用 **NAT模式**(通过virbr0网桥连接),但若配置错误可能导致DNS失效: - **操作步骤**: - 在虚拟机管理界面(如virt-manager)中确认网络模式为 **NAT**。 - 检查虚拟机内IP是否属于`192.168.122.0/24`网段(通过`ip addr`命令)。 - 尝试通过宿主机IP(`192.168.122.1`)ping虚拟机,确认基础网络连通性[^1]。 #### 2. 验证DNS配置 若网络模式正确但域名解析失败,需检查DNS服务器设置: - **操作步骤**: - 在虚拟机内执行`cat /etc/resolv.conf`,确认DNS服务器地址是否为`192.168.122.1`(libvirt默认的dnsmasq服务地址)。 - 若文件中无有效DNS,手动添加: ```bash echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf # 临时使用公共DNS ``` - 测试解析:`nslookup www.baidu.com` 或 `dig www.baidu.com`。 #### 3. 检查dnsmasq服务状态 libvirt依赖宿主机的`dnsmasq`服务为虚拟机提供DNS解析: - **操作步骤**: - 在宿主机执行`systemctl status dnsmasq`(或`libvirtd`服务),确认服务正常运行。 - 若服务未启动,尝试: ```bash sudo systemctl restart libvirtd && sudo systemctl restart dnsmasq ``` #### 4. 排查防火墙规则 虚拟机或宿主机的防火墙可能拦截DNS请求(UDP 53端口): - **操作步骤**: - **虚拟机内**:临时关闭防火墙测试(`sudo systemctl stop firewalld`或`sudo ufw disable`)。 - **宿主机**:检查iptables规则是否允许NAT转发: ```bash sudo iptables -L -n -t nat | grep 192.168.122.0/24 ``` #### 5. 处理NetworkManager覆盖DNS配置 若虚拟机使用NetworkManager,可能覆盖`/etc/resolv.conf`设置: - **操作步骤**: - 编辑NetworkManager配置文件: ```bash sudo vi /etc/NetworkManager/NetworkManager.conf ``` - 在`[main]`段添加`dns=none`以禁用DNS管理。 - 重启服务:`sudo systemctl restart NetworkManager`。 #### 6. 其他可能性 - **宿主机DNS故障**:确认宿主机可正常解析域名(如`ping www.baidu.com`)。 - **虚拟机网卡驱动异常**:在虚拟机设置中尝试更换网卡类型(如从virtio切换到e1000)。 - **重置网络配置**:重启虚拟机网络服务: ```bash sudo nmcli networking off && sudo nmcli networking on ```
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值