问题:
即使打开计算机也无法访问互联网。无法ping 通baidu.com。
错误是:
ping: baidu.com: 域名解析暂时失败
修改/etc/resolv.conf文件,添加名称服务器8.8.8.8。
然后我ping baidu.com,就ping通了,就可以成功上网了。
但是,当计算机重新启动时,/etc/resolv.conf 文件将被旧文件覆盖。
如果您想访问互联网,则需要再次更改该文件的内容。
解决问题的方法很简单。请参阅步骤7。即修改/etc/systemd/resolved.conf,添加DNS=8.8.8.8:
这是我解决问题:的过程记录。
解决问题的思路:
1. 查寻 /etc/resolv.conf, 是一个文件链接.
user@node2:~$ ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 39 四月23 17:40 /etc/resolv.conf – ./run/systemd/resolve/stub-resolv.conf
/run/systemd/resolve 目录中有两个文件在每次启动时重新生成(请参阅文件时间)
用户@node2:~$ ll /run/systemd/resolve
共8 条
drwxr-xr-x 2 systemd-resolve systemd-resolve 120 六月22 09:19 ./
drwxr-xr-x 24根根620 六月22日12:52 ./
srw-rw-rw- 1 systemd-resolve systemd-resolve 0 六月21 23:18 io.systemd.Resolve=
srw—— 1 systemd-resolve systemd-resolve 0 六月21 23:18 io.systemd.Resolve.Monitor=
-rw-r–r– 1 systemd-resolve systemd-resolve 950 六月21 23:18 resolv.conf
-rw-r–r– 1 systemd-resolve systemd-resolve 920 六月22 09:18 存根-resolv.conf
因此,这两个文件不能直接修改,因为它们在启动时重新生成,旧的内容会被覆盖。
另外,使用vim打开/etc/resolv.conf文件时,还会出现如下提示:
该文件由man:systemd-resolved(8) 管理。请不要编辑。
您可以看到该文件由systemd 解析服务管理,不应编辑。
2. 查询域名解析服务名称
user@node2:~$ systemctl status |grep resolv
systemd-resolved.service
330132 /usr/lib/systemd/systemd-resolved
888442 grep –color=自动解析
3. 查询域名解析服务状态
systemd-resolved.service – 网络名称解析
Loaded: 已加载(/usr/lib/systemd/system/systemd-resolved.service;已启用;preset: 已启用)
Active: 自2024 年6 月21 日星期五起处于活动状态(正在运行) 23:18:13 13 小时CST
Docs: man:systemd-resolved.service(8)
man:org.freedesktop.resolve1(5)
https://www.freedesktop.org/wiki/Software/systemd/writing-network-configuration-managers
https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-clients
主PID: 330132(systemd-resolve)
Status:“正在处理请求.”
任务: 1(限制: 76690)
内存: 2.8M(峰值: 3.8M)
CPU: 1.031秒
CGroup: /system.slice/systemd-resolved.service
330132 /usr/lib/systemd/systemd-resolved
6 月21 日23:18:13 node2 systemd[1]: systemd-resolved.service – 启动网络名称解析。
6 月21 日23:18:25 node2 systemd-resolved[330132]: 对于DNS 服务器202.106.46.151 使用降级功能集UDP,而不是UDP+EDNS0。
6 月22 日01:11:56 node2 systemd-resolved[330132]: 宽限期已结束,我们正在恢复DNS 服务器202.106.46.151 的完整功能集(UDP+EDNS0)。
6 月22 日01:11:56 node2 systemd-resolved[330132]: 对于DNS 服务器202.106.46.151 使用降级功能集UDP,而不是UDP+EDNS0。
6 月22 日08:16:56 node2 systemd-resolved[330132]: 宽限期已结束,我们正在恢复DNS 服务器202.106.46.151 的完整功能集(UDP+EDNS0)。
6 月22 日08:16:56 node2 systemd-resolved[330132]: 对于DNS 服务器202.106.46.151 使用降级功能集UDP,而不是UDP+EDNS0。
6 月22 日09:03:16 node2 systemd-resolved[330132]: 对于DNS 服务器202.106.195.68 使用降级功能集UDP,而不是UDP+EDNS0。
6 月22 日09:19:08 node2 systemd-resolved[330132]: 宽限期已结束,我们正在恢复DNS 服务器202.106.195.68 的完整功能集(UDP+EDNS0)。
6 月22 日09:19:08 node2 systemd-resolved[330132]: 对于DNS 服务器202.106.195.68 使用降级功能集UDP,而不是UDP+EDNS0。
6 月22 日10:33:23 node2 systemd-resolved[330132]: 对DNS 服务器2408:8000:1010:1:8 使用降级功能集UDP 而不是UDP+EDNS0。
4. 查找服务配置文件.
打开两个终端,一个用于执行监控,另一个用于重新启动systemd 解析的服务。
使用fswatch 监视/etc/systemd 目录。 -t 是打印时间,-x 是打印事件。
用户@node2:~$ fswatch -t -x /etc/systemd
接下来,停止并启动systemd-resolved 服务。
用户@node2:~$ sudo systemctl stop systemd-resolved
[sudo] 用户:的密码
user@node2:~$ sudo systemctl start systemd-resolved
观察到以下事件:
用户@node2:~$ fswatch -t -x /etc/systemd
2024 年6 月22 日星期六01:03:41 PM CST /etc/systemd IsDir
2024 年6 月22 日星期六01:03:41 PM CST /etc/systemd 平台特定
2024 年6 月22 日星期六01:03:42 PM CST /etc/systemd/resolved.conf 平台特定
2024 年6 月22 日星期六01:03:42 PM CST /etc/systemd/resolved.conf 平台特定
2024 年6 月22 日星期六01:03:42 PM CST /etc/systemd/resolved.conf 平台特定
Sat 22 Jun 2024 01:03:42 PM CST /etc/systemd/resolved.conf PlatformSpecific 指示对/etc/systemd/resolved.conf 文件的访问。这仅意味着打开服务将访问此文件。
搜索网络资源以查看是否需要手动修改/etc/systemd/resolved.conf 文件。
5. 编辑服务配置文件 /etc/systemd/resolved.conf
当你打开这个文件时,你会看到它是一个空文件,只有几行,全部用#号注释,并去掉第一行的DNS注释号。
上面写着:
DNS=8.8.8.8
修改此文件后,重新启动服务。
systemctl restart systemd-resolved
启用systemctl systemd-resolved
启动时,/run/systemd/resolve/resolv.conf 文件将相应地重新生成。
确认
重新启动机器并检查/run/systemd/resolve 目录中新生成的文件。
用户@node2:~$ ll /run/systemd/resolve
共8 条
drwxr-xr-x 2 systemd-resolve systemd-resolve 120 六月22 13:21 ./
drwxr-xr-x 24根根620 6月22日13:21 ./
srw-rw-rw- 1 systemd-resolve systemd-resolve 0 六月22 13:21 io.systemd.Resolve=
srw—— 1 systemd-resolve systemd-resolve 0 六月22 13:21 io.systemd.Resolve.Monitor=
-rw-r–r– 1 systemd-resolve systemd-resolve 969 六月22 13:21 resolv.conf
-rw-r–r– 1 systemd-resolve systemd-resolve 920 六月22 09:18 存根-resolv.conf
查看内容:stub-resolv.conf不变
添加了resolv.conf 内容:
名称服务器8.8.8.8
6. 结论: 其实只要一步修改
修改/etc/systemd/resolved.conf,添加DNS=8.8.8.8。
:上电后,验证是否可以ping通baidu.com。
7. systemd-resolved 服务起到了什么作用?
在没有systemd-resolved 服务的机器上,域名解析如下:
1、从DNS缓存中查找域名与IP的映射关系。
2、从/etc/hosts中查找域名与IP的映射关系。
3. 从/etc/resolv.conf中找到DNS服务器并发起解析请求。
/etc/resolv.conf 的内容通常是:
名称服务器8.8.8.8
在具有systemd解析服务的机器上,域名解析如下:
1、从DNS缓存中查找域名与IP的映射关系。
2、从/etc/hosts中查找域名与IP的映射关系。
3. 从/etc/resolv.conf中找到DNS服务器并发起解析请求。
然而此时/etc/resolv.conf的内容如下:
名称服务器127.0.0.53
选项edns0 trust-ad
确保所有本地解析请求都发送到127.0.0.53。
然后,systemd-resolved 根据/run/systemd/resolve/resolv.conf 中的DNS 服务器发起请求。
/run/systemd/resolve/resolv.conf 记录实际的后端DNS 服务器。
systemd-resolved 是systemd 的组件,负责管理和缓存DNS 解析请求。提供监听127.0.0.53 的本地DNS 服务器,可以代理和缓存DNS 查询。
Note : 还有一个问题是/etc/resolv.conf 在centos7 上被重置。
1. 查看 /etc/resolv.conf 文件
$ 猫/etc/resolv.conf
由#NetworkManager 生成
可以看到它是由NetworkManager生成的。
$ systemctl status |grep -i 网络
发现
NetworkManager.Service
954 /usr/sbin/NetworkManager –no-daemon
2. 编辑NetworkManager 的配置文件
vim /etc/NetworkManager/NetworkManager.conf
在[main]下添加dns=8.8.8.8,如下例所示。
[主要的]
域名=8.8.8.8
3. 重启网络服务验证.
$ systemctl restart NetworkManager.service
$猫/etc/resolv.conf
由#NetworkManager 生成
名称服务器8.8.8.8
我发现名称服务器已添加到/etc/resolv.conf 中,问题已解决。
参考:
https://blog.csdn.net/hejinjing_tom_com/article/details/134310580
#以上有关Ubuntu 20.04 DNS解析原理及resolv.conf覆盖问题的信息仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91516.html