Galaxy

姚皓的技术博客-一杯咖啡,一首音乐,一台电脑,编程

0%

DNS常用知识点

1. 层级划分

  • com:顶级域名
  • aliyuncs.com:二级域名
  • oss-cn-shanghai.aliyuncs.com:三级域名
  • xxx.oss-cn-shanghai.aliyuncs.com:四级域名

1.1 本章节Q&A

Q:是否可以有五级或更多层级域名?
A:
DNS 协议本身不限制域名层级数量。理论上可以无限添加子域名层级。但有限制:

  • ICANN 规定:域名的总长度不能超过 253 个字符。
  • 兼容性考量:需考虑客户端和服务器的兼容性
  • 管理复杂性:多级域名需要逐层配置 DNS 记录(如 A、CNAME 等),管理成本高
  • 缓存与性能:每增加一层域名,DNS 查询次数可能增加,影响解析效率。

Q:多级域名如何配置
A:
配置多级域名:为每一层级的域名单独配置 DNS 记录(如 A、CNAME)。如:

1
2
3
level1.com.             IN  A    192.0.2.1
level2.level1.com. IN CNAME level1.com.
level3.level2.level1.com. IN A 192.0.2.2

2. 分布式系统

单台服务器承受不了全网的带宽,所以DNS使用分布在各地的域名服务器分区委派。

  • 根域名服务器:13组IPV4根域名服务器(A~M)
  • 顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名
  • 权威域名服务器:负责管理某个区的域名

2.1 LocalDNS

不属于上述等级结构:

  • 本地域名服务器LocalDNS(简称LDNS):起到代理作用,转发DNS请求报文。需要直接配置在需要域名解析的主机中。

LDNS通常是由用户的网络服务提供商或者所在网络的管理员来管理和配置的:

  • 在企业内部网络中,LocalDNS服务器可能由企业自身的IT部门维护
  • 在家庭网络环境中,LocalDNS服务器地址通常由ISP分配,一般都是通过DHCP协议动态分配给用户的路由器或直接分配给用户的计算机。ISP分配时通常为本地运营商的LDNS,同时也支持手动设置。

假设LDNS配置错误或者与CIP相距较远,就会存在访问失败或者访问时间长的问题。

2.2 根域名服务器分布

  • 美国主导:8组,A、B、C、D、E、F、H、J 根服务器由美国机构运营。
  • 欧洲参与:3组,G、I、K 根服务器由德国、英国、荷兰运营。
  • 亚洲和中立国:2组,M 根服务器位于日本,L 根服务器位于瑞士(由 ICANN 管理)。

2.3 相关机构

  • IANA(互联网数字分配机构):负责管理根服务器的 IP 地址分配和协调。
  • ICANN(互联网名称与数字地址分配机构):制定域名系统规则,并授权Verisign和 CNNIC等注册局管理特定顶级域名。
  • 注册局:顶级域管理者,注册局主要有VeriSign(负责.com .net .cc等) 和 CNNIC(负责.cn)。

2.4 顶级域名服务器的所有者

大部分顶级域名由盈利性公司运营,通过域名注册和续费盈利。

  • .com/.net:Verisign,商业公司
  • .org:Public Interest Registry (PIR),非营利组织
  • .cn:CNNIC(中国互联网络信息中心),政府自主的非营利组织
  • .top:由江苏邦宁科技有限公司负责运营管理的一个新通用顶级域名

2.5 知名公共LDNS

  • 阿里 AIiDNS:223.5.5.5, 223.6.6.6
  • Google DNS:8.8.8.8, 8.8.4.4
  • Cloudflare:1.1.1.1
  • 114 DNS:114.114.114.114, 114.114.115.115
  • 百度 BaiduDNS:180.76.76.76
  • DNSPod DNS+:119.29.29.29, 182.254.116.116
  • CNNIC SDNS:1.2.4.8, 210.2.4.8
  • oneDNS:112.124.47.27, 114.215.126.16
  • DNS派电信/移动/铁通:101.226.4.6,218.30.118.6
  • DNS派联通:123.125.81.6,140.207.198.6
  • OpenDNS:208.67.222.222, 208.67.220.220

2.6 本章节Q&A

Q:根节点服务器都在国外,会不会访问很慢?
A:每组根服务器通过 Anycast 技术 全球部署多个镜像站点,实现高可用性和低延迟。
Anycast指的是每个根服务器的镜像站点共享相同的 IP 地址,客户端会自动连接到最近的镜像节点。
中国没有运营根服务器,但通过 Anycast 镜像 接入全球根服务器网络。境内设有多个根服务器镜像节点(如 A、F、J 根服务器的镜像)。

Q:根域名服务器能不能扩更多?
A:
不能。源于早期 DNS 协议设计时的技术约束和历史背景。
DNS 响应数据包的大小不能超过 512 字节(除非启用 EDNS0 扩展)。
根服务器的 IP 地址需要通过 DNS 响应返回给客户端。每个根服务器的信息需要占用一定字节数。

