DNS 的訊息傳遞也是兩種:Query 與 Reply(就是要求與回覆),它的設計比較像HTTP,而不是郵件傳輸交互性那麼細碎。
這邊要注意,DNS 的Query 與 Reply 的格式是一樣的!
架構如圖:參見Explain DNS message format with neat diagram.
The query message consists of a header and question records; the response message consists of a header, question records, answer records, authoritative records, and additional records.
由於有些欄位只有reply需要回答,所以query的那些地方會是0
用課本的圖來說明:
因為欄位長度是固定的,所以欄位之間實際上沒有任何符號或空格區隔。
Header 包含:Identification 與 Flag
-Identification:
ID是這個message的編號,每次client問問題的ID都是16bit的隨機數。server會把client的id給copy過來,用以識別是哪一個reply。
-Flag: 也是16bit,由複合式的欄位組成,如圖:
下面是簡單說明flag 的複合欄位們:
一次讀進16bit,依序先讀Identification、Flag、questions(問題的數目)、answers(答案的數目,如果沒有就是0)、authority RRs(有幾個答案是authoritative 的答案)、additional RRs。[這裡都是指數目]
再看一下課本的圖
之後四行每一行分別是 questions section、answers section 、authority RRs、additional RRs,它們分別對應到上面questions(問題的數目)、answers(答案的數目)
實際上就會像是這樣子:
剛剛是查詢,現在這裡講註冊紀錄
我們要跟authoritative name server註冊,如果是一般小公司或是家裏要註冊DNS,為了節省成本,可以請代管EX:GoDaddy
它是一個域名註冊與網站代管的上市公司,是ICANN(負責全世界domainname管理的機構)認證的全球最大註冊商。
透過攻擊希望能達到:
DNS攻擊不只造成網路癱瘓,還會造成企業嚴重損失與機密(EX:密碼洩漏)等嚴重後果。
我歸納常見攻擊性質主要是
1)忙死 2)欺騙
「忙死」,是想辦法耗盡DNS資源,忙死DNS server或是塞爆網路,不只local DNS server,Root DNS server也會被攻擊。它會透過亂問問題(甚至問不存在的東西),使DNS 解析器不知道指定 IP 位址的網站,之後詢問其他 DNS 伺服器,如此會一直問下去,然後癱瘓服務,一般來說這類攻擊稱為拒絕服務 (DoS) 攻擊;「欺騙」是給你一個假的回覆,但是假得很像真的。
DoS攻擊中最常見的是 DDoS ( Distributed Denial-of-Service )攻擊,攻擊者不只一個,像是一個軍團。
DDoS 中又分三個子類型攻擊,分別是:洪水攻擊、應用層攻擊、協議攻擊,放大攻擊也是屬於DDos的一種。
見詳情請看:Four major DNS attack types and how to mitigate them
攔截式的中間人攻擊,攻擊者攔截client的封包,並給它一個假的回覆,如此client可能會被帶到另外一個長很像的網站(說不定會騙你的金融帳密!?);DNS 中毒也是中間人攻擊的一種,給你一個錯誤的回覆讓DNS中毒。
還有一種欺騙方法是傳假的source IP,讓Server 以為是那個假的IP的要求,所以就傳回覆給那個假的IP位址,這是spoofed source。
因為UDP比較快,但是DNS 如果在返回的數據量大於512Bytes會使用TCP,但因為大部分的回報大小不會超過512Bytes所以通常用UDP。
參見:51CTO|為什麼 DNS 協定使用 UDP? 只使用了UDP嗎?
上一篇文章:阿沁的DNS(1)
參考文章:
Explain DNS message format with neat diagram.
DNS Message — How to Read Query and Response Message
What is a DNS attack? Types of DNS attacks and how to prevent them
51CTO|為什麼 DNS 協定使用 UDP? 只使用了UDP嗎?