想要在DNS劫持中獲得某些信息,須要有可控的DNS服務器,下面就來搭建本身的DNS服務器,以便添加記錄或者記錄請求日誌,分析數據獲取就價值的信息.linux
DNS服務器搭建nginx
考慮到dns服務器性能要求不是很高,開始的方案有三個:windows
1.使用openwrt內建的dnsmasq來對客戶端發來的請求作解析和轉發,硬件使用一臺路由器能夠實現.瀏覽器
2.使用VMware創建linux虛擬機而後使用bind之類的軟件實現.緩存
3.使用新的物理主機來實現.服務器
方案一簡單省電,但性能估計不會很高,由於後期可能須要在上面搭建nginx作反向和跳轉之用,方案一暫時不選用,方案二可知足性能與伸縮性的要求,可是須要宿主機(個人筆記本)一直開啓,功耗和便利性不盡人意.方案三可知足全部需求,正好有塊閒置的AMD E-350主板,品牌BIOSTAR(映泰),型號爲A68I-350 DELUXE ,版型ITX mini,面向HTPC市場.可以使用小機箱.並且amd全系cpu支持虛擬化,後期可作虛擬主機使用,伸縮性比較好,功耗不高.可長期開啓.雖然性能不高,但對付簡單的dns請求和nginx跳轉等非CPU密集任務,應該能夠.性能
主板長這樣:測試
有了主板,接下來淘寶了內存硬盤主機箱,後來主機箱由於擋板孔位不對和電源問題,花了兩天時間改裝,期間各類不細說.開始打算使用vmware esxi來虛擬化主機,省的常常用顯示器可鍵盤管理,格式化好硬盤刻好U盤後發現,系統要求最少4096Mb,google
而個人4Gb被顯卡共享掉了一些恰好不能夠安裝,雖然能夠破解,可是很麻煩.無奈之下選擇了Windows Server 2008做爲操做系統長期使用.後期管理可以使用遠程桌面.就這樣,一臺獨立的windows服務器誕生了.spa
WIndows Server 2008 R2 DNS 服務器搭建過程很簡單,網上可搜索到教程,下面來配置該服務器,使得它能返回錯誤的迴應到客戶端.正向查找區域點擊右鍵(正向查找與反向查找區別請參考百度百科),選擇新建區域,
出現新建區域嚮導,點擊下一步,選擇主要區域,而後點擊下一步
出現新的區域名稱,這裏須要注意,假如你要修改www.google.com的dns迴應,則填寫www.google.com,不可填寫google.com,不然後面添加www主機名後,客戶端只能獲取這一個主機的迴應,其他主機例如map的迴應客戶端將沒法獲取,
這個理解起來須要域方面的知識,本文暫時不討論相關知識.
接下來區域文件和動態更新選擇默認和不容許,而後完成
而後在剛纔建立的區域上點擊右鍵,選擇新建主機
出現新建主機,名稱不填寫,會使用父域名稱,也就是www.google.com,ip地址填寫你要回應的ip,本例選擇迴應百度的ip,這樣在客戶端請求www.google.com的時候,返回的是baidu的ip,填好後點擊添加主機,若是你想這條記錄在
反向查找時起做用,就勾選"建立相關指針(PTR)記錄".
至此,一條解析配置完成.如今客戶端請求www.google.com的數據包送到這臺服務器上後,會返回百度的ip地址,也就是說,當用戶想要訪問www.google.com的時候,瀏覽器中出現的會是百度的頁面.那客戶端的其餘請求怎麼辦?
不可能把全部的域名都添加到服務器中,因此還須要配置轉發器,將本地沒有的映射轉發到上一級進行查詢,那上一級沒有怎麼辦?這個不是本文的重點,有興趣可詳細瞭解域名查詢過程及遞歸迭代等方式.本例使用阿里巴巴公
共dns服務器和谷歌公共dns服務器做爲上級.在dns服務器根部點擊右鍵,選擇屬性,而後點擊轉發器,而後點擊編輯.
添加阿里巴巴223.5.5.5和谷歌8.8.8.8點擊肯定,而後dns的配置基本完成.
我所在的運營商到google公共dns服務器a,也就是8.8.8.8的延遲爲77ms,不知道是否是真的,仍是google在大陸有鏡像服務器?
測試可用性
dns服務器配置完成,下面將本地的dns指向剛配的服務器,看看會發生什麼?
因爲dns緩存的存在,首先須要刷新操做系統dns緩存,而後使用nslookup查看解析狀況,能夠看到已經成功解析了.
可是在用瀏覽器測試的時候,發現一個問題,就是訪問google的時候鏈接會被重置,用burp查看,發現百度服務器發現請求頭的host爲www. google.com.就會重置連接,致使訪問失敗.
將請求頭改成www.baidu.com的時候,則沒有問題
請看:
因爲百度啓用https,因此在http請求的第一次迴應會返回一個302,將瀏覽器引導到https上面:
這個小插曲,致使瀏覽器不能演示,可是卻意外發現了百度的這個邏輯,還不錯.若是想要瀏覽器看到想要的結果,估計要修改dns域和IP地址,指向不檢查請求頭host的站,那有沒有這種站?不知道...沒有的話能夠本身搭建.下邊的文章
會在物理dns上面搭建nginx環境,屆時能夠看到實際的效果.