dns異常處理方法,dns域名查詢的兩種方式

一、IP協議

1.1 背景

網絡層一般有兩種服務:

  1. 一種是面向連接的虛電路服務,能夠保證可靠通信,建立虛電路連接,然後通過這個連接發送分組,完了後釋放虛電路。
  2. 另一種是無連接的數據包服務,走什麼路經都隨便,但是為了到達目的地必須攜帶目的主機的地址,雖然如此,發送的分組還是可能誤碼、丟失、重複或者亂序。

因為第二種做法不用提供可靠傳輸服務,網絡中的路由器就比較價格低,而且易於維護,因特網採用的就是這種服務,它採用的就是IP協議。

這種服務的好處是節省成本,那麼複雜的網絡處理功能都交給了更上一層的運輸層,他們的位置在各個主機,是處於整個互聯網的邊緣,那麼中間的因特網核心就只用完成簡單的分組交換功能。IP協議之上,要保證傳輸可靠,就有了TCP協議。

1.2 IP協議

IP協議(Internet Protocol)直譯網際協議。對上是傳輸層,對下是數據鏈路層。IP協議就是給因特網上的每一個主機/路由器的接口分配全世界範圍內唯一的標識符,就是地址。

這裡需要區別MAC地址和IP地地址。關於MAC地址,也就是媒體介入控制地址,他也是唯一的,但是他是針對於設備-設備,而異構網絡很複雜,IP協議是解決網絡和網絡之間的通信,加上小的網絡內部劃分可能就沒必要更多的協議來通信,就更加方便。

目前IP協議的地址有IPv4和IPv6兩個版本,在2011年,IPv4地址已經分配完畢了。IPv4的地址編址方法經歷了三個階段,分類編址、劃分子網、無分類編址。

1.2.1 分類編址

分了ABCDE,只有ABC給網絡中的各設備接口用,D和E是保留不往外分配的。基本是都是前幾位網絡號、後面分配,然後就有很多的不同IP地址的組合可以用。

  • A:8位網絡號+24主機號,網絡號首位固定為0
  • B:16位網絡號+16位主機號,網絡號前兩位固定10
  • C:24位網絡號+8位主機號,網絡號前兩位篤定110

A類指派範圍:1.0.0.0到126.0.0.0
B類指派範圍:128.0.0.0到191.255.0.0
C類指派範圍:192.0.0.0到223.255.255.0

1.2.2 劃分子網

引入子網掩碼,可以表明分類的IP地址有哪幾個作為了子網號,這樣本來後面全都是IP的號,就可以繼續利用子網掩碼再進行細分。子網掩碼用連續的1來對應網絡號和子網號,0對應主機號,然後子網掩碼和IP地址相與操作就可以得到這個IPv4的地址所在的子網的網絡地址。

1.2.3 無分類編址

C類空間太小,沒有得到充分利用,後來又提出了無分類編址(當然也提出了IPv6)來解決問題。無分類編址採用:

網絡地址 + ” / ” + 網絡前綴數量

的格式,比如”128.14.35.7 / 20“
就代表,這個IP地址,前面20位都是網絡號,剩下12位是主機號,這樣的話就能把整個IP地址分的更多,而不是分各種類別,各個塊里限制的比較死。

二、IP數據報首部格式

2.1 IP數據報首部字段

IP協議、IP數據報格式、DNS、DNS劫持、NAT網絡地址轉換

和其他協議的報文首部格式一樣,IP協議的功能也在這裡體現。

  1. 版本:表示Ip協議的版本,通信雙方必須一致;
  2. 首部長度:表示這個數據報首部的長度,顯然範圍就是5-15(以8字節為單位,化成比特*8)
  3. 區分服務:一半不用;
  4. 總長度:IP數據報整體長度(最大2^16-1);
  5. 標識、標誌、片偏移這三個就是用來將IP數據報分片用的,因為向下層的時候可能太長,下層的傳輸幀受到MTU最大傳輸單元限制,就是會把IP數據報分片,那麼就會查看這三個字段,表示分片的情況;標識:同一個IP數據報各分片的標識一樣;標誌:標誌允不允許分片、後面還有沒有分片;片偏移:分片數據報的數據載荷部分偏移了在原數據報位置有多少單位(8字節為單位,必須整數)
  6. 生存時間:TTL,以前表示多少秒、現在表示多少”跳“;
  7. 協議:常用值對應一個數字,比如ICMP對應1;
  8. 首部檢驗和:檢驗差錯的;
  9. 源IP地址
  10. 目的IP地址
  11. 可選字段:很少使用;
  12. 填充:因為要是8的整數倍,不夠就填。

2.2 ICMP協議

網際控制報文協議(Internet Control Message Protocol)

這個協議是為了更有效地轉發IP數據報,提高交付成功的機會。主機或者路由器使用ICMP協議發送差錯報文和詢問報文,ICMP報文被封裝在IP數據報里發送。

差錯報文分為五種:1.終點不可達;2.源點抑制;3.時間超過;4.參數問題;5.改變路由。(都是目的主機或路由器反饋給源主機或路由器的)

詢問報文有兩種:1.回送請求和回答;2.時間戳請求和回答。(都是源主機或者路由器向目的主機或路由器的)

2.3 ICMP協議應用

分組網間探測(Packet InterNet Groper)也就是,常說的PING命令。這個命令沒有經過運輸層的TCP或者UDP,直接使用了網際層的ICMP,來發送請求和回答報文。用來測試主機或者路由器的連通性。

跟蹤路由TraceRoute命令,比如windows的tracert命令。這個命令也是應用層直接使用了網際層的ICMP協議(Unix系統並是使用了UDP協議),發送請求和回答報文以及差錯報告報文,用來測試IP數據報從源主機到目的主機要經過哪些路由器。

2.4 其他

關於IP數據報的轉發,主要是設計到路由器的一些路由選擇協議、ARP(Address Resolution Protocol)地址解析協議,根據IP獲取MAC地址的過程。其中直接交付、間接交付的區別就是有沒有經過路由器轉發,路由器可以隔離衝突域、廣播域等等。

三、NAT網絡地址轉換

NAT英文全稱是“Network Address Translation”,中文意思是“網絡地址轉換”,是一種把內部私有網絡地址(IP地址)翻譯成合法網絡IP地址的技術。NAT 可以讓那些使用私有地址的內部網絡連接到Internet或其它IP網絡上。NAT路由器在將內部網絡的數據包發送到公用網絡時,在IP包的報頭把私有地址轉換成合法的IP地址。

ipv4本來都要用光了,但是有了NAT,讓ipv4又挺了20年。

3.1 原理

RFC1918規定了三個保留地址段落:10.0.0.0-10.255.255.255;172.16.0.0-172.31.255.255;192.168.0.0-192.168.255.255。這三個範圍分別處於A,B,C類的地址段,不向特定的用戶分配。

這些地址可以在任何組織或企業內部使用,和其他Internet地址的區別就是,僅能在內部使用,不能作為全球路由地址。對於一個封閉的組織,如果其網絡不連接到Internet,就可以使用這些地址,而不用申請

對於有Internet訪問需求、內部又使用私有地址的網絡,就要在組織的出口位置部署NAT網關,在報文離開私網進入Internet時,將源IP替換為公網地址,通常是出口設備的接口地址。依據這種模型,NAT網關夾在中間做一個轉換,數量龐大的內網主機就不再需要公有IP地址了。

