【信创】全面揭秘Linux操作系统中的DNS解析流程 _ 统信 _ 麒麟 _ 方德

289 篇文章 5 订阅
289 篇文章 7 订阅

原文链接:【信创】全面揭秘Linux操作系统中的DNS解析流程 | 统信 | 麒麟 | 方德
Hello,大家好啊!今天给大家带来一篇关于Linux操作系统上DNS解析的第一篇文章。DNS(Domain Name System,域名系统)是互联网的重要组成部分,它负责将人类易于理解的域名转换为计算机可以识别的IP地址。在Linux系统中,DNS解析是网络连接的重要环节。本文将为大家详细介绍DNS解析的基本原理和在Linux系统中的配置方式。欢迎大家分享转发,点个关注和在看吧!

什么是DNS解析?
DNS解析是指将域名转换为对应的IP地址的过程。当您在浏览器中输入一个域名(例如www.example.com)时,计算机会通过DNS查询获取该域名的IP地址,然后通过该IP地址访问目标服务器。

1.DNS解析的基本工作原理
DNS解析分为多个步骤,每个步骤对应不同类型的DNS服务器:

本地缓存查询:操作系统首先查询本地缓存,看是否已经解析过该域名并保存了结果。如果缓存中有对应的记录,DNS解析到此结束。

主机文件查询:如果本地缓存中没有找到对应记录,系统会查询/etc/hosts文件。这个文件可以手动配置常用域名与IP地址的映射。

DNS服务器查询:如果/etc/hosts文件中也没有找到对应记录,系统会向配置的DNS服务器发送查询请求。

递归查询:DNS服务器会先查询根域名服务器(Root Server),然后依次查询顶级域名服务器(TLD Server)和权威域名服务器(Authoritative Server),最终获得目标域名的IP地址。

返回结果并缓存:解析完成后,DNS服务器将IP地址返回给请求方,并在本地缓存中保存该结果,方便后续查询。

2.配置文件
1)/etc/resolv.conf
这个文件指定了系统使用的DNS服务器。典型的内容包括:

nameserver 8.8.8.8
nameserver 8.8.4.4

多个nameserver表示使用多个DNS服务器,系统会按照顺序尝试。

pdsyw@pdsyw-PC:~/Desktop$ cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 223.5.5.5
nameserver 223.6.6.6
pdsyw@pdsyw-PC:~/Desktop$ 

2)/etc/hosts
用于手动设置主机名与IP地址的映射,优先级高于DNS服务器。例如:

127.0.0.1   localhost
192.168.1.10 myserver.local
pdsyw@pdsyw-PC:~/Desktop$ cat  /etc/hosts
127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
pdsyw@pdsyw-PC:~/Desktop$ 

3)/etc/nsswitch.conf
该文件定义了系统解析主机名的顺序。通常,hosts行看起来像这样:

hosts: files dns

这表示先查找/etc/hosts,再查找DNS服务器。

pdsyw@pdsyw-PC:~/Desktop$ cat /etc/nsswitch.conf 
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         files udcp
group:          files [SUCCESS=merge] udcp
shadow:         files udcp
gshadow:        files

hosts:          files myhostname dns wins 
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis
pdsyw@pdsyw-PC:~/Desktop$ 

/etc/nsswitch.conf文件中,配置了Linux系统的名称服务开关(Name Service Switch, NSS)功能。这个文件决定了系统如何解析各种名称服务,如用户密码、组、主机名等。在这个文件中可以看到,解析主机名时,系统按以下顺序查询:

files: 查询/etc/hosts文件。
myhostname: 通过本地主机名(hostname)进行解析。
dns: 查询DNS服务器。
wins: 使用WINS服务器(通常用于Windows网络)。

3.DNS解析工具
1)nslookup
查询DNS记录的工具,适用于检查特定域名的解析情况。

pdsyw@pdsyw-PC:~/Desktop$ nslookup pdsyw.cn
Server:         223.5.5.5
Address:        223.5.5.5#53

Non-authoritative answer:
Name:   pdsyw.cn
Address: 106.15.47.80

pdsyw@pdsyw-PC:~/Desktop$ 

输出分析
Server 信息:

Server:         223.5.5.5
Address:        223.5.5.5#53

这是您当前使用的DNS服务器(阿里云公共DNS)的信息。DNS服务器的IP地址是 223.5.5.5,该服务器使用标准的DNS端口号 53。
Non-authoritative answer(非权威回答):

Non-authoritative answer:
Name:   pdsyw.cn
Address: 106.15.47.80

