通信|DNS配置生成工具再更新,什么是递归和迭代查询?

Posted by 琉璃康康 on January 14, 2024

@七禾页话

学习永无止境,记录相伴相随!

—— 琉璃康康

其实元旦的时候就更新完了。

上一个版本急急忙忙写的,没有做太多的验证,后来使用中发现写入excel会有bug,同时在bind9里做配置的时候,感觉之前产生的结果将不同zone的查询都杂糅到了一起,虽然有注释简单讲解了不同查询的应用场景,但是不方便在bind9这种DNS里直接配置,所以在2023年末的时候就优化了,发布了7.1这个小版本。

这个版本更新如下:

1
2
3
4
5
6
###左右滑动
Version 7.1(2023-12-31)
- Re-design the config result based on gprs/eps/5gs record
- Fix bug to save excel
- Add input as appendix in configu result
- Update FQDN generating for DNS query

第一个就是将所有的result输出重新定义,按照GRPS、EPC和5GC三个zone输出,同时每个zone里FQDN和A/AAAA Record也分开显示,配置更加简洁,各个call flow需要的DNS解析在FQDN解析前有解释:

@七禾页话

第二个修复了存储到excel的bug,当时在加入这个功能的时候,对于SGW和PGW,按照IP数量的多少计算应该从第几行的单元格记录不同的record,结果导致如果SGW和PGW只输入一个IP的时候,excel存储就会丢失TAC或者APN的NAPTR解析:

@七禾页话

第三个将input也同步存储到result文件里,虽然已经存储到excel里,但是这次也将input存储到了配置结果中,方便随时查看dns配置和对应的input:

@七禾页话

​还有一个重要的没有在about里写,就是加入了NRI的解析,虽然2G在有些国家已经退网,3G也慢慢要面临退网,但是依然有地区在用,而作为2、3G中重要的功能SGSN Pool也是不可或缺的,相应在2/3G和4G的IRAT中NRI、MMECode等之间的转换都有可能涉及到DNS解析:

@七禾页话

最后优化了DNS的FQDN,比如之前MME的FQDN在TAU和Handover时候最终会有两个不同的FQDN如oldMMEtargetMME,这次全部都优化成了一个s10-mme01

@七禾页话

最后,还直接加入了Setup Bind9 as DNS Server的Github链接,从而可以方便在自己的ubuntu上安装bind9,用此工具生成DNS配置后,就可以使用dig命令做实验了:

@七禾页话

以上就是7.1版本的内容更新。

通信|DNS配置生成工具大进化!文章基于的版本7作为重要的发型版本介绍了此工具的详细功能。

如何获取?

关注公众号七禾页话(qiheyehk)回复dns可以获取直接使用的exe下载链接。


DNS查询如果在本地DNS没有结果的时候有两种查询方案:递归DNS查询和迭代DNS查询。

我们已经聊过,DNS按照Trailing Dot划分为不同的域名级别,不同的DNS里可以解析到的域名因此而不同,那么各个运营商或者互联网公司只能维护自己DNS里自己的域名配置,并将其连接到互联网中,最终形成DNS的网状结构:

@七禾页话

那么我们的电脑连接的DNS或者各个运营商的DNS不可能定义全球所有域名的解析,因此DNS收到一个域名解析请求后就会根据配置方案来向上级DNS请求,方案两种:一个叫做递归,一个叫做迭代。

迭代DNS查询

迭代查询可以简单地理解为我可以不知道,但是我可以告诉你谁知道。如下图所示:

@七禾页话

各个步骤如下:

  1. 电脑发起DNS请求解析www.hk314.top到本地DNS;
  2. 本地DNS说我没有,你去根DNS看看;
  3. 电脑继续向根DNS询问,根DNS说我也不知道,你去zone top.的DNS看看;
  4. 电脑又到zone top.的DNS询问;
  5. zone top.的DNS说我也不知道,你去zone hk314.top.的DNS问问;
  6. 电脑又到zone hk314.top.的DNS询问;
  7. zone hk314.top.的DNS说我这里有,www.hk314.top的IP地址是1.1.1.1,最终直接将信息告诉给电脑。

可以看到整个的过程都是电脑自己一次又一次向各个DNS询问,各个DNS就是我不知道但是我告诉你谁可能知道,这就是迭代,宗旨就是你得自己去跑业务。

递归DNS查询

递归DNS查询就是不用你亲自跑腿儿了,我们是联合部门,内部查好告诉你最终结果即可。如下图所示:

@七禾页话

各个步骤如下:

  1. 电脑发起DNS请求解析www.hk314.top到本地DNS;
  2. 本地DNS说我没有,我去根DNS看看吧;
  3. 根DNS收到请求一看我也不知道,我去zone top.的DNS问问吧;
  4. zone top.的DNS收到请求一看自己也不知道,那我去zone hk314.top.的DNS问问吧;
  5. zone hk314.top.的DNS说我这里有,www.hk314.top的IP地址是1.1.1.1,将信息告诉给zone top.的DNS;
  6. zone top.的DNS收到信息后转给根DNS;
  7. 根DNS收到消息后转给本地DNS;
  8. 本地DNS最终将收到的域名和IP的信息转给电脑。

整个过程就是一个DNS内部运作,对外不公开的节奏,但是最终会告诉你答案。

递归查询对于最终用户来说更为简单,但可能给单个DNS服务器带来更多的压力;而迭代查询则分散了查询压力,但需要客户端具备更复杂的逻辑来处理多步查询过程。

上述介绍只是简单的聊聊两种查询的理论过程,在实际应用中需要两种的结合使用,总之是一个相对复杂的过程。

以上,有想法欢迎留言来聊!


网络和应用

摄影和旅行

工作和生活

欢迎关注公众号:七禾页话(qiheyehk)