前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在vxlan网络中使用tcpdump精确过滤抓包

在vxlan网络中使用tcpdump精确过滤抓包

原创
作者头像
程序熵
发布2023-10-06 17:50:51
1.2K0
发布2023-10-06 17:50:51
举报
文章被收录于专栏:技术汇

随着云计算、虚拟化相关技术的发展,传统的网络早已无法满足于规模大、灵活性要求高的云数据中心的需求,于是便有了 overlay 网络的概念,overlay 网络中被广泛应用的就是 vxlan 技术。VXLAN 是一种新型的二层网络虚拟化技术,它可以在 IP 网络上封装以太网帧,实现不同二层网络之间的互通。VXLAN 协议属于云计算虚拟化网络的非常重要的一部分,现在大多数云计算虚拟化网络都是基于此协议实现数据中心互联和虚拟机迁移。

在一般云网络运维场景下,外层报文的三层头都是物理机(宿主机)的 ip 地址,虚拟机实际通信的源/目的 ip 地址都是被封装到了内层报文中,这样在使用 tcpdump 进行抓包诊断的时候,如果使用外层报文 ip 作为过滤条件进行抓包,则会抓取到隧道中近乎全部的流量,在大流量节点上这样抓包很容易对服务器产生过大压力,影响业务程序的性能,这个行为是不可接受的。于是我们需要以内层报文的字段数据作为过滤条件进行精确抓包。

参考 pcap-filter 的手册文档,可以使用 proto [ expr : size ] 的方式来表示数据包中的数据。例如,表达式 ip[0] & 0xf != 5 捕获所有带有选项的 IPv4 数据包。表达式 ip[2:2] > 1400 捕获 ip total length 大于 1400 的报文。

带 vxlan 封装的报文格式如下图:

在网络运维过程中,ping 测试是运维人员的常用手段之一,如果 ping 不通则可用 tcpdump 抓包判断报文是否到达通信链路中的目标节点,对于内层是 ICMP 报文的 vxlan 报文可使用如下命令进行过滤抓包:

代码语言:shell
复制
tcpdump 'udp[39]=1' -nv -i bond1

其中数字 39 由 8(sizeof udp) + 8(sizeof vxlan) + 14(sizeof eth) + 10(pos of protocol in ip header) - 1(start from 0) 计算得来,这里假设内层报文不带 vlan 标签。

同理,对于内层报文源 ip 地址为 172.10.5.33 的报文可使用如下命令进行过滤抓包:

代码语言:shell
复制
tcpdump 'udp[42:4]=0xac0a0521' -nv -i bond1

这里需要将 ip 地址转换为四字节十六进制数。

对于内层报文源或者目的 ip 地址为 172.10.5.33 的报文可使用如下命令进行过滤抓包:

代码语言:shell
复制
tcpdump 'udp[42:4]=0xac0a0521' or 'udp[46:4]=0xac0a0521' -nv -i bond1

对于内层报文中通信两端 ip 地址为 172.16.10.7 和 3.5.5.5 的报文可使用如下命令进行过滤抓包:

代码语言:shell
复制
sip='0xac100a07' ; dip='0x03050505'
tcpdump \(\("udp[42:4]=${sip}" and "udp[46:4]=${dip}"\) or \("udp[46:4]=${sip}" and "udp[42:4]=${dip}"\)\) -nv -i vnet2

在实验环境下的抓包测试截图如下

在上述过滤条件的基础上增加过滤 TCP 报文,则抓包命令如下

代码语言:shell
复制
sip='0xac100a07' ; dip='0x03050505'
tcpdump 'udp[39]=6' and \(\("udp[42:4]=${sip}" and "udp[46:4]=${dip}"\) or \("udp[46:4]=${sip}" and "udp[42:4]=${dip}"\)\) -nv -i vnet2

在实验环境下的抓包测试截图如下

如果需要更细的过滤条件来进行精细过滤抓包,参考上述示例即可编写对应的抓包命令。


参考:

相关阅读:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档