wireshark搭建dns伺服器
① 怎麼利用wireshark抓包分析DNS工作原理
先要高清DNS報文頭,每個欄位的意思,然後通過抓包工具看報文交互過程
② 如何使用wireshark捕獲訪問某個網站的數據包
用wireshark只能捕獲到程序安裝所在計算機上的數據包,dns解析是一個涉及不同域名伺服器的過程,你無法在本機上得知全部過程,但是能捕獲到解析請求和最終的返回結果。
1、首先打開wireshak,開始捕捉。
2、打開瀏覽器,訪問網站
大概的過程就這些,等網站被打開,你所描述的數據基本上都有了。
分析其中的數據,dns、tcp握手等都在其中。看協議類型即可。
ip地址、mac地址也在數據包中,wireshark默認不顯示mac地址,你可以在column preferences中添加新欄目hardware src(des) address即可
下面是數據包的截圖,前兩個dns,後面是tcp握手,接下來就是http請求和數據了,訪問的是新浪網站,瀏覽器為maxthon4。
話說你要瀏覽器和網站截圖干什麼??那個與分析過程無關。
③ 如何通過python構造一個DNS查詢包
可以嘗試以下步驟:
ping一個域名,用wireshark抓一個DNS的query,看看各個欄位分別是什麼值;
用python的struct將這些欄位按順序pack成二進制數據;
用python的socket將構造好的數據發到DNS伺服器UDP的53號埠,本地埠可以自行指定;
用python的socket從buffer中讀取server返回的數據;
用python的struct將二進制數據中各個欄位按順序unpack回來;
列印顯示。
按照這個方法,同樣可以寫一個簡單的DNS伺服器,希望能有所幫助。
再具體點,可以參照The TCP/IP Guide 中的DNS message format來構造query的各個欄位:
Header部分
Identifier:16位的int,就是0-65535,可以用隨機數產生。
Flags:0x0100,其中:
#0... .... .... .... = Query/Response
Flag: query=0
#.000 0... .... .... = Opcode: standard query=0
#.... .0.. .... .... = Authoritative
Answer Flag
#.... ..0. .... .... = Truncated: not truncated=0
#.... ...1 .... .... = Recursion desired: recursively=1,如果想 iteratively就置1
#.... .... 0... .... = Recursion Available: response的東西,=0
#.... .... .000 .... = Zero: 保留欄位,=0
#.... .... .... 0000 = Response Code:=0
3.Question Count:16位的int,=0x0001
4.Answer Record Count:16位的int,=0x0000
5.Authority
Record Count:16位的int,=0x0000
6.Additional Record Count:16位的int,=0x0000
Question部分
QName:直接把域名打包進去;
QType:16位的int,我們要得到的是主機名,所以=0x0001,
QClass:16位的int,=0x0001
④ 在使用wireshark分析DNS協議時,flagS各項中表示的含義
flagS是flag Segment的縮寫,是標志欄位。
它其實是IP報文頭中的一個欄位,因為TCP、UDP協議,應用層協議大部分都是封裝在IP包中的,所以分析這些協議時,就會經常看到這個欄位。
標識欄位有3位。
Reserved bit:1位,是保留位,一般用不上;
Don't fragment :1位,用來表示數據包是否分片(Not set表示數據包沒有分片);
More fragment:1位,用來表示是否是最後一個片段(Not set表示是最後一個)。
⑤ 誰知道怎麼配置dns和路由表 還用wireshark
wireshark是網路分析工具,您要配置DNS和路由表是在什麼場景下配置呢?比如Windows伺服器還是Linux伺服器還是路由器上面配置DNS服務,路由表要有具體的拓撲或者配置好的路由器才能查看。