[230531] 深入学习 DNS 协议

[230531] 深入学习 DNS 协议

曾经沧海难为水,除却巫山不是云。取次花丛懒回顾,半缘修道半缘君。真应景啊。

1 DNS 的基本介绍

DNS 协议属于应用层协议,它的作用是根据域名查询到对应的 IP 地址,以便内核协议栈的 IP 模块构造 IP 报文。使用 DNS 协议的场景主要有在网站输入域名时需要查询域名对应的 IP 地址,还有 windows 下的 nslookup 程序可以直接查询域名的 IP 地址。

2 DNS 的查询流程

2.1 DNS 服务器的层级结构

在 DNS 服务器的层次结构中,有三种 DNS 服务器:根 DNS 服务器、顶级域 DNS 服务器(TLD)和权威 DNS 服务器。它们的层次结构如下:
层级结构.png

另一类重要的 DNS 服务器为本地 DNS 服务器,它不属于 DNS 服务器的层次结构,但它很重要。

2.2 DNS 的查询流程

以域名为 cse.nyu.edu 的主机查询域名 gaia.cs.umass.edu 的 IP 地址为例:

  • 主机向本地 DNS 服务器(dns.nyu.edu)发送 DNS 查询报文(查询域名为 gaia.cs.umass.edu 的 IP 地址),本地服务器先查询本地的缓存,若缓存命中,则直接返回 DNS 响应报文;若缓存未命中,则进行下一步。
  • 本地 DNS 服务器首先向根 DNS 服务器发送 DNS 查询报文(查询域名为 gaia.cs.umass.edu 的 IP 地址),根 DNS 服务器向本地 DNS 服务器响应 edu 的 TLD IP 地址列表。
  • 本地 DNS 服务器从该 IP 地址列表中找到 umass.edu 的 IP 地址,向该 TLD 发送 DNS 查询报文(查询域名为 gaia.cs.umass.edu 的 IP 地址),TLD 向本地 DNS 服务器响应 dns.umass.edu 的 IP 地址。
  • 本地 DNS 服务器向该权威 DNS 服务器发送 DNS 请求报文(查询域名为 gaia.cs.umass.edu 的 IP 地址),权威 DNS 服务器响应该域名对应的 IP 地址。
  • 最后,本地 DNS 服务器向主机返回 gaia.cs.umass.edu 的 IP 地址。

过程如图所示:

查询过程.png

在整个过程中,主机与本地 DNS 服务器之间的交互为递归查询,本地 DNS 服务器与根 DNS 服务器、TLD DNS 服务器、权威 DNS 服务器之间的交互为迭代查询。这也是实践中常用的查询方式组合。

3 为什么 DNS 使用 UDP 而不是 TCP

首先,从连接性上来说,DNS 只需要单次请求和单次响应,没有保持连接的必要,并且,DNS 需要较快的响应速度,这也与无需建立连接的 UDP 相适应。

其次,从数据包长度上来说,DNS 包较小,比较适合用 UDP 传输。

最后,从安全性上来说,UDP 虽然是不可靠的,但可以从应用层设置超时或重传来保证可靠性。

4 DNS Leak

4.1 DNS Leak 是什么

DNS Leak,DNS 泄漏。可以访问 DNS 服务器的人可以很容易地查询到用户的网站状态,所以引入了 VPN(Virtual Private Network)技术,在虚拟网络上建立安全的连接,通过 VPN 的隧道交互 DNS 请求和响应报文。但 VPN 服务器也可能会泄漏 DNS 请求,这就是 DNS 泄漏。

from 通义千问:什么是VPN?

在科技领域中,VPN代表虚拟专用网路(Virtual Private Network),是一种通过公共网路架设私人网路的技术,可以让使用者在连接公共网路时,以安全的方式进行数据传输与访问。

使用者可以通过VPN连接到一个安全的服务器,该服务器可以是任何地方的一台计算机,并且可以在连接到该服务器的同时,加密数据并隐藏使用者的真实身份,以保障在公共网路上进行的数据传输与访问是安全的。

通常,使用者需要通过一个安装在自己设备上的客户端软体,来建立和管理连接到VPN服务器的连接。使用者可以根据自己的需求,选择不同的服务商和不同的套餐,以获得不同程度的安全和功能。

在商业和个人使用场合中,VPN已经被广泛运用,例如在企业内部网路、网上银行、网上商店等等,以提供更好的安全和隐私保护。同时,在网路审查和限制网路访问的情况下,也可以帮助使用者保持连接和访问的自由。

4.2 如何防止 DNS Leak
  • 通过 HTTPS 或 TLS 加密 DNS 请求
  • 使用 VPN 提供的客户端在 VPN 上发送 DNS 请求报文
  • 在整个设备上使用防火墙来禁用 DNS 或把本地 DNS 服务器的地址设置为非法值如 127.0.0.1 或 0.0.0.0

5 引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值