通过tcpdump抓取lldp/cdp报文判断服务器上联网络配置

2023-01-14 19:32:59 来源:51CTO博客

在一般运维工作中,时常要检查服务器的网络配置,例如服务器有几个网卡,有没有做绑定,上联网络情况等。一般可以从以下几个方面判断:

查看布线表查看CMDB搜索相关信息通过上行交换机接口mac地址以及接口描述确认拔网线查看交换机接口up/down

但是如果布线表不准确,或者cmdb信息录入错误,交换机接口描述错误,查错交换机,轻则影响运维工作,重则会导致生产事故,拔网线一般都是最后的无奈之举。


(相关资料图)

在这种情况下我们可以在服务器上通过tcpdump抓包程序,抓取lldp报文来判断。

TOR交换机

现在的数据中心服务器基本上是通过TOR方式连入网络。所谓TOR就是接入交换机的布线方式(Top of Rack),既每个机柜或者每组机柜上放置一个或者多个交换机,这个交换机就叫做TOR交换机,服务器连接TOR交换机,TOR交换机连接上一级交换机。

TOR交换机作为接入层网络设备,采用万兆电口或者电口连接服务器网卡,配置链路聚合对应服务器的网卡绑定,或者是使用单接口连接服务器单网卡。一般TOR交换机都会配置lldp协议,广播报文抑制,VLAN等基础配置。

LLDP协议

LLDP的协议号 :0x88cc

LLDP(Link Layer Discovery Protocol)是IEEE 802.1ab中定义的链路层发现协议。LLDP是一种标准的二层发现方式,可以将本端设备的管理地址、设备标识、接口标识等信息组织起来,并发布给自己的邻居设备,邻居设备收到这些信息后将其以标准的管理信息库MIB(Management Information Base)的形式保存起来,以供网络管理系统查询及判断链路的通信状况。

LLDP提供了一种标准的链路层发现方式。通过LLDP获取的设备二层信息能够快速获取相连设备的拓扑状态;显示出客户端、交换机、路由器、应用服务器以及网络服务器之间的路径;检测设备间的配置冲突、查询网络失败的原因。企业网用户可以通过使用网管系统,对支持运行LLDP协议的设备进行链路状态监控,在网络发生故障的时候快速进行故障定位。

LLDP报文

DA(Destination MAC Address):目的MAC地址,为固定的组播MAC地址0x0180-C200-000E。SA(Source MAC Address):源MAC地址,为发送端的MAC地址。Type:报文类型,LLDP报文中该字段的值为0x88CC。LLDPDU:LLDP数据单元,LLDP信息交换的主体。FCS:帧检验序列。

TLV

TLV(Type/Length/Value),包含了链路状态的一些基础信息。

基本TLV字段描述如下

CDP

在思科或者锐捷网络设备中,使用的是CDP协议,协议号是0x2000

CDP是Cisco Discovery Protocol的缩写,它是由思科公司推出的一种私有的二层网络协议,它能够运行在大部分的思科设备上面。通过运行CDP 协议,思科设备能够在与它们直连的设备之间分享有关操作系统软件版本,以及IP地址,硬件平台等相关信息。

使用场景根LLDP类似。

tcpdump

tcpdump是一个可以根据需求来抓取网络上传输的数据包的工具

常用的命令选项有:

-c:设定抓取的数量

-i:指定监听的网口

-w:将抓取的数据包保存到文件

-s:截取报文的内容,默认截取96字节,-s0表示截取全部

-r:读取数据包内容

-C 10:每10M保存一个包

-G 600:每10分钟保存一个包

使用举例

1、抓取所有的经过eth0网卡的网络包,并存到 result.cap 文件中。tcpdump -i eth0 -w result.cap2、抓取源地址是192.168.22.16的包,并将结果保存到 result.cap 文件中。tcpdump src host 192.168.22.16 -w result.cap3、抓取地址包含是192.168.22.16的包,并将结果保存到 result.cap 文件中。tcpdump host 192.168.22.16 -w result.cap4、抓取目的地址包含是192.168.22.16的包,并将结果保存到 result.cap 文件中。tcpdump dest host 192.168.22.16 -w result.cap5、抓取主机地址为 192.168.22.16 的数据包tcpdump -i eth0 -vnn host 192.168.22.166、抓取包含192.168.1.0/24网段的数据包tcpdump -i eth0 -vnn net 192.168.1.0/247、抓取网卡eth0上所有包含端口22的数据包tcpdump -i eth0 -vnn port 228、抓取指定协议格式的数据包,协议格式可以是「udp,icmp,arp,ip」中的任何一种,例如以下命令:tcpdump udp -i eth0 -vnn9、抓取经过 eth0 网卡的源 ip 是 192.168.22.16 数据包,src参数表示源。tcpdump -i eth0 -vnn src host 192.168.22.1610、抓取经过 eth0 网卡目的 ip 是 192.168.22.16 数据包,dst参数表示目的。tcpdump -i eth0 -vnn dst host 192.168.22.1611、抓取源端口是22的数据包tcpdump -i eth0 -vnn src port 2212、抓取源ip是 192.168.22.16 且目的ip端口是22的数据包tcpdump -i eth0 -vnn src host 192.168.22.16 and dst port 2213、抓取源ip是192.168.22.16或者包含端口是22的数据包tcpdump -i eth0 -vnn src host 192.168.22.16 or port 2214、抓取源ip是192.168.22.16且端口不是22的数据包tcpdump -i eth0 -vnn src host 192.168.22.16 and not port 2215、抓取源ip是192.168.22.16且目的端口是22,或源ip是192.168.1.102且目的端口是80的数据包。tcpdump -i eth0 -vnn ( src host 192.168.22.16 and dst port 22 ) or ( src host 192.168.1.102 and dst port 80 )16、把抓取的数据包记录存到/tmp/result文件中,当抓取100个数据包后就退出程序。tcpdump –i eth0 -vnn -w /tmp/result -c 10017、从/tmp/result记录中读取tcp协议的数据包tcpdump -i eth0 tcp -vnn -r /tmp/result18、想要截获所有192.168.22.16 的主机收到的和发出的所有的数据包:tcpdump host 192.168.22.1619、如果想要获取主机192.168.22.16除了和主机192.168.1.101之外所有主机通信的ip包,使用命令:tcpdump ip host 192.168.22.16 and ! 192.168.1.10120、如果想要获取主机 192.168.22.16 接收或发出的 telnet 包,使用如下命令:tcpdump tcp port 23 host192.168.22.16

服务器上抓取报文

tcpdump -i eth0 -nve ether proto 0x88cc -A -s0 -t -c 1  #lldp协议tcpdump -i eth0 -nve ether proto 0x2000 -A -s0 -t -c 1  #cdp协议

抓取结果如下:

通过system name和port description就能判断出上联交换机名称和接口

标签: 并将结果 连接服务器 目的端口

上一篇:【世界快播报】PHP后门反弹演示
下一篇:天天动态:【Dubbo3终极特性】「云原生三中心架构」带你探索Dubbo3体系下的配置中心和元数据中心、注册中心的原理及开发实战(上)