《TCP/IP详解 卷一》第11章 DNS

目录

[11.1 引言](#11.1 引言)

[11.2 DNS名称空间](#11.2 DNS名称空间)

[11.2.1 DNS命名语法](#11.2.1 DNS命名语法)

[11.3 名称服务器和区域](#11.3 名称服务器和区域)

[11.4 DNS缓存](#11.4 DNS缓存)

[11.5 DNS 协议](#11.5 DNS 协议)

[11.5.1 DNS消息格式](#11.5.1 DNS消息格式)

[11.5.2 DNS 扩展格式(EDNS0)](#11.5.2 DNS 扩展格式(EDNS0))

[11.5.3 UDP 或 TCP](#11.5.3 UDP 或 TCP)

[11.5.4 问题(查询)和区域区段格式](#11.5.4 问题(查询)和区域区段格式)

[11.5.5 回答、授权和额外信息区段格式](#11.5.5 回答、授权和额外信息区段格式)

[11.5.6 资源记录类型](#11.5.6 资源记录类型)

[11.5.7 动态更新(DNS UPDATE)](#11.5.7 动态更新(DNS UPDATE))

[11.5.8 区域传输和DNS通知](#11.5.8 区域传输和DNS通知)

[11.6 排序列表、循环和分离DNS](#11.6 排序列表、循环和分离DNS)

[11.7 开放DNS服务器和DynDNS](#11.7 开放DNS服务器和DynDNS)

[11.8 透明度和扩展性](#11.8 透明度和扩展性)

[11.9 从 IPv4 向 IPv6 转换 DNS](#11.9 从 IPv4 向 IPv6 转换 DNS)

[11.10 LLMNR 和 mDNS](#11.10 LLMNR 和 mDNS)

[11.11 LDAP](#11.11 LDAP)

[11.12 与DNS相关的攻击](#11.12 与DNS相关的攻击)

[11.13 总结](#11.13 总结)


11.1 引言

DNS:Domain Name System

host name可作为域名。

DDNS(Dynamic Domain Name System):

作用:

即使主机IP改变时,也可用用固定域名来访问。

实现原理:

IP改变时,主机DDNS客户端将新IP通知服务器,DDNS服务器就创建新IP-域名映射。

使用场景:

远程控制(如远程访问家中智能设备)。

花生壳网站可提供DDNS服务。

11.2 DNS名称空间

名称空间:name space

TLD:Top Level Domain,顶级域名,是域名体系中最高级别的域名,即域名的最右边。

TLD举例:

国家代码顶级域名(ccTLD)如.cn,.us

通用顶级域名(gTLD):如.com,.net,.edu

新通用顶级域名(New gTLDs):如 .app,.blog,.shop

而根DNS服务器存储和管理这全球顶级域名(TLD)的域名服务器信息。

11.2.1 DNS命名语法

完全限定域名(FQDN):

即完整域名,从顶级域名一直到主机名。

唯一地标识互联网主机。

非限定域名:

未指定完整域名结构的域名。结合默认域名后缀可生成完整域名。

DHCP服务器有两个DHCP option用于下发默认域名后缀:

默认域名扩展。(一个域名后缀)

搜索列表。(多个域名后缀,逐一使用,直到DNS解析成功)

举例:

用户输入vangogh,本地DNS添加后缀后转换为完整域名vangogh.cs.berkeley.edu.,然后进行DNS解析器。

FQDN完整域名:如www.net.in.turn.de.,从右向左解析。

标签不区分大小。

如"example.com"、"EXAMPLE.COM"被DNS解析为相同IP。

11.3 名称服务器和区域

DNS服务器中管理单位为区域(zone),一个区域是DNS名称空间的一棵子树。

如一个公司的DNS服务器,管理一颗子树,包括www.example.commail.example.com 等。

一个区域至少有两台DNS服务器:

主服务器:负责处理对该区域中域名修改、更新和查询请求。数据是最新的。

辅服务器:备份。

备份方法:DNS区域传输功能。

11.4 DNS缓存

DNS服务器把DNS解析记录连同TTL一起给客户端。

该TTL值是该DNS记录在客户端的存活时间。当解析相同域名,无需再次向DNS服务器请求,降低互联网流量。

TTL过期后,清除该记录缓存。

TTL单位:秒。

Linux中名称服务缓存进程(Name Service Caching Daemon, NSCD)提供客户端缓存功能。

配置文件为/etc/nscd.conf文件,包括:

  1. 缓存什么解析记录(DNS和其他服务)

  2. TTL等参数。

11.5 DNS 协议

DNS协议包括两个部分:

DNS解析服务:

区域传输:DNS服务器同步域名解析信息到其他服务器。

任播地址Anycast:

发送到任播地址的数据会按照路由协议的距离方法,被路由到最近任播地址接口。

所以一组DNS服务器可使用相同任播地址,客户端就近使用,实现负载均衡和主辅备份。

DNS查询有两种类型:

递归查询:

DNS客户端向本地服务器查询。

本地服务器向根服务器查询。

根服务器向顶级服务器查询。

未完成解析之前客户端一直阻塞等待。

迭代查询:

DNS客户端向本地服务器查询。

本地服务器返回根服务器IP给客户端。

DNS客户端向根服务器查询。

根服务器返回顶级服务器IP给客户端。

反复。。。

大部分的DNS服务器是递归查询。

而根服务器和TLD服务器是迭代查询。

如果使用递归查询时,主机会阻塞,导致互联网性能不佳。

11.5.1 DNS消息格式

RR:资源记录(Resource Record)

是DNS服务器存储的域名信息。

最常用两种记录:

A 记录(Address Record):域名到IPv4地址的映射。

AAAA 记录(IPv6 Address Record):域名到IPv6地址的映射。

区域传输:从服务器从主DNS服务器处获取最新的域名区域数据,确各个服务器数据同步。

DNS报文类型有:

DNS查询/响应:

区域传输请求/响应:

通知报文:主服务器向从服务器发送通知报文,告知从服务器更新域名信息。

更新报文:允许客户端动态向DNS服务器添加、修改或删除记录。

授权服务器:

如果DNS服务器不具备请求域名的解析信息,它会向授权服务器发送查询请求。

DNS报文格式:

事务ID:客户端设置,服务器返回时复制。用来匹配响应和查询。

标志字段:

QR:消息类型,0(査询),1(响应)。

Opcode:查询类型,0 (标准查询),4(通知),5(更新)

AA:响应是否来自授权服务器。

TC:响应是否被截断。

RD:客户端期望递归查询。

RA:DNS服务器是否支持递归查询。

Z:保留位

AD:信息已授权

CD:禁用安全检查

RCODE:表示响应状态,值0(响应正确),3 (响应出错,如名称差错或不存在域名)

每个域名由一系列标签组成。标签类型有两种:

数据标签(data label):

举例www.pearson.com的编码如下:

压缩标签(compression label) :

当多个标签中有相同字符时,可用来减少报文大小。

11.5.2 DNS 扩展格式(EDNS0)

DNS扩展机制:

EDNS0:Extension Mechanisms for DNS version 0

作用:

支持更大DNS消息。

传输额外选项信,如DNS(SEDNS安全)。

11.5.3 UDP 或 TCP

对于TCP和UDP来说,DNS端口号都是53。

DNS通常使用UDP封装。

一个DNS消息最多512字节。

预期响应长度超过512字节,但服务器只返回前512字节,此时会在响应中设置TC(被截断)标志。

该解析器可用TCP再次发出查询,此时就返回超过512字节消息,因为TCP可以MSS分段。

TCP MSS选项的作用:

避免IP分段,降低开销,提高性能。

使用UDP封装DNS时,应用层应处理超时和重传。

11.5.4 问题(查询)和区域区段格式

问题区段:

也就是查询区段。用于DNS查询报文。

其中包含信息:

需要查询的名称。

查询类型:A是查询IPv4地址,AAAA是查询IPv6。

查询类:值是1(互联网类),254(没有类),255(所有类)

11.5.5 回答、授权和额外信息区段格式

RR:资源记录,即DNS映射记录。

这三个区段就是RR的集合。用于DNS响应报文。

授权区段:

当DNS服务器无法直接回答查询请求时,可指示客户端向授权区段中的服务器发送进一步的查询请求。

11.5.6 资源记录类型

即请求一个名称对应的什么资源:

RR类型 解析对象

A IPv4地址

NS 名称服务器

AAAA IPv6地址

IXFR 增量区域传输

AXFR 完全区域传输,TCP

11.5.7 动态更新(DNS UPDATE)

客户端通过UPDATE 报文地向DNS服务器添加、修改或删除资源记录。

11.5.8 区域传输和DNS通知

区域传输:从主服务器复制区域的一组RR到从服务器。保持多服务器区域内容同步

区域传输触发时机:

定时器

DNS NOTIFY消息

DNS NOTIFY消息作用:

主DNS对某区域修改后,向辅DNS发送DNS NOTIFY 消息。

辅DNS就会向主DNS发出Zone Transfer 请求。

区域传输两种方式:

完整传输:内容大,使用TCP分段。

增量传输:只传输更新条目,可能先用UDP,若响应消息太大,则切换到TCP。

11.6 排序列表、循环和分离DNS

若请求名称对应的主机有多个IP(内网IP,外网IP),服务器返回IP时如何排序?

普遍情况: 基于请求报文中源IP或目的IP地址排序。

DNS循环:

当多台服务器对应同一域名服务,可将DNS服务器配置为DNS循环,实现负载均衡。

具体做法:每个DNS客户端请求域名时,DNS服务器交替返回这些 IP 地址。使得客户端每次请求都得到不同服务器IP地址,实现负载均衡。

缺点:当记录被缓存时,该负载均衡效果不好。

分离DNS (split DNS):

一种网络配置方案。

允许企业用户访问内部资源时使用内部DNS服务器进行域名解析,而在访问外部资源时使用公共DNS 服务器。

原理:通过查询报文的源/目的IP,返回特定资源记录集合。

作用:

内外网隔离:不允许用户通过公共DNS访问内部指定资源。减少内部资源受到外部攻击风险。

提高DNS解析效率,优化网络性能。

可在内网DNS上配置,限制对特定域名访问。提高网路安全。

11.7 开放DNS服务器和DynDNS

DDNS:即动态DNS,即使IP地址变动时,也可使用固定域名来访问。

原理:

当IP地址变化时,DDNS客户端发送新IP地址给DDNS服务器。

DDNS服务器再将新IP和域名更新带ISP DNS服务器中。

11.8 透明度和扩展性

扩展:实现新的RR类型。

11.9 从 IPv4 向 IPv6 转换 DNS

DNS64可将A记录转换为AAAA记录。并和IPv4/IPv6 NAT转换器一起工作,以允许只有IPv6的客户端访问IPv4网络的服务。

11.10 LLMNR 和 mDNS

这是两种局域网DNS协议。

LLMNR:

即本地链路组播名称解析(Link-Local Multicast Name Resolution)

非标协议,微软开发,Windows系统常用。

使用组播通信,服务器使用UDP端口5355。

mDNS:

组播DNS,multicast DNS

标准协议, macOS 和 Linux系统常用。

使用组播通信,使用UDP端口5353

作用:

是用于局域网内部DNS。

两者功能相同,如:

局域网设备互相发现。

局域网内部主机名解析。

区别:

LLMNR用于IPv4,不支持IPv6。

mDNS主要用于IPv6 网络中,同时支持IPv4和IPv6网络。

11.11 LDAP

LDAP:Lightweight Directory Access Protocol,轻量级目录访问协议

目前使用LDAPv3

LDAP服务器常用于在企业内部。

用于保留目录信息,如位置、电话号码和组织单位,管理用户账户、服务。

11.12 与DNS相关的攻击

DNSSEC:DNS安全

DNS攻击:

  1. DoS攻击,使DNS服务器过载。

  2. 改变资源记录内容。

  3. 伪装成官方DNS服务器,回复假的资源记录,导致主机连接至错误IP地址(例如,银行的Web站点)

2001年DNS的重大DoS攻击:

伪造大量各种源IP地址,请求AOL. COM的MX记录。导致响应流量定向到任何伪源IP处。

而DNS请求是较小报文,然而响应较大(约20倍),这称为放大攻击。

MX记录:Mail Exchange记录,即请求邮件服务器域名对应IP。

DNS数据内容攻击:DNS服务器缓存内容被错误数据替代,导致客户端定向到伪服务器。

DNS Flood攻击解决方法:

防火墙收到DNS请求,会代替DNS服务器响应DNS请求,并将TC标志(截断)位置1,要求DNS客户端以TCP方式发送DNS请求。

如果客户端是真实源,会继续以TCP方式发送DNS请求。

如果客户端是虚假源,则不会再以TCP方式发送DNS请求。

11.13 总结

下图是无DNS缓存时,DNS查询步骤:

相关推荐
DC_BLOG26 分钟前
IPv6(四)
运维·服务器·网络·ip
明朝百晓生33 分钟前
无线感知会议系列【3】【基于WiFi和4G/5G的非接触无线感知:挑战、理论和应用-1】
网络·5g
城南云小白4 小时前
Linux网络服务只iptables防火墙工具
linux·服务器·网络
羌俊恩4 小时前
视频服务器:GB28181网络视频协议
服务器·网络·音视频
Flying_Fish_roe4 小时前
linux-网络管理-网络配置
linux·网络·php
hellojackjiang20116 小时前
即时通讯框架MobileIMSDK的H5端开发快速入门
网络·即时通讯·im开发
有时间要学习6 小时前
Linux——应用层自定义协议与序列化
linux·服务器·网络
Tony聊跨境6 小时前
什么是 SSL 代理?
网络·网络协议·ssl
我叫啥都行7 小时前
计算机基础知识复习9.7
运维·服务器·网络·笔记·后端
Monodye7 小时前
【Java】网络编程:TCP_IP协议详解(IP协议数据报文及如何解决IPv4不够的状况)
java·网络·数据结构·算法·系统架构