tcpdump


安裝tcpdump

通過yum命令來直接安裝(推薦)

yum install tcpdump -y

通過源碼來安裝tcpdump

# 登錄http://www.tcpdump.org/,下載源碼包。
# 下載tcpdump-4.9.3.tar.gz和libpcap-1.9.1.tar.gz。
	
# 安裝libpcap
tar -zxvf libpcap-1.9.1.tar.gz
cd libpcap-1.9.1
./configure

yum install -y gcc
./configure

 

yum install flex bison -y
./configure
make
make install
# 安裝tcpdump
tar -zxvf tcpdump-4.9.3.tar.gz
cd tcpdump-4.9.3
./configure
make
make install

tcpdump二進制文件在/usr/local/sbin目錄下。

tcpdump命令解析

命令格式

抓包參數:
-c:指定要抓取的包數量。
-i interface:指定tcpdump需要監聽的接口。
-n:對地址以數字方式顯示。
-nn:在-n基礎上,把端口顯示為數值。
-N:不打印出host的域名部分。
-P:指定要抓取的包是流入還是流出的包,支持"in"、"out"和"inout",默認是"inout"。
-s len:設置tcpdump的數據包抓取長度。

示例

# -s 0表示包不截斷
tcpdump -v -n -i eth2 dst xxx.xxx.xxx.xxx -s 0 -w test.cap
tcpdump -i eth0 host 192.168.0.2 -nevvv
tcpdump -i ens33 src 192.168.0.108 and icmp -nevvv

抓取兩個不同節點上的容器ping包

環境信息

node1-192.168.0.108
容器1-10.244.1.2
node2-192.168.0.101
容器2-10.244.2.2

通信場景

容器1一直ping容器2。

抓包方法

# node2上抓包
tcpdump -v -n -i ens33 udp and dst 192.168.0.101 -s 0 -w test.cap

分析包

問題:Linux上抓取的UDP 8472端口報文在Wireshark中沒有顯示成vxlan格式

通過wireshark打開test.cap。
默認情況,Wireshark認為udp 4789端口對應的數據包為Vxlan協議數據包。Linux內核默認vxlan的協議端口是UDP 8472端口,因此在抓包使用wireshark統計觀察分析Linux系統下的數據時,不能默認直接解析為vxlan協議,直接將vxlan協議的數據作為UDP的數據。需要手動設置,把8472端口的數據包解析為vxlan格式。

選擇一個報文后右鍵點擊Decode As

當前選擇VXLAN,點擊OK。

重啟Wireshark之后失效。

查看vxlan包內容

手動輸入過濾條件ip.src==10.244.1.2並回車,篩選出源地址是10.244.1.2的報文。

報文結構分為UDP報文、VXLAN頭和ICMP報文。

UDP報文源IP是192.168.0.108,目的端口是192.168.0.101,源端口是48361,目的端口是8472,源MAC地址是00:0c:29:ad:12:d1,目的MAC地址是00:0c:29:d4:93:47。
node1 ens33 MAC地址

node2 ens33 MAC地址

VXLAN頭的VNI是1。

ICMP報文的源地址是10.244.1.2,目的地址是10.244.2.2,源MAC地址是f6:31:e1:0d:58:2c,目的MAC地址是76:57:ad:7d:45:b6。
node1 flannel.1 MAC地址

node2 flannel.1 MAC地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM