記錄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地址