DNS相关内容学习笔记1

记录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地址

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注