Non-authoritative answer 表示该回答来自缓存的DNS记录或是通过递归查询得到的结果,而不是直接从该域名的权威DNS服务器获得的。
Name: pdsyw.cn 是您查询的域名。
Address: 106.15.47.80 是该域名解析到的IP地址。
解析结果
查询的结果显示,pdsyw.cn 域名解析到的IP地址是 106.15.47.80。由于是非权威回答,表明这可能是通过DNS服务器的缓存获得的,通常这个解析是正确且最新的,但不一定直接来自权威DNS服务器。

2)dig
比nslookup更为强大的DNS查询工具,能够提供更多的解析信息,例如返回路径中的每个DNS服务器的信息。

pdsyw@pdsyw-PC:~/Desktop$ dig pdsyw.cn

; <<>> DiG 9.11.5-P4-deepin1+sign-Uos <<>> pdsyw.cn
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36010
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1408
;; QUESTION SECTION:
;pdsyw.cn.                      IN      A

;; ANSWER SECTION:
pdsyw.cn.               600     IN      A       106.15.47.80

;; Query time: 46 msec
;; SERVER: 223.5.5.5#53(223.5.5.5)
;; WHEN: 三 8月 21 20:27:46 CST 2024
;; MSG SIZE  rcvd: 53

pdsyw@pdsyw-PC:~/Desktop$ 

输出解析
HEADER 部分:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36010
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
opcode: QUERY 表示这是一个标准的DNS查询请求。
status: NOERROR 表示查询成功,未发生错误。
id: 36010 是查询的标识符,用于匹配查询与响应。
flags: qr rd ra 表示:
qr:查询响应(Query Response)。
rd:递归查询期望(Recursion Desired)。
ra:递归查询可用(Recursion Available)。

QUESTION SECTION:

;; QUESTION SECTION:
;pdsyw.cn.                      IN      A

这部分显示了查询的内容。您请求了 pdsyw.cn 域名的 A 记录,即查询该域名对应的IPv4地址。
ANSWER SECTION:

;; ANSWER SECTION:
pdsyw.cn.               600     IN      A       106.15.47.80

这里显示了DNS服务器返回的解析结果。

pdsyw.cn.:这是被查询的域名。
600:这是该记录的TTL(生存时间),单位为秒,表示该记录在缓存中可以保存600秒。
IN A:表示这是一个IPv4地址记录。
106.15.47.80:这是解析到的IP地址。

其他信息:

;; Query time: 46 msec
;; SERVER: 223.5.5.5#53(223.5.5.5)
;; WHEN: 三 8月 21 20:27:46 CST 2024
;; MSG SIZE  rcvd: 53
Query time: 46 msec:查询耗时46毫秒。
SERVER: 223.5.5.5#53:这是用于查询的DNS服务器及其端口号。
WHEN: 三 8月 21 20:27:46 CST 2024:查询的时间。
MSG SIZE rcvd: 53:返回消息的大小为53字节。

这次查询确认了 pdsyw.cn 的 A 记录,解析到的IP地址是 106.15.47.80。查询状态为 NOERROR,表明没有遇到任何问题。TTL值为600秒,意味着这个结果在DNS缓存中最多保留10分钟。

3)host
一个简单的命令行工具,用于查找主机名的IP地址或反向查找。

pdsyw@pdsyw-PC:~/Desktop$ host pdsyw.cn
pdsyw.cn has address 106.15.47.80
pdsyw@pdsyw-PC:~/Desktop$ 

输出解释
pdsyw.cn has address 106.15.47.80: 这表示 pdsyw.cn 域名解析到的IPv4地址是 106.15.47.80。
host 命令提供了一个简化的DNS查询结果,适合快速查看一个域名的IP地址。

与其他工具的对比
相比 nslookup 和 dig,host 的输出更加简洁,适合不需要太多技术细节的场景。对于快速验证域名解析,host 是一个方便的工具,而 dig 和 nslookup 则适用于需要详细解析信息或诊断问题的场合。

通过本文的介绍,您应该已经了解了Linux操作系统中DNS解析的基本原理及其配置方式。掌握DNS解析的工作机制和相关配置,不仅可以帮助您解决网络连接问题,还能提升网络管理的效率。如果您觉得这篇文章有用,请分享和转发,同时别忘了点个关注和在看,以便未来获取更多实用的技术信息和解决方案。感谢大家的阅读,我们下次再见!

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹏大圣运维

编写不易,还请支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值