網絡基礎⑤-Linux下抓包工具tcpdump

TCPDump可以將網絡中傳送的數據包完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息。

DNS解析抓包

以下將查看dns解析是否正常,先看下配置的DNS服務器

#vi /etc/resolv.conf
nameserver 114.114.114.114
nameserver 114.114.115.115

然後在執行如下命令

[root@k8s-node01 ~]# tcpdump -n -i any port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes

其中-n表示不要把IP地址解析成域名,-i表示抓取哪塊網卡的通信
數據包,any表示任意一塊,port是指定要抓取數據包的端口,DNS服務工作在53端口上。

在另一個終端下ping百度,-c3表示ping次停下

[root@k8s-node01 ~]# ping -c3 www.baidu.com
#切到第一個終端,可以看到如下信息
21:55:38.533888 IP 192.168.1.105.32895 > 114.114.114.114.domain: 39946+ A? www.baidu.com. (31)
21:55:38.591319 IP 114.114.114.114.domain > 192.168.1.105.32895: 39946 3/0/0 CNAME www.a.shifen.com., A 163.177.151.110, A 163.177.151.109 (90)
21:55:38.639687 IP 192.168.1.105.50333 > 114.114.114.114.domain: 5641+ PTR? 110.151.177.163.in-addr.arpa. (46)
21:55:38.676668 IP 114.114.114.114.domain > 192.168.1.105.50333: 5641 NXDomain 0/1/0 (121)

在上圖中我們可看到本地192.168.1.105,端口39946進程向DNS服務器114.114.114.114,請求告知www.baidu.com的IP地址是什麼?114.114.114.114DNS服務器成功給了我們答覆,由此可以說明,我們的DNS工作正常。

抓取一個TCP包

安裝nginx服務並啓動

yum install nginx -y  
cd /usr/local/
 ./nginx

然後windows訪問
在這裏插入圖片描述
在終端執行tcpdump -n -i ens33 port 80,ens33當前網卡的名稱。

[root@k8s-node01 local]# tcpdump -n -i ens33 port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

然後在瀏覽器中刷新一下,可以看到抓取到了如下內容

listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
22:16:42.420241 IP 192.168.1.101.55212 > 192.168.1.105.http: Flags [S], seq 4001849877, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
22:16:42.420684 IP 192.168.1.105.http > 192.168.1.101.55212: Flags [S.], seq 338815126, ack 4001849878, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
22:16:42.425098 IP 192.168.1.101.55212 > 192.168.1.105.http: Flags [.], ack 1, win 16425, length 0

tcpdump常見參數

-i 指定要抓取數據包的網卡名稱

tcpdump -i ens33 抓取ens33網卡的數據包

-c 指定抓取包的個數

tcpdump -i eth0 -c 10 # 只抓取10個包

-w 把抓取到的數據存放到文件中供以後分析

[root@k8s-node01 tmp]# tcpdump -n -i ens33 tcp port 80 -c 10 -w /tmp/tcp.cap
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

將tcp.cap在windows中用wireshark打開在這裏插入圖片描述
指定過濾端口(port)和主機名(host)
tcpdump -n -i eth0 port 80
tcpdump -n -i eth0 host baidu.com
tcpdump -n -i eth0 host baidu.com and port 80

tcpdump -i eth0 port 80 -nn -S
-i 指定網卡
port 指定端口號 http 80;ftp 21 ;ssh 22;telnet 23;smtp 25 ;dns udp53 ;ntp udp 123

抓icmp
tcpdump -i eth0 icmp -n
-n 不把ip解析成主機名
-nn 不把端口解析成應用層協議
-c 指定抓包的數量
-S 不把隨機序列和確認序列解析成絕對值

tcpdump -i eth0 port 80 -c 10 -S
抓tcp某端口的數據包
tcpdump -i eth0 tcp port 21 -nn
抓udp某端口的數據包
tcpdump -i eth0 udp port 53 -nn
抓icmp的數據包
tcpdump -i eth0 icmp -nn -w /tmp/123.cap

發佈了45 篇原創文章 · 獲贊 1 · 訪問量 3558
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章