一般使用私網ip作為局域網內部的主機標識,使用公網ip作為互聯網上通信的標識,在整個NAT的轉換中,最關鍵的流程有以下幾點:

  • 網絡被分為私網和公網兩個部分,NAT網關設置在私網到公網的路由出口位置,雙向流量必須都要經過NAT網關
  • 網絡訪問只能先由私網側發起,公網無法主動訪問私網主機;
  • NAT網關在兩個訪問方向上完成兩次地址的轉換或翻譯,出方向做源信息替換,入方向做目的信息替換;
  • NAT網關的存在對通信雙方是保持透明的;
  • NAT網關為了實現雙向翻譯的功能,需要維護一張關聯表,把會話的信息保存下來。

3.2 靜態NAT

如果一個內部主機唯一佔用一個公網IP,這種方式被稱為一對一模型。此種方式下,轉換上層協議就是不必要的,因為一個公網IP就能唯一對應一個內部主機。

顯然,這種方式對節約公網IP沒有太大意義,主要是為了實現一些特殊的組網需求。比如用戶希望隱藏內部主機的真實IP,或者實現兩個IP地址重疊網絡的通信。

3.3 動態NAT

它能夠將未註冊的IP地址映射到註冊IP地址池中的一個地址。

不像使用靜態NAT那樣,你無需靜態地配置路由器,使其將每個內部地址映射到一個外部地址,但必須有足夠的公有因特網IP地址,讓連接到因特網的主機都能夠同時發送和接收分組

3.4 NAT重載

這是最常用的NAT類型。NAT重載也是動態NAT,它利用源端口將多個私網ip地址映射到一個公網ip地址,它也被稱為網絡地址端口轉換NAPT(Network Address Port Translation)(Port-Level NAT)(多對一)。

通過使用PAT(NAT重載),只需使用一個公網ip地址,就可將數千名用戶連接到因特網。其核心之處就在於利用端口號實現公網和私網的轉換。
面對私網內部數量龐大的主機,如果NAT只進行IP地址的簡單替換,就會產生一個問題:當有多個內部主機去訪問同一個服務器時,從返回的信息不足以區分響應應該轉發到哪個內部主機。
此時,需要NAT設備根據傳輸層信息或其他上層協議去區分不同的會話,並且可能要對上層協議的標識進行轉換,比如TCP或UDP端口號。

這樣NAT網關就可以將不同的內部連接訪問映射到同一公網IP的不同傳輸層端口,通過這種方式實現公網IP的復用和解復用。

這種方式也被稱為端口轉換PAT、NAPT或IP偽裝,但更多時候直接被稱為NAT,因為它是最典型的一種應用模式。

也就是說,我們利用端口號的唯一性實現了公網ip轉換為私網ip的這一步。PAT(NAT重載)能夠使用傳輸層端口號來標識主機,因此,從理論上說,最多可讓大約65000台主機共用一個公有IP地址。

3.5 NAT優缺點

優點

最大優點就是節省大量的IP資源

缺點

NAT最大的弊端,破壞了IP端到端通信的能力,因此無法進行端到端的ip跟蹤。

同時,NAT實現了對UDP或TCP報文頭中的的IP地址及端口轉換功能,但有些應用層的協議比如FTP載荷中帶有地址或者端口信息,這些內容不能被NAT進行有效的轉換,就可能導致問題。

四、DNS

4.1 介紹

DNS(Domain Name System)域名系統

我們知道計算機之間的通信,其實都是基於IP地址的,可是我們訪問的時候往往使用的網址髕骨是ip地址,這是因為IP地址太難記了啊!

那麼輸入網址如何訪問IP,其實就是DNS服務器在幫助我們做地址解析。

因特網採用的是層次結構命名樹作為域名,各層分量用點隔開,總共組成一個域名。格式如下:

xxx . 三級域名 . 二級域名 . 頂級域名

各級的域名是由上一級管理機構管理,頂級域名則由一個機構:因特網名稱與數字地址分配機構ICANN管理。

  • 國家頂級域名例如 cn 中國,us 美國,通用頂級域名例如com公司企業、net網絡服務機構、org非營利性組織;
  • 二級域名例如edu教育機構,行政區劃分域名;
  • 再往下都是自由發揮,因特網沒有做規定。

