记录dns协议学习中的一些内容,全程无图。
目录
- DNS简介
-
- DNS查询过程
- DNS缓存
- DNS劫持
-
- DoH基本原理
- Firefox开启DoH
- DNS报文格式
- DNS几个关键字段
-
- DNS类型字段
- DNS类字段
- 泛解析
-
- 泛解析作用
DNS简介
DNS查询过程
访问网站的基本过程:
1、浏览器向DNS服务器发起DNS请求;
2、DNS服务器查到结果,响应DNS请求;
3、浏览器拿到IP并向指定IP的HTTP服务发起HTTP请求;
4、HTTP服务器响应,浏览器渲染结果。
DNS缓存
假如每一台DNS服务器都储存了很多IP地址和域名的对应关系记录,这样会导致两个问题:1、数据量很大,有些记录是低频的,浪费空间,查找效率低;2、如果需要更变,变更过程的效率也不高。
因此DNS服务器中加入了缓存机制,当你一定时间内重复询问同一个网址时,查询程序会直接找出缓存记录并响应。
缓存有过期时间,超时未更新会删除缓存。多数浏览器支持本地DNS缓存,可以减少DNS请求,加快响应。
chrome可以查看DNS缓存,在地址栏中输入如下URL:
chrome://net-internals/#dns
DNS劫持
域名劫持通过攻击DNS服务器或伪造DNS服务器的方法,把目标网站域名解析到错误的IP地址,造成用户无法访问目标网站或恶意迫使用户访问指定IP。
DNS劫持的关键在于DNS服务器与你之间的链接为“明文传输”,而非“加密传输”。这就可能导致通信的每个环节上都能随意修改其中的数据内容。
DoH基本原理
DoH可以认为在DNS外面套一层HTTPS,通常一次请求的时间会变长。流程变成了:
浏览器 -> DoH服务器 -> DNS服务器 -> DoH服务器 -> 浏览器
该过程中的所有流量皆受到HTTPS加密链接强加密。
Firefox开启DoH
Firefox从v62版开始已支持DoH,DoH(DNS over HTTPS)协议可以加密 DNS 请求和响应,能够有效解决因DNS污染无法正常访问某些网站,也可以避免DNS查询记录被恶意收集监控或者被改过至虚假钓鱼网站。
操作方法:
1、在菜单里点击“首选项”;
2、进入“常规”选项;
3、滚动页面到最下方,选择“网络设置”;
4、在弹出窗口最下方选择“启用基于HTTPS的DNS”,点击“使用默认值”即可。
DNS报文格式
DNS分为查询请求和查询响应,请求和响应的报文结构基本相同,在标志位上有差别。
这部分的内容较多,大体了解即可。梳理后会放到下次放出。
DNS几个关键字段
DNS类型字段
dns协议中的type字段,请求类型的集合叫做QTYPES,有一部分的type是dns请求独有的。(不常用的没有进行翻译)
DNS类型
类型名 | 十进制代码 | 含义 | 参考 |
---|---|---|---|
A | 1 | 指定域名对应IPv4地址 | [RFC1035] |
NS | 2 | 权威的名称服务器地址 | [RFC1035] |
MD | 3 | 指定邮件接收站(废弃,使用MX代替) | [RFC1035] |
MF | 4 | 指定邮件中转站(废弃,使用MX代替) | [RFC1035] |
CNAME | 5 | 指定别名名称 | [RFC1035] |
SOA | 6 | 用于 DNS 区域的“起始授权机构” | [RFC1035] |
MB | 7 | 邮箱域名(实验性) | [RFC1035] |
MG | 8 | 邮件组成员 (实验性) | [RFC1035] |
MR | 9 | 邮件重命名域名 (实验性) | [RFC1035] |
NULL | 10 | 空(实验性) | [RFC1035] |
WKS | 11 | 描述已知服务 | [RFC1035] |
PTR | 12 | 指针,如果查询是 IP 地址响应计算机名 | [RFC1035] |
HINFO | 13 | 主机信息 | [RFC1035] |
MINFO | 14 | 邮箱或邮件列表信息 | [RFC1035] |
MX | 15 | 邮件交换器 | [RFC1035] |
TXT | 16 | 文本信息 | [RFC1035] |
RP | 17 | for Responsible Person | [RFC1183] |
AFSDB | 18 | for AFS Data Base location | [RFC1183][RFC5864] |
X25 | 19 | for X.25 PSDN address | [RFC1183] |
ISDN | 20 | for ISDN address | [RFC1183] |
RT | 21 | for Route Through | [RFC1183] |
NSAP | 22 | for NSAP address, NSAP style A record | [RFC1706] |
NSAP-PTR | 23 | for domain name pointer, NSAP style | [RFC1348][RFC1637][RFC1706] |
SIG | 24 | for security signature | |
KEY | 25 | for security key | |
PX | 26 | X.400 mail mapping information | [RFC2163] |
GPOS | 27 | Geographical Position | [RFC1712] |
AAAA | 28 | 解析IPv6地址 | [RFC3596] |
LOC | 29 | Location Information | [RFC1876] |
NXT | 30 | Next Domain (OBSOLETE) | [RFC3755][RFC2535] |
EID | 31 | Endpoint Identifier | |
NIMLOC | 32 | Nimrod Locator | |
SRV | 33 | Server Selection | [RFC2782] |
ATMA | 34 | ATM Address | |
NAPTR | 35 | Naming Authority Pointer | [RFC2915][RFC2168][RFC3403] |
KX | 36 | Key Exchanger | [RFC2230] |
CERT | 37 | CERT | [RFC4398] |
A6 | 38 | A6 (OBSOLETE – use AAAA) | [RFC3226][RFC2874][RFC6563] |
DNAME | 39 | DNAME | [RFC6672] |
SINK | 40 | SINK | |
OPT | 41 | OPT | [RFC6891][RFC3225] |
APL | 42 | APL | [RFC3123] |
DS | 43 | Delegation Signer | [RFC4034][RFC3658] |
SSHFP | 44 | SSH Key Fingerprint | [RFC4255] |
IPSECKEY | 45 | IPSECKEY | [RFC4025] |
RRSIG | 46 | RRSIG | [RFC4034][RFC3755] |
NSEC | 47 | NSEC | [RFC4034][RFC3755] |
DNSKEY | 48 | DNSKEY | [RFC4034][RFC3755] |
DHCID | 49 | DHCID | [RFC4701] |
NSEC3 | 50 | NSEC3 | [RFC5155] |
NSEC3PARAM | 51 | NSEC3PARAM | [RFC5155] |
TLSA | 52 | TLSA | [RFC6698] |
Unassigned | 53-54 | ||
HIP | 55 | Host Identity Protocol | [RFC5205] |
NINFO | 56 | NINFO | |
RKEY | 57 | RKEY | |
TALINK | 58 | Trust Anchor LINK | |
CDS | 59 | Child DS | |
Unassigned | 60-98 | ||
SPF | 99 | Sender Policy Framework邮件反垃圾 | [RFC4408] |
UINFO | 100 | 用户信息 | [IANA-Reserved] |
UID | 101 | 用户标识符 | [IANA-Reserved] |
GID | 102 | 组标识符 | [IANA-Reserved] |
UNSPEC | 103 | [IANA-Reserved] | |
NID | 104 | [RFC6742] | |
L32 | 105 | [RFC6742] | |
L64 | 106 | [RFC6742] | |
LP | 107 | [RFC6742] | |
EUI48 | 108 | an EUI-48 address | [RFC7043] |
EUI64 | 109 | an EUI-64 address | [RFC7043] |
Unassigned | 110-248 | ||
TKEY | 249 | Transaction Key | [RFC2930] |
TSIG | 250 | Transaction Signature | [RFC2845] |
IXFR | 251 | 增量区域传送 | [RFC1995] |
AXFR | 252 | 完全区域传送 | [RFC1035][RFC5936] |
MAILB | 253 | mailbox-related RRs (MB, MG or MR) | [RFC1035] |
MAILA | 254 | mail agent RRs (OBSOLETE – see MX) | [RFC1035] |
ANY | 255 | 返回所有有效的记录 | [RFC1035][RFC6895] |
URI | 256 | URI | |
CAA | 257 | Certification Authority Restriction | [RFC6844] |
Unassigned | 258-32767 | ||
TA | 32768 | DNSSEC Trust Authorities | |
DLV | 32769 | DNSSEC Lookaside Validation | [RFC4431] |
Unassigned | 32770-65279 | ||
Private use | 65280-65534 | ||
Reserved | 65535 |
DNS类字段
标记为class的字段。
通常只有5种:
类型 | 代码 | 说明 |
---|---|---|
IN | 1 | 互联网 |
CS | 2 | csnet(废弃) |
CH | 3 | chaos |
HS | 4 | Hesiod |
* | 255 | 任何类型 |
泛解析
泛解析是指利用*来做子域名,实现所有的子域名都指向同一个IP地址(记录值)。例如域名 dns.com,设置泛解析 *.dns.com ,则该域名下所有的子域名(如 a.dns.com,b.dns.com,c.dns.com等)都将指向与 *.dns.com 相同的IP地址。
泛解析的优先级低于指定子域名解析,也就是说存在*.dns.com和www.dns.com两条记录的情况下,访问www.dns.com会优先用后者解析。
具体实践方法:windows server支持DNS泛解析;如果拥有域名,在域名解析中也可以使用*解析。
泛解析作用
泛域名在实际运用非常广泛,比如实现无限二级域名功能,提供免费的url转发,在IDC部门实现自动分配免费网址,在大型企业中实现网址分类管理等等,都发挥了巨大的作用:
1、可以让域名支持无限的子域名(这也是泛域名解析最大的用途)。
2、防止用户错误输入导致的网站不能访问的问题
3、可以让直接输入网址登陆网站的用户输入简洁的网址即可访问网站
4、在域名前添加任何子域名,均可访问到所指向的WEB地址