安装了虚拟机,发现不能 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 network 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 命令。
注: 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
|