4.2 域名服務器解析域名的過程

用來解析域名的域名服務器也可以劃分為四種類型:

  1. 根域名服務器;
  2. 頂級域名服務器;
  3. 權限域名服務器;
  4. 本地域名服務器。

本來每次訪問一個域名,都需要依次查詢,但是為了效率,利用了緩存來解決這個問題, 瀏覽器、操作系統、本地DNS、根域名服務器,它們都會對DNS結果做一定程度的緩存。所以實際上的過程並不是直接那些服務器工作的。

比如:如果我現在要訪問 www.baidu.com ,那麼過程是這樣的:

  1. 瀏覽器從瀏覽器的DNS緩存中檢查是否有這個網址的映射關係,如果有,就返回IP,完成域名解析,沒有則轉向2;
  2. 操作系統會先檢查自己本地的hosts文件是否有這個網址的映射關係,如果有,就返回IP,完成域名解析,沒有則轉向3;
  3. 電腦就要向本地DNS服務器發起請求查詢www.baidu.com這個域名,如果緩存中有的話直接返回,沒有則轉向4;
  4. 本地DNS服務器,拿出一個根DNS服務器的地址,然後向其中一台發起請求;
  5. 根DNS服務器拿到請求,查出一個IP,也就是com對應的服務器的IP,返回給本地DNS服務器;
  6. 本地DNS服務器根據返回的IP向其發起請求;
  7. com的服務器拿到請求,查出一個IP,也就是baidu.com對應的服務器的IP,返回給本地DNS服務器;
  8. 本地DNS服務器根據返回的IP向其發起請求;
  9. baidu.com的服務器拿到請求,查出www.baidu.com的IP地址,返回給本地DNS服務器;
  10. 本地DNS服務器給客戶端,並進行緩存,客戶端就可以直接訪問了。

其中,顯然1、2、3,都是緩存直接優先查找,交給下一級操作,找到了就直接返回,主機到本地域名服務器的查詢過程,採用的是遞歸查詢
4 5,6 7,8 9是三個來回過程,本地向不同級別的其他服務器查找的過程,都是本地服務器發出的請求,是迭代查詢

Windows的命令:
ipconfig/displaydns -查看被緩存的域名解析
ipconfig/flushdns -清空DNS緩存

問題:根服務器在哪裡?

按照百度百科的說法是原有的13台加上為ipv6新建的25台,在世界各地選址的。

4.3 DNS 劫持

顯然,域名和IP的對應過程是一個DNS解析過程,那麼解析的服務器本人是可能被綁架的。

攻擊者劫持了DNS服務器,通過某些手段取得某域名的解析記錄控制權,進而修改此域名的解析結果,導致用戶對該域名地址進行訪問的時候,由原來的IP地址轉入到修改後的IP地址。結果就是讓正確的網址不能解析或者是被解析到另一個網址的IP,實現獲取用戶資料或者破壞原有網址正常服務的目的。

4.4 DNS 污染

又稱域名服務器緩存投毒,是指一些刻意製造或無意中製造出來的域名服務器數據包,把域名指往不正確的IP地址。它和DNS劫持的不同之處,在於污染針對的是DNS緩存,是在查詢信息到達目標DNS服務器前,經過的節點上做手腳,也就是說,這個假的數據包並不是在網絡數據包經過的路由器上,而是在其旁路產生的,因為是UDP協議,最快返回的會被認為是答案,那麼最後會先返回一個錯誤答案。

需要說明的是,傳統來理解,這個查詢過程需要快速,並且可能要訪問很多個服務器去查詢,所以是採用UDP協議進行傳輸的,比TCP快。
但也不一定,比如報文長度和DNS污染各種各樣的攻擊出現,UDP的不可靠因素太大,所以加上了TLS版本(像https一樣),所以其實是基於TCP協議了。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/229587.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-10 12:30
下一篇 2024-12-10 12:30

相關推薦

發表回復

登錄後才能評論