Virtual Network---tcpdump抓包高阶用法

Virtual Network—tcpdump抓包高阶用法

前言

tcpdump 是网络抓包的常用工具,基本的使用都已经很熟悉了,本篇主要记录tcpdump 的高阶用法,旨在应用于vxlan、gre、ipip等类型封装报文,大流量场景下精确抓包过滤条件,保证环境安全 等场景;

封装报文的抓包过滤

在现在SDN 定义网络大行其道的今天,各种overlay 虚拟网络下,报文的封装,外层、内层报文已经是非常常见的场景了,这对我们抓包就提出了要求,在一般云网络运维场景下,外层报文都是物理机(宿主机)的ip地址,实际通信的源/目的地址 都是被封装到了内层报文中,这样在使用tcpdump 进行过滤抓包的时候,如果选择使用外层报文ip 进行过滤,则会抓取到近乎全部的流量,对于大流量节点,这个行为是不可接受的,很容易对服务器产生过大压力,影响性能。

目前比较常见的封装报文的技术有VxLAN和隧道(gre、ipip等),其中vxlan是通过udp协议进行封装的,隧道方式是通过ip层封装的;具体的封装原理和报文样式 这里就不描述了,不同场景和产品的封装的内部还是会有所区别,这里只是着重记录tcpdump 应该如果直接过滤内层报文,即过滤包头信息;

首先了解如何从包头过滤信息

proto[x:y]          : 过滤从x字节开始的y字节数。比如ip[2:2]过滤出3、4字节(第一字节从0开始排)
proto[x:y] & z = 0  : proto[x:y]和z的与操作为0
proto[x:y] & z !=0  : proto[x:y]和z的与操作不为0
proto[x:y] & z = z  : proto[x:y]和z的与操作为z
proto[x:y] = z      : proto[x:y]等于z

操作符 : >, <, >=, <=, =, !=

操作值都是16进制

那么对于gre隧道模式下,gre隧道是通过IP层进行的报文封装,那么从ip层过滤信息,就可以写成ip[30:4] 即代表ip层第31位起,向后4 byte,这里的值都是16进制,就可以写为:ip[30:4]=0xAC100009

这里0xAC1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值