1. 首页 > 快讯

网络实验:深入探析DNS迭代解析

[[396916]]

在上一节中,我们学习了DNS 服务器的工作原理。他们可以分为很多角色:

根域名服务器、顶级域名服务器、权威域名服务器、递归解析器(DNS缓存服务器)。同时我们也了解了域名迭代解析的过程。本节我们趁热打铁,安排一个实验——,一步步迭代解析test.fasionchan.com域名,加深理解。

迭代解析从根域名服务器开始。根服务器列表可以从root-servers.org获取或者通过dig命令查询:

root@netbox[~]dig.NS;DiG9.16.1-Ubuntu@10.2.66.66.NS;(1serverfound);globaloptions:+cmd;Gotanswer:-HEADER-opcode:QUERY,status:NOERROR,id:42791;flags:qrrdra;QUERY3336 01,答案:13 ,AUTHORITY:0,附加:8;OPTPSEUDOSECTION:EDNS:version:0,flags:udp:4000;QUESTIONSECTION:INNS;ANSWERSECTION:1700INNSk.root-servers.net.170 NSm.root-servers.net.1700INNSl.root-servers.net。1700INNSb.root-服务器.net.1700INNSg.root-服务器.net.1700INNSf.root-服务器.net.1700INNSd.root-服务器.net.1700INNSe.root-服务器.net.1700INNSi.root-服务器.net.1700INNSa.root-servers.net.1700INNSh.root-servers.net.1700INNSj.root-servers.net.1700INNSc.root-servers.net.附加部分:k.root-servers.net。 3282INA193 .0.14.129g.root-servers.net.2845INA192.112.36.4d.root-servers.net.118INA199.7.91.13e.root-servers.net.494INA192.203.230.10a.root-servers.net.1771INA198。 41.0 .4j.root-servers.net.3197INA192.58.128.30c.root-servers.net.1830INA192.33.4.12;查询时间:14毫秒;服务器:10.2.66.66#53(10.2.66.66);WHEN:ThuApr080第933章36001:17CST2021; MSGSIZErcvd:364root 共有13台域名服务器,编号从A到M,我们可以选择其中一台,比如A,其IP地址为198.41.0.4。

接下来我们执行dig命令向根域名服务器A发起域名解析请求:

root@netbox[~]dig@198.41.0.4test.fasionchan.com;DiG9.16.1-Ubuntu@198.41.0.4test.fasionchan.com;(1serverfound);globaloptions:+cmd;Gotanswer:-HEADER-opcode:QUERY,状态:NOERROR,id:44843;flags:qrrd;QUERY:1,ANSWER:0,AUTHORITY:13,附加:27;警告:请求递归但不可用;OPTPSEUDOSECTION:EDNS:version33 3600,flags:udp:1472;问题部分:test.fasionchan.com.INA;权威部分:com.172800INNSa.gtld-servers.net。 com.172800INNSb.gtld-servers.net.com.172800INNSc.gtld-servers.net.com.172800INNSd.gtld-servers.net.com.172800INNSe.gtld-servers.net.com.172800INNSf.gtld-servers.net. com .172800INNSg.gtld-servers.net.com.172800INNSh.gtld-servers.net.com.172800INNSi.gtld-servers.net.com.172800INNSj.gtld-servers.net.com.172800INNSk.gtld-servers.net. com .172800INNSl.gtld-servers.net.com.172800INNSm.gtld-servers.net.附加部分:a.gtld-servers.net.172800INA192.5.6.30b.gtld-servers.net.172800INA192.33.14.30c.gtld-服务器.net.172800INA192.26.92.30d.gtld-servers.net.172800INA192.31.80.30e.gtld-servers.net.172800INA192.12.94.30f.gtld-servers.net.172800INA192.35.51.30g.gtld-服务器。净.172800INA192.42.93.30h.gtld-servers.net.172800INA192.54.112.30i.gtld-servers.net.172800INA192.43.172.30j.gtld-servers.net.172800INA192.48.79.30k.gtld-服务器。网.172800INA192 .52.178.30l.gtld-servers.net.172800INA192.41.162.30m.gtld-servers.net.172800INA192.55.83.30a.gtld-servers.net.172800INAAAA2001:503:a83e33 360: 2:30b.gtld-servers.net.172800INAAAA2001:503:231d:2:30c.gtld -servers.net .172800INAAAA2001:503:83eb:30d.gtld-servers.net.172800INAAAA2001:500:856e:30e.gtld-servers.net.172800INAAAA2001333 60 502:1ca1:30f.gtld-服务器.net.172800INAAAA2001:503:d4 14:30g.gtld-服务器.net.172800INAAAA2001:503:eea3:333 6 030h.gtld-servers.net.172800INAAAA2001:502:8cc:30i。 gtld-servers.net.172800INAAAA2001:503:39c1:30j .gtld-servers.net.172800INAAAA2001:502:7094:30k.gtld-servers.net.172800INAAAA200 1:503:d2d:30l.gtld-servers.net.172800INAAAA 2001:500:d937:30m.gtld-servers.net.172800INAAAA2001:501:b1f93336 0:30;查询时间:169毫秒;服务器:198.41.0.4 53(198.41.0.4);WHEN:FriApr0908:38:10CST2021;MSGSIZErcvd:843其中,@指定目标DNS服务器的地址。

