ZoyaPatel

从用户角度Linux 服务端,分析域名DNS解析过程

SohaniSharma

## 从用户角度Linux 服务端,分析域名DNS解析过程、浏览器、本地系统、本地网络域名服务器、网络上根域名服务器{alertInfo}


由人工编写审核,非AI生成内容,请放心观看!

{getToc} $title={文章目录}

DNS查询过程
从用户角度Linux 服务端,分析域名DNS解析过程
DNS解析

其中涉及的外部设备:本机的上的DNS解析器,本地网络中的域名服务器,外部网络上的域名架构设备(根域名、主域名、.....) 最后返回结果。

浏览器缓存——》系统hosts文件——》本地DNS解析器缓存——》本地域名服务器(本地配置区域资源、本地域名服务器缓存)——》根域名服务器——》主域名服务器——》下一级域名域名服务器 客户端——》本地域名服务器(递归查询) 本地域名服务器—》DNS服务器的交互查询是迭代查询。

我们一步一步解析:一般浏览器会有一块缓存,你根据地址浏览器为了加快访问,会从缓存拿到你访问过的资源。这是浏览器性能模式,或者加快资源的处理模式,本质和DNS解析没有关系,但是会加速访问。

 ## 注意这个过程不是域名的架设的反向过程,这是另外反方向的过程,所以的不涉及这些{alertInfo}

Hosts文件

早期网络的用于主机和IP地址的文件,也就是我们常见的主机地址,然后将主机地址与IP 查询下,就获取了对应的IP地址了。

位置:/etc/hosts

静态映射文件,用于将主机名(域名)映射到IP地址

cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       ubuntu-2204.linuxvmimages.local ubuntu-2204

主机名称比如: ubuntu-2204.linuxvmimages.local ubuntu-2204 都可以访问127.0.1.1

域名解析:当你访问一个域名时,系统会首先查找 hosts 文件中是否有该域名对应的 IP 地址。如果有,系统直接使用该 IP 地址,而无需请求 DNS 服务器。

本地DNS解析器缓存:

常见的本地DNS解析器:

systemd-resolved:现代Linux发行版中,systemd负责DNS解析,它会将DNS解析结果缓存到内存中。

dnsmasq:一个轻量级的DNS和DHCP服务器,通常用在家庭或小型企业环境,提供DNS缓存功能。

nscd(Name Service Cache Daemon):提供DNS查询缓存服务,有时在较老的系统中使用。

你可以默认理解就是:systemd-resolved

resolvectl status
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2 (ens33)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.86.2
DNS Servers: 192.168.86.2
DNS Domain: localdomain
  • 你当前的 DNS 配置是通过本地 DNS 解析器(systemd-resolved)来进行域名解析的,解析请求通过 192.168.86.2 进行。

  • 如果想更改 DNS 设置,可以修改 /etc/systemd/resolved.conf 文件,或者直接修改网络接口的配置文件(如 /etc/netplan/*.yaml)以更改 DNS 服务器。

/etc/resolv.conf 常见的这个玩意,是个老旧的版本,你可以不用管他,现在使用systemd-resolved 已经实现了向下兼容这个东西。

/etc/systemd/resolved.conf 是系统级别的配置文件,用于设置 DNS 解析的行为,而 /etc/resolv.conf 主要是配置 DNS 服务器的地址。systemd-resolved 会根据 /etc/systemd/resolved.conf 的配置来生成 /etc/resolv.conf 的内容。

手动管理 DNS 配置,可以禁用 systemd-resolved,并直接编辑 /etc/resolv.conf

systemd-resolved:在启用了 systemd-resolved 服务的系统上,/etc/resolv.conf 可能并不手动编辑,而是由 systemd-resolved 动态管理。这意味着修改 /etc/resolv.conf 可能无效,任何修改都会在 systemd-resolved 重新生成该文件时被覆盖。

resolvectl dns # 查看DNS配置
sudo resolvectl flush-caches #刷新缓存

## 查看对应域名解析的的地址和端口
netstat -ltnp |grep 127.0.0.53
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      652/systemd-resolve

本地域名服务器

常常翻译为:一般是一个网络中用于的域名的服务器,对于大型网络,一般会有一个专门的域名服务,对于家庭网络等,一般会有路由器来承担,使得也就是你家的路由器来承担。比如:他还承担了DHCP服务。也就是家庭网络由于有了路由器是一个基础的网络:配置了路由器、交换机、DHCP服务器、DNS服务器,这些都有路由器承担了。

如何查询DNS记录:

nslookup [www.example.com](<http://www.example.com/>)
Server:         127.0.0.53
Address:        127.0.0.53#53
Non-authoritative answer:
[www.example.com](<http://www.example.com/>) canonical name = [www.example.com-v4.edgesuite.net](<http://www.example.com-v4.edgesuite.net/>).
[www.example.com-v4.edgesuite.net](<http://www.example.com-v4.edgesuite.net/>)       canonical name = [a1422.dscr.akamai.net](<http://a1422.dscr.akamai.net/>).
Name:   [a1422.dscr.akamai.net](<http://a1422.dscr.akamai.net/>)
Address: 23.56.227.78
Name:   [a1422.dscr.akamai.net](<http://a1422.dscr.akamai.net/>)
Address: 23.56.227.69
Name:   [a1422.dscr.akamai.net](<http://a1422.dscr.akamai.net/>)
Address: 2600:1413:5000:3::1736:7690
Name:   [a1422.dscr.akamai.net](<http://a1422.dscr.akamai.net/>)
Address: 2600:1413:5000:3::1736:7695

dig www.example.com

; <<>> DiG 9.18.30-0ubuntu0.22.04.2-Ubuntu <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46073
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.example.com.               IN     A

;; ANSWER SECTION:
www.example.com.        5       IN     CNAME   www.example.com-v4.edgesuite.net.
www.example.com-v4.edgesuite.net. 5 IN CNAME   a1422.dscr.akamai.net.
a1422.dscr.akamai.net.  5       IN     A       23.220.68.32
a1422.dscr.akamai.net.  5       IN     A       23.220.68.14

;; Query time: 34 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Mon Sep 22 01:20:46 EDT 2025
;; MSG SIZE rcvd: 154

电脑接入网络:如何获取本地网路中的本地域名解析服务器的地址这就是DHCP,电脑只要接入网络,会自动有DHCP与他握手配置(一般情形)。

查询名称服务器记录(NS 记录)

nslookup -type=NS example.com
Server:         127.0.0.53
Address:        127.0.0.53#53
Non-authoritative answer:
example.com     nameserver = a.iana-servers.net.
example.com     nameserver = b.iana-servers.net.

返回结果:返回负责管理某个域名的 DNS 服务器的列表

host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 180.101.51.73
www.a.shifen.com has address 180.101.49.44
www.a.shifen.com has IPv6 address 240e:e9:6002:1fd:0:ff:b0e1:fe69
www.a.shifen.com has IPv6 address 240e:e9:6002:1ac:0:ff:b07e:36c5

这些命令查询的结果都是一致的,获取域名和对应的别名以及对应的IPv4/IPv6地址。 不同的是:有的会展示不同域名是如何被展示出来的!

版权声明:
感谢您的阅读,除非文中已经注明来源网站,否则均为理科生网原创内容,转载时请务必以超链接(而非纯文本链接)标注来源于理科生网及本文完整链接,感谢!{alertInfo}
Ahmedabad
Kolkata
Hyderabad
后一页 Bangalore 前一页

Random Manga

Ads

نموذج الاتصال