【信创】全面揭秘Linux操作系统中的DNS解析流程|统信|麒...

鹏大搞运维 2024-08-23 15:51:40

原文链接:

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解析的工作机制和相关配置,不仅可以帮助您解决网络连接问题,还能提升网络管理的效率。如果您觉得这篇文章有用,请分享和转发,同时别忘了点个关注和在看,以便未来获取更多实用的技术信息和解决方案。感谢大家的阅读,我们下次再见!

0 阅读:0

鹏大搞运维

简介:感谢大家的关注