从dig命令的输出中,我们可以看到根域名服务器告诉我们.com域名应该转到a.gtld-servers.net。和其他服务器。这些服务器都是.com的顶级域名服务器,根域名服务器告诉我们它们的地址。

我们可以选择这些顶级域名服务器之一,例如a.gtld-servers.net。它的IP地址是192.5.6.30。然后,再次指定dig命令,向其发起域名解析请求:

root@netbox[~]dig@192.5.6.30test.fasionchan.com;DiG9.16.1-Ubuntu@192.5.6.30test.fasionchan.com;(1serverfound);globaloptions:+cmd;Gotanswer:-HEADER-opcode:QUERY,状态:NOERROR,id:7836;flags:qrrd;QUERY:1,ANSWER:0,AUTHORITY:2,附加:1;警告:递归请求但不可用;OPTPSEUDOSECTION:EDNS:版本3336 00,flags:udp:4096;QUESTIONSECTION:test.fasionchan.com.INA;AUTHORITYSECTION:fasionchan.com.172800INNSf1g1ns1.dnspod.net。com.172800INNSf1g1ns2.dnspod.net.Querytime:212msec;SERVER:192.5.6.30#53(192.5.6.30);WHEN:FriApr0908:38:58CST2021;MSGSIZErcvd 3 3360101顶级域名服务器告诉我们,域名fasionchan.com应该找到f1g1ns1.dnspod。网。或f1g1ns2.dnspod.net。来解决。这两个是fasionchan.com的权威域名服务器。

但这次.com 域名并没有告诉我们f1g1ns1.dnspod.net 的IP 地址。或f1g1ns2.dnspod.net。所以我们首先要自己动手,将他们的域名解析成IP地址。

我们可以直接执行dig命令,一键完成分析:

root@netbox[~]digf1g1ns1.dnspod.net.DiG9.16.1-Ubuntuf1g1ns1.dnspod.net.globaloptions:+cmd;Gotanswer:-HEADER-opcode:QUERY,status:NOERROR,id:6244;flags:qrr dra;QUERY :1,答案:5,权威:0,附加:0;问题部分:f1g1ns1.dnspod.net.INA;答案部分:f1g1ns1.dnspod.net.15INA58.247.212.36f1g1ns1.dnspod.net.15INA61.151.180.44f1g 1ns1.dnspod。 net.15INA129.211.176.187f1g1ns1.dnspod.net .15INA162.14.25.230f1g1ns1.dnspod.net.15INA183.192.164.118;查询时间:13毫秒;SERVER:192.168.65.1#53(192. 168.65.1);WHEN:FriApr09083336 039:38CST2021; MSGSIZErcvd:116如果dig命令没有指定DNS服务器,则会默认去本地递归解析器,即DNS缓存服务器进行查询。 DNS缓存服务器会为我们做迭代分析,然后告诉我们结果。

获得权威域名服务器的IP地址后,我们可以向其发起解析请求:

root@netbox[~]dig@58.247.212.36test.fasionchan.com;DiG9.16.1-Ubuntu@58.247.212.36test.fasionchan.com;(1serverfound);globaloptions:+cmd;Gotanswer:-HEADER-opcode:QUERY,状态:NOERROR,id:42646;flags:qraard;QUERY:1,ANSWER:1,AUTHORITY:2,附加:1;警告:递归请求但不可用;OPTPSEUDOSECTION:EDNS:version333 600,flags:udp:4096;问题部分:test.fasionchan.com.INA;答案部分:test.fasionchan.com.600INA10.0.0。 1 ;AUTHORITYSECTION:fasionchan.com.600INNSf1g1ns2.dnspod.net.fasionchan.com.600INNSf1g1ns1.dnspod.net.查询时间:57毫秒;服务器:58.247.212.36#53(58.247.212.36);WHEN3 3360FriApr0908:55:47CST2021;MSGSIZErcvd:128瞧,我们成功了解析域名test.fasionchan.com,得到其对应的IP地址10.0.0.1!

