一、tcpdump
1、作用
tcpdump 指令可列出經(jīng)過指定網(wǎng)絡(luò)界面的數(shù)據(jù)包文件頭,可以將網(wǎng)絡(luò)中傳送的數(shù)據(jù)包的 “頭” 完全截獲下來提供分析。它支持針對(duì)網(wǎng)絡(luò)層、協(xié)議、主機(jī)、網(wǎng)絡(luò)或端口的過濾,并提供 and、or、not 等邏輯語句來幫助你摘取有用信息。
由于它需要將網(wǎng)絡(luò)接口設(shè)置為混雜模式,普通用戶不能正常執(zhí)行,但具備 root 權(quán)限的用戶可以直接執(zhí)行它來獲取網(wǎng)絡(luò)上的信息
其他抓包工具
wireshark具有圖形化和命令行兩種版本,可以對(duì) tcpdump 抓的包進(jìn)行分析,其主要功能就是分析數(shù)據(jù)包。
ngrep它將抓到的包數(shù)據(jù)以文本形式直接顯示出來,適用于包數(shù)據(jù)包含文本的[抓包]分析 (如 HTTP、MySQL)
2、命令選項(xiàng)
tcpdump [選項(xiàng)] [協(xié)議] [數(shù)據(jù)流方向] [范圍]
-a 將網(wǎng)絡(luò)地址和廣播地址轉(zhuǎn)變成名字
-A 以 ASCII 格式打印出所有分組,并將鏈路層的頭最小化
-b 數(shù)據(jù)鏈路層上選擇協(xié)議,包括 ip/arp/rarp/ipx 都在這一層
-c 指定收取數(shù)據(jù)包的次數(shù),即在收到指定數(shù)量的數(shù)據(jù)包后退出 tcpdump
-d 將匹配信息包的代碼以人們能夠理解的匯編格式輸出
-dd 將匹配信息包的代碼以 c 語言程序段的格式輸出
-ddd 將匹配信息包的代碼以十進(jìn)制的形式輸出
-D 打印系統(tǒng)中所有可以監(jiān)控的網(wǎng)絡(luò)接口
-e 在輸出行打印出數(shù)據(jù)鏈路層的頭部信息
-f 將外部的 Internet 地址以數(shù)字的形式打印出來,即不顯示主機(jī)名
-F 從指定的文件中讀取表達(dá)式,忽略其他的表達(dá)式
-i 指定監(jiān)聽網(wǎng)絡(luò)接口
-l 使標(biāo)準(zhǔn)輸出變?yōu)榫彌_形式,可以數(shù)據(jù)導(dǎo)出到文件
-L 列出網(wǎng)絡(luò)接口已知的數(shù)據(jù)鏈路
-n 不把網(wǎng)絡(luò)地址轉(zhuǎn)換為名字
-N 不輸出主機(jī)名中的域名部分,例如 www.baidu.com 只輸出 www
-nn 不進(jìn)行端口名稱的轉(zhuǎn)換
-P 不將網(wǎng)絡(luò)接口設(shè)置為混雜模式
-q 快速輸出,即只輸出較少的協(xié)議信息
-r 從指定的文件中讀取數(shù)據(jù),一般是 - w 保存的文件
-w 將捕獲到的信息保存到文件中,且不分析和打印在屏幕
-s 從每個(gè)組中讀取在開始的 snaplen 個(gè)字節(jié),而不是默認(rèn)的 68 個(gè)字節(jié)
-S 將 tcp 的序列號(hào)以絕對(duì)值形式輸出,而不是相對(duì)值
-T 將監(jiān)聽到的包直接解析為指定的類型的報(bào)文,常見的類型有 rpc(遠(yuǎn)程過程調(diào)用)和 snmp(簡單網(wǎng)絡(luò)管理協(xié)議)
-t 在輸出的每一行不打印時(shí)間戳
-tt 在每一行中輸出非格式化的時(shí)間戳
-ttt 輸出本行和前面以后之間的時(shí)間差
-tttt 在每一行中輸出 data 處理的默認(rèn)格式的時(shí)間戳
-u 輸出未解碼的 NFS 句柄
-v 輸出稍微詳細(xì)的信息,例如在 ip 包中可以包括 ttl 和服務(wù)類型的信息
-vv 輸出相信的保報(bào)文信息
3、tcpdump 表達(dá)式
關(guān)于數(shù)據(jù)類型的關(guān)鍵字
包括 host、port、net:
host 192.168.100.1 表示一臺(tái)主機(jī),net 192.168.100.0 表示一個(gè)網(wǎng)絡(luò)網(wǎng)段,port 80 指明端口號(hào)為 80,在這里如果沒有指明數(shù)據(jù)類型,那么默認(rèn)就是 host
數(shù)據(jù)傳輸方向的關(guān)鍵字
包括 src、dst、dst or src、dst and src,這些關(guān)鍵字指明了傳輸?shù)姆较?,比?src 192.168.100.1 說明數(shù)據(jù)包源地址是 192.168.100.1。dst net 192.168.100.0 指明目的網(wǎng)絡(luò)地址是 192.168.100.0,默認(rèn)是監(jiān)控主機(jī)對(duì)主機(jī)的 src 和 dst,即默認(rèn)監(jiān)聽本機(jī)和目標(biāo)主機(jī)的所有數(shù)據(jù)
協(xié)議關(guān)鍵字
包括 ip、arp、rarp、udp
其他關(guān)鍵字
運(yùn)算類型:or、and、not、!
輔助功能型:gateway、less、broadcast、greater
4、tcpdump 捕獲方式
tcpdump [協(xié)議類型] [源或目標(biāo)] [主機(jī)名稱或 IP] [or/and/not/! 條件組合] [源或目標(biāo)] [主機(jī)名或 IP] [or/and/not/! 條件組合] [端口] [端口號(hào)] …… [or/and/not/! 條件組合] [條件]
>tcpdumpipdst192.168.10.1andsrc192.168.10.10andport80andhost!www.baidu.com
tcpdump
默認(rèn)監(jiān)聽在第一塊網(wǎng)卡,監(jiān)聽所有經(jīng)過此網(wǎng)卡的數(shù)據(jù)包
>tcpdump-iens33
監(jiān)聽指定網(wǎng)卡 ens33 的所有傳輸數(shù)據(jù)包
>tcpdump-iens33host192.168.100.10
捕獲主機(jī) 192.168.100.10 經(jīng)過網(wǎng)卡 ens33 的所有數(shù)據(jù)包(也可以是主機(jī)名,但要求可以解析出 IP 地址)
第一列:報(bào)文的時(shí)間
第二列:網(wǎng)絡(luò)協(xié)議 IP
第三列:發(fā)送方的 ip 地址、端口號(hào)、域名,上圖顯示的是本機(jī)的域名,可通過 / etc/hosts 查看本機(jī)域名
第四列:箭頭 >, 表示數(shù)據(jù)流向
第五列:接收方的 ip 地址、端口號(hào)、域名,
第六列:冒號(hào)
第七列:數(shù)據(jù)包內(nèi)容,報(bào)文頭的摘要信息,有 ttl、報(bào)文類型、標(biāo)識(shí)值、序列、包的大小等信息
>tcpdumphost192.168.130.151and192.168.130.152or192.168.130.153192.168.130.152or192.168.130.153
捕獲主機(jī) 192.168.56.209 和主機(jī) 192.168.56.210 或 192.168.56.211 的所有通信數(shù)據(jù)包
>tcpdumpiphostnode9andnotwww.baidu.com
捕獲主機(jī) node9 與其他主機(jī)之間(不包括 www.baidu.com)通信的 ip 數(shù)據(jù)包
>tcpdumpiphostnode9and!www.baidu.com
捕獲 node9 與其他所有主機(jī)的通信數(shù)據(jù)包(不包括 www.baidu.com)
>tcpdump-iens33srcnode10
捕獲源主機(jī) node10 發(fā)送的所有的經(jīng)過 ens33 網(wǎng)卡的所有數(shù)據(jù)包
>tcpdump-iens33dsthostwww.baidu.com
捕獲所有發(fā)送到主機(jī) www.baidu.com 的數(shù)據(jù)包
監(jiān)聽主機(jī) 192.168.56.1 和 192.168.56.210 之間 ip 協(xié)議的 80 端口的且排除 www.baidu.com 通信的所有數(shù)據(jù)包:
>tcpdumpipdst192.168.56.1andsrc192.168.56.210andport80andhost!baidu.com
也可以寫成 tcpdump ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host not www.baidu.com,即 not 和!都是相同的取反的意思
>tcpdumparp
監(jiān)控指定主機(jī)的通信數(shù)據(jù)包與 1.9.1 方式相同
>tcpdumptcpport22andhost192.168.56.210
捕獲主機(jī) 192.168.56.210 接收和發(fā)出的 tcp 協(xié)議的 ssh 的數(shù)據(jù)包
tcpdump udp port 53
監(jiān)聽本機(jī) udp 的 53 端口的數(shù)據(jù)包,udp 是 dns 協(xié)議的端口,這也是一個(gè) dns 域名解析的完整過程
5、常用的過濾條件
tcpdump 可以支持邏輯運(yùn)算符
and: 與運(yùn)算,所有的條件都需要滿足,可用 “and”和 “&&” 表示
or:或運(yùn)行,只要有一個(gè)條件滿足就可以,可用 “or” 和“|”表示
not:取反,即取反條件,可以用 “not” 和“!”表示
>tcpdumpicmpandsrc192.168.100.10-iens33-n
過濾 icmp 報(bào)文并且源 IP 是 192.168.100.10
關(guān)注[入門小站]領(lǐng)資料。
多條件格式
在使用多個(gè)過濾條件進(jìn)行組合時(shí),有可能需要用到括號(hào),而括號(hào)在 shell 中是特殊符號(hào),又需要使用引號(hào)將其包含。用括號(hào)的主要作用是邏輯運(yùn)算符之間存在優(yōu)先級(jí),!>and > or, 為例條件能夠精確所以需要對(duì)一些必要的組合括號(hào)括起來,而括號(hào)的意思相當(dāng)于加減運(yùn)算一樣,括起來的內(nèi)容作為一個(gè)整體進(jìn)行邏輯運(yùn)算。
過濾源地址是 192.168.100.1 并且目的地址是 192.168.20.20 的數(shù)據(jù)包或者 ARP 協(xié)議的包
>tcpdump**src**host192.168.10.10-iens33-n-c5
過濾源 IP 地址是 192.168.10.10 的包
>tcpdump**dst**host192.168.10.10-iens33-n-c5
過濾目的 IP 地址是 192.168.10.10 的包
基于端口進(jìn)行過濾
>tcpdumpport22-iens33-n-c5 >過濾端口號(hào)為22即ssh協(xié)議的
關(guān)注[入門小站]領(lǐng)資料。
>tcpdumpportrange22-433-iens33-n-c8
過濾端口號(hào) 22-433 內(nèi)的數(shù)據(jù)包
二、wireshark
1、什么是 wireshark
Wireshark 是一個(gè)網(wǎng)絡(luò)封包分析軟件。網(wǎng)絡(luò)封包分析軟件的功能是捕獲網(wǎng)絡(luò)數(shù)據(jù)包,并盡可能顯示出最為詳細(xì)的網(wǎng)絡(luò)封包資料。Wireshark 使用 WinPCAP 作為接口,直接與網(wǎng)卡進(jìn)行數(shù)據(jù)報(bào)文交換
2、安裝 wireshark
Linux 中有兩個(gè)版本的 wireshark,一個(gè)是 wireshark,這個(gè)版本是無圖形化界面,基本命令是”tshark“。
一個(gè)是 wireshark-gnome(界面版本),這個(gè)版本只能安裝在支持 GUI 功能的 Linux 的版本中。
>yum-yinstallwireshark//安裝無圖形化版本 >yum-yinstallwireshark-gnome//安裝圖形化版本
注:這里的通過 yum 進(jìn)行安裝,需要提前做好 epel 源(即紅帽操作系統(tǒng)額外拓展包),裝上了 EPEL 之后,就相當(dāng)于添加了一個(gè)第三方源。官方的 rpm repository 提供的 rpm 包也不夠豐富,很多時(shí)候需要自己編譯那太辛苦了,而 EPEL 可以解決官方 yum 源數(shù)據(jù)包不夠豐富的情況。
安裝epel源
>yum-yinstallepel-release
3、tshark 命令
tshark是wireshark的命令行工具 tshark選項(xiàng)參數(shù) -i:指定捕獲的網(wǎng)卡接口,不設(shè)置默認(rèn)第一個(gè)非環(huán)回口接口 -D:顯示所有可用的網(wǎng)絡(luò)接口列表 -f:指定條件表達(dá)式,與 tcpdump 相同 -s:設(shè)置每個(gè)抓包的大小,默認(rèn) 65535,多于這個(gè)大小的數(shù)據(jù)將不會(huì)不會(huì)被截取。 -c:捕獲指定數(shù)量的數(shù)據(jù)包后退出 -w:后接文件名,將抓包的結(jié)果輸出到. pcap 文件中,可以借助其他網(wǎng)絡(luò)分析工具進(jìn)行分析,也可以使用重定向>把解碼后的輸出結(jié)果以 txt 的格式輸出。 -p:設(shè)置網(wǎng)絡(luò)接口以非混合模式工作,即只關(guān)心和本機(jī)有關(guān)的流量 -r:后接文件路徑,用于分析保持好的網(wǎng)絡(luò)包文件,比如 tcpdump 的輸出文件 -n:禁止所有地址名字解析,即禁止域名解析, 默認(rèn)是允許所有 -N:指定對(duì)某一層的地址名字解析,如果- n 和- N 同時(shí)存在,則- n 將被忽略,如果兩者都不寫,則會(huì)默認(rèn)打開所有地址名字解析 m:代表數(shù)據(jù)鏈路層 n:代表網(wǎng)絡(luò)層 t:代表傳輸層 -V:設(shè)置將解碼結(jié)果的細(xì)節(jié)輸出,否則解碼結(jié)果僅顯示一個(gè) packet 一行的 summary -t:設(shè)置結(jié)果的時(shí)間格式 ad:表示帶日期的絕對(duì)時(shí)間 a:表示不帶日期的絕對(duì)時(shí)間 r:表示從第一個(gè)包到現(xiàn)在的相對(duì)時(shí)間 d:表示兩個(gè)相鄰包之間的增量時(shí)間
tshark-f"icmp"-iens33-V-c1
過濾 icmp 報(bào)文,并展開詳細(xì)信息
tshark-f"arp"-iens33
過濾 arp 報(bào)文
4、圖形化界面
?
三、Tcpdump 和 wireshark 合用
Tcpdump 解析報(bào)文信息沒有 wireshark 詳細(xì),所以可以通過 Tcpdump 捕獲數(shù)據(jù)并輸出,再通過 wireshark 進(jìn)行解析,輸出文件格式為. pcap 或者其他
在虛擬機(jī)上通過 wireshark 讀取
使用 ip.addr == [ip 地址號(hào)] 可以過濾掉無關(guān) ip
??圖形讀取
用 wireshark 直接打開查看
總結(jié)
tcpdump 和 wireshark 兩種單以抓包的功能來看,是相似的,兩者的命令行的選項(xiàng)也是有相同,但是 tcpdump 對(duì)數(shù)據(jù)包分析的能力不是很好,同時(shí)目前很多 Linux 內(nèi)置安裝了 tcpdump 這個(gè)工具,所以我們可以通過 tcpdump 把數(shù)據(jù)包抓出并存放到我們自定義的文件(.pcap)中,再通過把文件取出用 wireshark 進(jìn)行分析排障
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209323 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7553瀏覽量
88729
原文標(biāo)題:總結(jié)
文章出處:【微信號(hào):5G通信,微信公眾號(hào):5G通信】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論