1、DNS解析過程詳解
1)、在瀏覽器中輸入一個域名,例如www.tmall.com,操作系統會先檢查自己本地的hosts文件是否有這個網址映射關系,如果有,就先調用這個IP地址映射,完成域名解析, windows下hosts文件在C:/Windows/System32/drivers/etc/hosts下,linux一般都在/etc/hosts下。
2)、如果hosts里沒有這個ip到域名的映射,那么就要查找本地DNS解析器緩存,是否有這個域名到ip地址的映射關系,如果有,直接返回,完成域名解析。
3)、如果本機的hosts與本地DNS解析器緩存都沒有相應的網址映射關系,那么就要找到你的TCP/ip參數中設置的首選DNS服務器,我們叫它本地DNS服務器,此服務器收到查詢時,如果要查詢的域名,包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性。
4)、如果要查詢的域名,不由本地DNS服務器區域解析,但該服務器已緩存了此網址映射關系,則調用這個域名到ip地址的映射,完成域名解析,但是此解析不具有權威性。
5)、如果本地DNS服務器本地區域文件與緩存解析都失效,則根據本地DNS服務器的設置(是否設置轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至13台根DNS,根DNS服務器收到請求后會判斷這個域名(.com)是誰來授權管理,並會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息后,將會聯系負 責.com域的這台服務器。這台負責(.com)域名的服務器收到請求后,如果自己無法解析,它就會找一個管理(.com)域的下一級DNS服務器地址 (tmall.com)給本地DNS服務器。當本地DNS服務器收到這個地址后,就會找(tmall.com)域服務器,重復上面的動作,進行查詢,直至找到 (www.tmall.com)主機。
6)、如果用的是轉發模式,此DNS服 務器就會把請求轉發至上一級DNS服務器,由上一級服務器進行解析,上一級服務器如果不能解析,或找根DNS或把轉請求轉至上上級,以此循環。不管是本地 DNS服務器用是是轉發,還是根提示,最后都是把結果返回給本地DNS服務器,由此DNS服務器再返回給客戶機。
這里我們把從客戶端到本地DNS服務器的查找稱為遞歸查詢,而DNS服務器之間的交互查詢稱為迭代查詢。
2、DNS劫持
DNS劫持又稱域名劫持,是指在劫持的網絡范圍內攔截域名解析的請求,分析請求的域名,把審查范圍以外的請求放行,否則返回假的IP地址或者什么都不做使請求失去響應,其效果就是對特定的網絡不能反應或訪問的是假網址。舉一個簡單的例子,比如你輸入的域名地址是www.google.cn然后彈出來百度的頁面,很明顯發生了DNS域名劫持。
應對DNS劫持的方法
1)、我們都知道,訪問一個網站用域名而不用ip地址的原因就是邏輯地址不好記,但是如果你知道這個網頁的ip地址的話,你可以直接輸入ip地址來訪問從而繞開DNS解析。
2)、將自己的電腦DNS解析地址手動設置為國內比較權威又穩定的服務器地址,例如114.114.114.114、8.8.8.8。
3)、修改你的路由器密碼,登錄路由器192.168.1.1,更改你的用戶密碼,然后最好重新啟動路由器。
作為運營商來處理DNS劫持,一般運營商都會有提供多台DNS解析服務器,負責一個區域的DNS解析至少會有兩台,其中的一台發生了DNS劫持運營商就會停止該服務器的網絡地址解析工作而啟動備預案,這樣就可以預防發生DNS劫持而導致用戶主機受到攻擊甚至發生某些不法的釣魚網站竊取用戶賬戶密碼,造成財務損失的嚴重事故。