linux的tcpdump命令主要用于網路問題的除錯中,通過抓取傳輸程序的資料包進行分析和除錯,而wireshark則是一款功能強大,使用方便的資料包分析工具,tcpdump+wireshark組合使用,完美,perfect,讓網路問題無處遁形,
目錄
1 tcpdump及wireshark基本介紹
1.1 tcpdump
1.2 wireshark
2 tcpdump抓包
2.1 常用命令
2.1.1 默認啟動
2.1.2 監視指定網路介面的資料包
2.1.3 監視指定主機的資料包
2.1.4 指定抓包數量
2.1.5 抓包精簡顯示
2.1.6 按照協議型別抓包
2.1.7 指定主機和埠號進行抓包
2.1.8 抓包并保存
2.2 tcpdump詳細引數
3 wireshark匯入資料包進行分析
1 tcpdump及wireshark基本介紹
1.1 tcpdump
tcpdump是基于Unix系統的命令列式的資料包嗅探工具,可以抓取流動在網卡上的資料包,默認情況下,tcpdump不會抓取本機內部通訊的報文,根據網路協議堆疊的規定,對于報文,即使是目的地是本機,也需要經過本機的網路協議層,所以本機通訊肯定是通過API進入了內核,并且完成了路由選擇,
linux抓包原理:
Linux抓包是通過注冊一種虛擬的底層網路協議來完成對網路報文(準確的說是網路設備)訊息的處理權,當網卡接收到一個網路報文之后,它會遍歷系統中所有已經注冊的網路協議,例如以太網協議、x25協議處理模塊來嘗試進行報文的決議處理,這一點和一些檔案系統的掛載相似,就是讓系統中所有的已經注冊的檔案系統來進行嘗試掛載,如果哪一個認為自己可以處理,那么就完成掛載,當抓包模塊把自己偽裝成一個網路協議的時候,系統在收到報文的時候就會給這個偽協議一次機會,讓它來對網卡收到的報文進行一次處理,此時該模塊就會趁機對報文進行窺探,也就是把這個報文完完整整的復制一份,假裝是自己接收到的報文,匯報給抓包模塊,
1.2 wireshark
wireshark是一種資料包分析工具,在各種網路應用中,比如通過思博倫的Spirent_TestCenter(TC)、Ixia測驗儀抓取介面報文或者利用本文介紹的linux自帶的tcpdump監聽抓包工具,抓包后匯出報文再匯入wireshark工具中進行圖形化分析,
2 tcpdump抓包
2.1 常用命令
2.1.1 默認啟動
tcpdump
普通情況下,直接啟動tcpdump將監視第一個網路介面上所有流過的資料包,但是由于linux默認網卡的問題,可能出現下面報錯:
tcpdump: packet printing is not supported for link type NFLOG: use -w
此時,可以通過ifconfig或者ip address命令查看網卡資訊,并通過指定網口進行資料抓包

2.1.2 監視指定網路介面的資料包
tcpdump -i ens33

2.1.3 監視指定主機的資料包
指定通過網口ens33, 并且進出口IP地址為10.193.12.119的資料包
tcpdump -i ens33 host 10.193.12.119

指定通過網口ens33, 并且主機10.193.12.12 和主機10.193.17.4 或10.193.12.119之間的通信
tcpdump -i ens33 -n host 10.193.12.12 and \( 10.193.17.4 or 10.193.12.119 \)

指定通過網口ens33, 并且主機10.193.12.12 和非主機10.193.17.4之間的通信
tcpdump -i ens33 -n host 10.193.12.12 and ! 10.193.17.4

指定通過網口ens33, 并且由主機10.193.12.12發送的所有資料
tcpdump -i ens33 -n src 10.193.12.12

指定通過網口ens33, 并且由主機10.193.12.12接收的所有資料
tcpdump -i ens33 -n dst 10.193.12.12

2.1.4 指定抓包數量
指定通過網口ens33, 并且由主機10.193.12.12接收的連續5個資料包
tcpdump -i ens33 -n dst 10.193.12.12 -c 5

2.1.5 抓包精簡顯示
tcpdump -i ens33 -n dst 10.193.12.12 -c 5 -q
指定通過網口ens33, 并且由主機10.193.12.12接收的連續5個資料包,并采用精簡顯示,可與上圖進行對比
2.1.6 按照協議型別抓包
以ping為例,我們知道ping的協議型別為icmp,我們可以指定icmp協議型別進行抓包
tcpdump -i ens33 -n icmp

2.1.7 指定主機和埠號進行抓包
指定網卡ens33,埠號為55555并且ip地址為10.193.12.12的連續10個資料包

2.1.8 抓包并保存
抓包并保存package.cap檔案,可匯出后再匯入wireshark進行包分析
tcpdump -i ens33 -n port 55555 and host 10.193.12.12 -c 10 -w package.cap

2.2 tcpdump詳細引數
- -a 嘗試將網路和廣播地址轉換成名稱,
- -c<資料包數目> 收到指定的資料包數目后,就停止進行傾倒操作,
- -d 把編譯過的資料包編碼轉換成可閱讀的格式,并傾倒到標準輸出,
- -dd 把編譯過的資料包編碼轉換成C語言的格式,并傾倒到標準輸出,
- -ddd 把編譯過的資料包編碼轉換成十進制數字的格式,并傾倒到標準輸出,
- -e 在每列傾倒資料上顯示連接層級的檔案頭,
- -f 用數字顯示網際網路地址,
- -F<表達檔案> 指定內含表達方式的檔案,
- -i<網路界面> 使用指定的網路截面送出資料包,
- -l 使用標準輸出列的緩沖區,
- -n 不把主機的網路地址轉換成名字,
- -N 不列出域名,
- -O 不將資料包編碼最佳化,
- -p 不讓網路界面進入混雜模式,
- -q 快速輸出,僅列出少數的傳輸協議資訊,
- -r<資料包檔案> 從指定的檔案讀取資料包資料,
- -s<資料包大小> 設定每個資料包的大小,
- -S 用絕對而非相對數值列出TCP關聯數,
- -t 在每列傾倒資料上不顯示時間戳記,
- -tt 在每列傾倒資料上顯示未經格式化的時間戳記,
- -T<資料包型別> 強制將表達方式所指定的資料包轉譯成設定的資料包型別,
- -v 詳細顯示指令執行程序,
- -vv 更詳細顯示指令執行程序,
- -x 用十六進制字碼列出資料包資料,
- -w<資料包檔案> 把資料包資料寫入指定的檔案,
3 wireshark匯入資料包進行分析

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/262498.html
標籤:其他