A 记录格式(IPv4 地址):

  • 域名(如 a.root-servers.net):压缩后约 2 字节。
  • 类型(A 记录):2 字节。
  • 类(IN):2 字节。
  • TTL(生存时间):4 字节。
  • 数据长度(4 字节的 IPv4 地址):2 字节。
  • IPv4 地址:4 字节。
    总长度:约 16 字节/条。
    512 字节 / 16 字节 ≈ 32 条记录。由于需要包含其他信息(如 NS 记录、额外字段),实际最多只能容纳 13 条 A 记录。

3. DNS信息

3.1 DNS常用记录

  • A记录:IPV4
  • AAAA记录:IPV6
  • CNAME:创建域名别名
  • NS记录:指定该域名的权威DNS服务器,说明哪些DNS服务器负责解析该域名的DNS记录
  • TXT记录:证明域名所有权

3.2 CNAME记录的常用场景

  • 多域名/子域管理:CNAME记录允许将多个域名或子域指向同一目标域名,简化管理。例如,将www.example.com、blog.example.com等子域统一指向主域名example.com
  • CDN加速:CDN中,CNAME记录用于将用户域名(如cdn.example.com)指向CDN服务商分配的加速域名(如cdn.provider.com)
  • 流量管理与负载均衡:CNAME记录可用于分发流量至不同服务器集群,实现负载均衡。
  • A/B测试与灰度发布:通过CNAME记录将特定流量段指向不同版本的网站(如test.example.com和prod.example.com),支持A/B测试或逐步发布新功能
  • 灾备:在服务器故障时,CNAME记录可快速将流量重定向至备份服务器,确保高可用性。例如,将api.example.com指向主服务器域名,故障时切换至备用域名

3.3 域名的DNS服务器

通常指的是权威域名服务器。
通常会配置2条或2条以上。
域名注册人可以自行修改。
dns-server

4. DNS扩展协议–EDNS

EDNS(Extension Mechanisms for DNS,DNS扩展机制)是一种扩展DNS协议的方法,解决了一些DNS协议的限制,RFC2671首次提出,RFC6891更新。
目前大多数CDN厂商都支持了EDNS Client Subnet,但是运营商的LDNS都不支持,所以现在还未正式被广泛使用。

5. DNS相关操作

5.1 本地查看DNS解析

  • dig(Windows默认不支持)
  • nslookup

5.2 修改LocalDNS

Windows:
步骤1:打开网络设置 1.右键点击任务栏的网络图标(Wi-Fi或以太网),选择”打开网络和共享中心”。 或通过控制面板进入: 控制面板>网络和 Internet>网络和共享中心。
步骤2:进入网络适配器属性 1.点击当前连接的网络名称(如”以太网”或”Wi-Fi”)。 2.在弹出的窗口中点击”属性”。 若需要管理员权限,点击”继续”。
步骤3:修改IPv4 DNS 设置 在列表中选择”Internet协议版本4(TCP/IPv4)“,点击”属性”。
选择”使用下面的DNS服务器地址”,输入: ꔷ 首选DNS服务器:223.5.5.5 ꔷ 备用DNS服务器(可选):223.6.6.6
勾选”退出时验证设置”,点击”确定”保存。

MacOS:
步骤1:打开系统偏好设置 点击屏幕左上角苹果菜单,选择”系统偏好设置”>“网络”。
步骤2:选择网络连接类型 在左侧选择当前连接的网络(如Wi-Fi或以太网)),点击右下角”高级”。
步骤3:配置DNS服务器 1.切换到”DNS”选项卡。 2.点击”+“添加DNS服务器, 输入: 223.5.5.5。 可添加备用DNS(如223.6.6.6)。 3.点击”确定”>“应用”保存设置。

更多其他系统可参考https://www.alidns.com/knowledge?type=SETTING_DOCS

5.2 修改hosts文件

  • Linux/MacOS:/etc/hosts
  • Windows:C:\Windows\System32\drivers\etc\hosts

5.3 本地刷新DNS缓存

  • Windows:ipconfig /flushdns
  • MacOS:sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
  • Linux:sudo nscd -i hosts
    Linux系统上的DNS缓存服务可能因发行版和配置而异,使用不同服务作为DNS缓存守护进程的命令不同,取决于所使用的网络管理工具或DNS解析器。

5.4 查看全局DNS解析

拨测工具
https://boce.aliyun.com/detect/DNS

6. DNS劫持

DNS劫持是指在域名解析过程中,通过技术手段篡改或干扰正常的DNS解析结果,使域名指向一个未经授权或错误的IP地址的行为。这通常会导致用户尝试访问一个网站时,被重定向到另一个未预期的网站,可能涉及恶意目的,如广告展示、钓鱼攻击或数据窃取等。

6.1 形式1:个别LocalDNS劫持

通常情况为,该LocalDNS的解析结果与NS不一致,与全局其他LocalDNS解析也不一致。
例如:客户已经将域名CNAME到阿里CDN,但是某个LocalDNS没有CNAME到阿里。

解决思路:

  1. 定位问题LDNS,通过客户反馈的情况和拨测,找到对应解析出错的LDNS;
  2. 客户与对应ISP报障或修改DNS记录,如果不配合可联系通信管理局进行申诉。

6.2 形式2:全局大面积解析异常

可能是因为客户业务违规,被XX了。
www.fxxxbook.com为例,海外地区会正常解析,CNAME到star-mini.c10r.fxxxbook.com,并且给出A记录。