「Linux」使用tcpdump抓包的簡單實驗

tcpdump的參數和表達式很多,這裡只演示一些常用的操作。


常用參數:

-D 查看哪些接口可以抓包。

-i 指定監聽接口。如果沒指定,tcpdump 會從系統接口列表中搜尋編號最小的已配置好的接口(不包括 loopback 接口)

-c 抓幾個包。

-n 不解析主機名

-nn 不對協議和端口號解析

-v 詳細信息,-vv、-vvv詳細程度遞增

-w 將抓取的數據包保存為文件


常用表達式關鍵字:

tcp 抓取tcp協議數據包

udp 抓下UDP協議數據包

icmp 抓ping包

src 源

dst 目的

and or not等表達式


實驗部分:

2臺Linux服務器:PC1:

192.168.50.100和PC2:192.168.50.200。PC1使用tcpdump抓包,PC2發包。

tcpdump -i enp0s3 -c 10

抓取接口enp0s3的所有數據包,因為數據包太多,所以這裡只抓10個:

「Linux」使用tcpdump抓包的簡單實驗

tcpdump -i enp0s3 -c 10

[root@ljds ~]# tcpdump -i enp0s3 port 22 -c 10

抓取接口enp0s3上端口是22的數據包,也只抓了10個:

「Linux」使用tcpdump抓包的簡單實驗

tcpdump -i enp0s3 port 22 -c 10

這裡沒有帶參數-nn,所以22端口自動解析為ssh,192.168.50.100解析為ljds的主機名。如果帶上-nn,則不做解析,直接以數字形式顯示:

[root@ljds ~]# tcpdump -i enp0s3 port 22 -c 10 -nn

「Linux」使用tcpdump抓包的簡單實驗

tcpdump -i enp0s3 port 22 -c 10 -nn

[root@ljds ~]# tcpdump -i enp0s3 port 999 and host 192.168.50.200 -nn

抓取接口enp0s3上端口是999和主機192.168.50.200通信的數據包:

「Linux」使用tcpdump抓包的簡單實驗

tcpdump -i enp0s3 port 999 and host 192.168.50.200

以上輸出顯示了數據包的收發,如果帶上src或者dst則可只抓取“源”自xx的數據包,或者“目標”是xx的數據包:

[root@ljds ~]# tcpdump -i enp0s3 port 999 and src 192.168.50.200 -nn

「Linux」使用tcpdump抓包的簡單實驗

tcpdump -i enp0s3 port 999 and src 192.168.50.200

除了直接看抓包信息排查網絡問題,也可把數據包全部抓取保存成文件。回去慢慢分析:

[root@ljds ~]# tcpdump -i enp0s3 -w /root/ljds.pcap

「Linux」使用tcpdump抓包的簡單實驗

tcpdump -i enp0s3 -w /root/ljds.pcap

之後用Wireshark打開該文件:

「Linux」使用tcpdump抓包的簡單實驗

使用Wireshark打開抓包文件


分享到:


相關文章: