Ubuntu 20.04 server不能ping,提示“Temporary failure in name resolution”的解决方法

  • Post author:
  • Post category:其他


安装了虚拟机,发现不能

ping 域名

,如

ping qq.com

,提示

Temporary failure in name resolution

。但可以 可以 ping ip, 如:

ping 8.8.8.8

问题类似于:

【Ubuntu 20.04 server: Temporary failure in name resolution (LAN only)】




1、相关尝试



1-1、修改

/etc/netplan/00-installer-config.yaml

文件

  • 修改

    sudo vim /etc/netplan/00-installer-config.yaml

    文件,新增

    nameservers

    相关配置(如下图) ,文件名不一定是 00-installer-config.yaml,每一个机器不一样,需要通过

    ll /etc/netplan/

    命令查看该路径下的文件。

    在这里插入图片描述
  • 修改该文件后,执行

    sudo netplan apply

    命令,仍不能ping,未能解决问题



1-2、创建配置文件

/etc/resolv.conf

  • 使用

    sudo vim /etc/resolv.conf

    ,打开文件后,写入后,不能保存
  • 使用

    sudo touch /etc/resolv.conf

    先创建该文件,不能创建



1-3、修改

/etc/systemd/resolved.conf

文件

该方法参考的是:

How to configure systemd-resolved and systemd-networkd to use local DNS server for resolving local domains and remote DNS server for remote domains?


  • sudo vim /etc/systemd/resolved.conf

    命令打开文件,之后修改

    [Resolve]
    DNS=8.8.8.8
    
  • 修改完后,重启相关服务,依次执行如下命令

    sudo systemctl daemon-reload
    sudo systemctl restart systemd-networkd.service
    sudo systemctl restart systemd-resolved.service
    
  • 经过如上设置,之后可以ping,但该方法重启后失效。。。再次执行 sudo systemctl restart systemd-resolved.service, 即可工作。

  • 由于为什么这么设置后可以解决

    DNS解析问题

    ,所以有了自己探索过程:

    • 1、经过测试,发现不用配置

      /etc/systemd/resolved.conf

      文件,直接键入

      sudo systemctl restart systemd-resolved.service

      命令,也能工作(不知道是否和

      /etc/netplan/00-installer-config.yaml

      文件的修改有关)
    • 2、经过测试,

      /etc/netplan/00-installer-config.yaml

      文件的修改是否都无关系,重启后,如果不能ping,执行

      sudo systemctl restart systemd-resolved.service

      命令即可
    • 3、查看域名服务器方法中,提到了

      cat /etc/resolv.conf

      方法,执行该方法,发现有该文件了(但1-2中尝试过自己创建,不能创建)

      • 此时,其原理大概清楚了,因为重启后,

        /etc/resolv.conf

        文件被删除了,所以每次重启都需要执行该命令。

        • 通过如下流程定位,可以确认,

          系统重启时,该服务未启动,可以将其加入开机启动项中

          (就可实现不用每次重启都需启动的操作)

          在这里插入图片描述



2、最终解决方案

执行

sudo systemctl restart systemd-resolved.service

命令。

  • 使用

    restart



    start

    都可

  • 系统重启时,该服务未启动,可以将其加入开机启动项中

    (就可实现不用每次重启都需启动的操作)

注:

1、该命令每次都需要重启。

2、可以通过

man systemd-resolved

,或者通过

systemd-resolved.service

了解其详细介绍



3、DNS Server查看方法

refer:

What DNS servers am I using?

查看当前 DNS相关配置(如下命令都可)


  • cat /etc/resolv.conf

  • resolvectl status

  • dig qq.com

    , 查看最后几行

    在这里插入图片描述



4、reference



版权声明:本文为donaldsy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。