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地址

posted on 2022-03-05 09:17  王景迁  阅读(3474)  评论(0编辑  收藏  举报

导航