迭代解析 f1g1ns1.dnspod.net.

如果不想经过递归解析器,可以自己进行迭代解析,查询f1g1ns1.dnspod.net的IP地址。

首先向根域名服务器发起解析请求:

root@netbox[~]dig@198.41.0.4f1g1ns1.dnspod.net.DiG9.16.1-Ubuntu@198.41.0.4f1g1ns1.dnspod.net.(1serverfound);globaloptions:+cmd;Gotanswer:-HEADER- opcode:QUERY,status:NOERROR,id:49636;flags:qrrd;QUERY:1,ANSWER:0,AUTHORITY:13,ADDITIONAL:27;警告:recursionrequestedbutnotavailable;OPTPSEUDOSECTION333 6 0;EDNS:version:0,flags:udp:1472;QUESTIONSECTION:f1g1ns1.dnspod.net.INA;AUTHORITYSECTION:net.172800INNSa.gtld-服务器。净.net.172800INNSb.gtld-服务器.net.net.172800INNSc.gtld-服务器.net.net.172800INNSd.gtld-服务器.net.net.172800INNSe.gtld-服务器.net.net.172800INNSf.gtld-服务器。净.net.172800INNSg.gtld-服务器.net.net.172800INNSh.gtld-服务器.net.net.172800INNSi.gtld-服务器.net.net.172800INNSj.gtld-服务器.net.net.172800INNSk.gtld-服务器。 net.net.172800INNSl.gtld-servers.net.net.172800INNSm.gtld-servers.net.附加部分:a.gtld-servers.net.172800INA192.5.6.30b.gtld-servers.net.172800INA192.33.14.30c。 gtld-servers.net.172800INA192.26.92.30d.gtld-servers.net.172800INA192.31.80.30e.gtld-servers.net.172800INA192.12.94.30f.gtld-servers.net.172800INA192.35.51.30g.gtld-服务器.net.172800INA192.42.93.30h.gtld-servers.net.172800INA192.54.112.30i.gtld-servers.net.172800INA192.43.172.30j.gtld-servers.net.172800INA192.48.79.30k.gtld-servers .net .172800INA192.52.178.30l.gtld-servers.net.172800INA192.41.162.30m.gtld-servers.net.172800INA192.55.83.30a.gtld-servers.net.172800INAAAA2001:503:a83 :2:30b.gtld-servers.net.172800INAAAA2001:503:231d:2:30c。 gtld-服务器.net.172800INAAAA2001:503:83eb:30d.gtld-服务器.net.172800INAAAA2001:500:856e:30e.gtld-servers.net.172800INAAAA2001 333 60502:1ca1:30f.gtld-服务器.net.172800INAAAA2

