网络基础⑤-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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章