解析查找顺序 默认情况下,使用host、dig、nslookup时,会默认使用dns进行解析
但是当使用ping、curl时,会优先使用/etc/hosts中的解析
这是因为**/etc/nsswitch.conf**这个文件中定义了查找的顺序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /etc/nsswitch.conf shadow: files hosts: dns files myhostname aliases: files ethers: files gshadow: files networks: files dns protocols: files publickey: files rpc: files 使用getent工具可以快速进行解析顺序的测试: getent hosts www.wangsheng.com 1.1.1.1 www.wangsheng.com
使用dig命令 dig命令 -t参数可以指定查找记录的类型,默认查找A记录
dig命令@ 指定dns服务器地址
dig命令 +trace选项,逐步解析,同tracert
dns默认使用53udp端口,但建议udp与tcp都放行,否则会遇到报错,因为如果响应超过 512 字节,DNS 服务器会返回一个截断标志(TC 位),客户端需改用 TCP 重新发起请求。
dig返回
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 dig www.wangsheng.com ; <<>> DiG 9.16.23-RH <<>> www.wangsheng.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27017 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 # 查找类型 ;; QUESTION SECTION: ;www.wangsheng.com. IN A # 回答记录 ;; ANSWER SECTION: www.wangsheng.com. 3600 IN A 1.1.1.1 # 查找的信息 ;; Query time: 2 msec ;; SERVER: 10.163.2.100#53(10.163.2.100) ;; WHEN: Mon Mar 31 03:28:28 EDT 2025 ;; MSG SIZE rcvd: 62 # 返回状态: NOERROR -- 正常 SERVFAIL -- 查询遇到问题(可能是DNSSEC选项) NXDOMAIN -- 查询无结果 REFUSED -- 查询拒绝(可能网段被拒绝) # flags: aa -- 表示是权威服务器 ra -- 表示支持递归查询 qr -- 表示是一个响应 tc -- 响应过长被截断 rd -- 客户端请求递归查询 ad -- 表示通过DNSSEC cd -- 表示禁用DNSSEC
常见问题 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1.DNS轮询: 将一个域名解析为3个不同的IP 以round-robin的方式来进行轮询 如果其中一个IP挂了,就会导致访问有1/3无法正常进行连接 2.缺少反向解析记录: 很多网络服务会使用DNS传入的连接来进行反向查找 比如sshd会对客户端IP进行查找,如果没有反向解析记录就会很慢 比如邮件服务器 3.通过通配符扩大相应范围: 仅仅给一个成功的解析,说明DNS服务器没挂 wangsheng.com IN A 10.200.2.100 ↓ *.wangsheng.com IN A 10.200.2.100 4.出现两次域名 是因为结尾没有加点(.) 比如www.wangsheng.com 会被解析为www.wang.sheng.com.sheng.com. 5.CNAME孤儿/循环 孤儿--没有目标别名,会返回NXDOMAIN 循环--互相指向别名,会返回NOERROR 6.同DNS-zone内多主NS 在DNS服务器master-slave结构中 如果发生脑裂,就会出现双主 此时如果解析,就会返回多个结果