001:503:d414::30 g.gtld-servers.net. 172800  IN  AAAA    2001:503:eea3::30 h.gtld-servers.net. 172800  IN  AAAA    2001:502:8cc::30 i.gtld-servers.net. 172800  IN  AAAA    2001:503:39c1::30 j.gtld-servers.net. 172800  IN  AAAA    2001:502:7094::30 k.gtld-servers.net. 172800  IN  AAAA    2001:503:d2d::30 l.gtld-servers.net. 172800  IN  AAAA    2001:500:d937::30 m.gtld-servers.net. 172800  IN  AAAA    2001:501:b1f9::30  ;; Query time: 172 msec ;; SERVER: 198.41.0.4#53(198.41.0.4) ;; WHEN: Fri Apr 09 08:40:49 CST 2021 ;; MSG SIZE  rcvd: 840 根域名服务器告诉我们,.net 应该去找 a.gtld-servers.net. 等服务器,服务器地址附在后面的附加节。 我们选择 a.gtld-servers.net. 这台 顶级域名服务器 ,它的地址是 192.5.6.30 。然后向它发起解析请求: root@netbox [ ~ ]   dig @192.5.6.30 f1g1ns1.dnspod.net.  ; <<>> DiG 9.16.1-Ubuntu <<>> @192.5.6.30 f1g1ns1.dnspod.net. ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53457 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 7 ;; WARNING: recursion requested but not available  ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;f1g1ns1.dnspod.net.        IN  A  ;; AUTHORITY SECTION: dnspod.net.     172800  IN  NS  v6ns3.dnsv2.net. dnspod.net.     172800  IN  NS  v6ns4.dnsv2.com.  ;; ADDITIONAL SECTION: v6ns3.dnsv2.net.    172800  IN  A   129.211.176.248 v6ns3.dnsv2.net.    172800  IN  A   162.14.24.245 v6ns3.dnsv2.net.    172800  IN  A   183.192.164.118 v6ns3.dnsv2.net.    172800  IN  A   223.166.151.17 v6ns3.dnsv2.net.    172800  IN  AAAA    2402:4e00:1430:1102:0:9136:2b2f:bf6b v6ns3.dnsv2.net.    172800  IN  A   61.129.8.141  ;; Query time: 213 msec ;; SERVER: 192.5.6.30#53(192.5.6.30) ;; WHEN: Fri Apr 09 08:41:27 CST 2021 ;; MSG SIZE  rcvd: 210 顶级域名服务器告诉我们,dnspod.net. 这个域应该去找 v6ns3.dnsv2.net. 或者 v6ns4.dnsv2.com. 。这两者就是所谓的 权威域名服务器 。这次,顶级域名服务器已经在附加节中,附上了它们的 IP 地址。 我们从中挑选一个,比如 129.211.176.248 ,继续发起解析请求: root@netbox [ ~ ]   dig @129.211.176.248 f1g1ns1.dnspod.net.  ; <<>> DiG 9.16.1-Ubuntu <<>> @129.211.176.248 f1g1ns1.dnspod.net. ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23542 ;; flags: qr aa rd; QUERY: 1, ANSWER: 5, AUTHORITY: 2, ADDITIONAL: 1 ;; WARNING: recursion requested but not available  ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;f1g1ns1.dnspod.net.        IN  A  ;; ANSWER SECTION: f1g1ns1.dnspod.net. 172800  IN  A   183.192.164.118 f1g1ns1.dnspod.net. 172800  IN  A   162.14.25.230 f1g1ns1.dnspod.net. 172800  IN  A   58.247.212.36 f1g1ns1.dnspod.net. 172800  IN  A   61.151.180.44 f1g1ns1.dnspod.net. 172800  IN  A   129.211.176.187  ;; AUTHORITY SECTION: dnspod.net.     86400   IN  NS  v6ns3.dnsv2.net. dnspod.net.     86400   IN  NS  v6ns4.dnsv2.com.  ;; Query time: 34 msec ;; SERVER: 129.211.176.248#53(129.211.176.248) ;; WHEN: Fri Apr 09 08:42:07 CST 2021 ;; MSG SIZE  rcvd: 185 最终,我们成功解析到 f1g1ns1.dnspod.net. 对应的 IP 地址,总共有 5 个。 扩展阅读

用户评论

剑已封鞘

感觉很酷啊,能用`dig`来模拟迭代解析!

    有5位网友表示赞同!

心安i

这个实验太有意思了,可以深入了解DNS是如何工作的。

    有6位网友表示赞同!

素颜倾城

我之前没听说过迭代解析的过程,这篇文章很有教育意义!

    有20位网友表示赞同!

巴黎盛开的樱花

可以用这个实验来测试一下网络的速度和稳定性吧?

    有15位网友表示赞同!

最迷人的危险

希望文章能够解释清楚`dig`命令的使用方法和参数设置。

    有16位网友表示赞同!

不离我

学习下`dig`命令用法,可以应对一些DNS相关的紧急问题?

    有7位网友表示赞同!

铁树不曾开花

这个模拟实验是不是可以用在教学场景里呢?

    有10位网友表示赞同!

一笑傾城゛

`dig`能解析几种不同的记录类型?文章会详细介绍吗?

    有6位网友表示赞同!

烟雨离殇

这种模拟实验真的会帮助 kita better understand how DNS works?

    有20位网友表示赞同!

绝版女子

迭代解析有什么优缺点呢?文章会不会比较一下?

    有13位网友表示赞同!

南宫沐风

这个实验需要哪些工具准备?是不是操作起来比较简单?

    有5位网友表示赞同!

一纸愁肠。

希望文章能给出一些`dig`命令的实用技巧。

    有16位网友表示赞同!

昂贵的背影

学习完这篇文章,我可以自己设置一个简单的DNS服务器吗?

    有15位网友表示赞同!

你很爱吃凉皮

`dig`命令只能解析本地的dns数据吗?可以跨越网络进行解析吗?

    有5位网友表示赞同!

走过海棠暮

迭代解析在实际应用场景中有多普遍呢?

    有5位网友表示赞同!

花海

希望文章能讲解一下迭代解析的安全性问题。

    有5位网友表示赞同!

我怕疼别碰我伤口

这个实验会不会涉及一些比较复杂的技术细节?

    有12位网友表示赞同!

断秋风

可以尝试用`dig`命令模拟不同类型的网络故障吗?

    有5位网友表示赞同!

没过试用期的爱~

学习完这篇文章,我就能自己写一个DNS解析程序了吗?

    有11位网友表示赞同!

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/7310.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666