DNS解析过程
勘误一些没有说浏览器、os缓存的
- 检查浏览器缓存,有且没过期的话就用
- 如果上面失败, 就查操作系统中的DNS缓存(不一定有)和hosts文件,如果有则直接调用这个IP的映射进行访问
- 如果操作系统没有DNS缓存、或DNS缓存中没有、或 hosts文件(/etc/hosts、C:\Windows\System32\drivers\etc\hosts)中也没有,则会去找当前网络中设置的本地DNS服务器(/etc/resolv.conf),如果所找的网址在本地DNS服务器的授权管理的子域名范围内则返回解析给主机,一般的网址到这一步就可以找到对应IP了,此解析具有权威性
- 如果不在本地DNS服务器的授权管理的子域名范围内,但该服务器已经缓存了该网址的IP,那么返回缓存中的解析结果,此解析不具有权威性
- 如果本地DNS服务器的解析失败并且缓存中没有对应的映射关系。那么就有两种情况
- 本地DNS服务器开启转发模式。则向上一级请求,若上一级也不能解析就找上上一级依次类推,最终把解析返回给本地DNS,本地DNS缓存的同时返回给主机。
- 如果本地DNS服务器未开启转发模式。就去找根域名服务器,根DNS服务器收到请求返回顶级域名服务器的IP(.com、.cn、.org),本地DNS服务器再去找顶级域名服务器,顶级域名服务器返回权威服务器IP,本地DNS服务器再去权威服务器找,如此一级一级往下直到找到xx的主机。
os dns 缓存测试
[mifen@hp ~]$ systemctl status systemd-resolved
○ systemd-resolved.service - Network Name Resolution
Loaded: loaded (/usr/lib/systemd/system/systemd-resolved.service; disabled; preset: enabled)
Active: inactive (dead)
Docs: man:systemd-resolved.service(8)
man:org.freedesktop.resolve1(5)
https://www.freedesktop.org/wiki/Software/systemd/writing-network-configuration-manage>
https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-clients
[mifen@hp ~]$ systemctl status dnsmasq
○ dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; disabled; preset: disabled)
Active: inactive (dead)
Docs: man:dnsmasq(8)
[mifen@hp ~]$ systemctl status nscd
Unit nscd.service could not be found.
[mifen@hp ~]$ resolvectl
Failed to get global data: Could not activate remote peer: activation request failed: unknown unit.