tcpdump安装和使用
2022/3/6 7:17:08
本文主要是介绍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命令解析
命令格式
tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ]
[ -s snaplen ] [ -w file ] [ expression ]
抓包选项:
-c:指定要抓取的包数量。注意,是最终要获取这么多个包。例如,指定"-c 10"将获取10个包,但可能已经处理了100个包,只不过只有10个包是满足条件的包。
-i interface:指定tcpdump需要监听的接口。若未指定该选项,将从系统接口列表中搜寻编号最小的已配置好的接口(不包括loopback接口,要抓取loopback接口使用tcpdump -i lo),一旦找到第一个符合条件的接口,搜寻马上结束。可以使用'any'关键字表示所有网络接口。
-n:对地址以数字方式显示。
-nn:在-n基础上,把端口显示为数值。
-N:不打印出host的域名部分。例如tcpdump将会打印'nic'而不是'nic.ddn.mil'。
-P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"。
-s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。
输出选项:
-e:输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。
-q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。
-X:输出包的头部数据,会以16进制和ASCII两种方式同时输出。
-XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。
-v:当分析和打印的时候,产生详细的输出。
-vv:产生比-v更详细的输出。
-vvv:产生比-vv更详细的输出。
其他功能性选项:
-D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。
-F:从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。
-w:将抓包数据输出到文件中而不是标准输出。可以同时配合"-G time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。
-r:从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。
示例
# -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
抓取两个不同节点上的容器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地址
这篇关于tcpdump安装和使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享