通過tcpdump抓取lldp/cdp報文判斷服務器上聯(lián)網絡配置

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

在一般運維工作中,時常要檢查服務器的網絡配置,例如服務器有幾個網卡,有沒有做綁定,上聯(lián)網絡情況等。一般可以從以下幾個方面判斷:

查看布線表查看CMDB搜索相關信息通過上行交換機接口mac地址以及接口描述確認拔網線查看交換機接口up/down

但是如果布線表不準確,或者cmdb信息錄入錯誤,交換機接口描述錯誤,查錯交換機,輕則影響運維工作,重則會導致生產事故,拔網線一般都是最后的無奈之舉。


(相關資料圖)

在這種情況下我們可以在服務器上通過tcpdump抓包程序,抓取lldp報文來判斷。

TOR交換機

現(xiàn)在的數據中心服務器基本上是通過TOR方式連入網絡。所謂TOR就是接入交換機的布線方式(Top of Rack),既每個機柜或者每組機柜上放置一個或者多個交換機,這個交換機就叫做TOR交換機,服務器連接TOR交換機,TOR交換機連接上一級交換機。

TOR交換機作為接入層網絡設備,采用萬兆電口或者電口連接服務器網卡,配置鏈路聚合對應服務器的網卡綁定,或者是使用單接口連接服務器單網卡。一般TOR交換機都會配置lldp協(xié)議,廣播報文抑制,VLAN等基礎配置。

LLDP協(xié)議

LLDP的協(xié)議號 :0x88cc

LLDP(Link Layer Discovery Protocol)是IEEE 802.1ab中定義的鏈路層發(fā)現(xiàn)協(xié)議。LLDP是一種標準的二層發(fā)現(xiàn)方式,可以將本端設備的管理地址、設備標識、接口標識等信息組織起來,并發(fā)布給自己的鄰居設備,鄰居設備收到這些信息后將其以標準的管理信息庫MIB(Management Information Base)的形式保存起來,以供網絡管理系統(tǒng)查詢及判斷鏈路的通信狀況。

LLDP提供了一種標準的鏈路層發(fā)現(xiàn)方式。通過LLDP獲取的設備二層信息能夠快速獲取相連設備的拓撲狀態(tài);顯示出客戶端、交換機、路由器、應用服務器以及網絡服務器之間的路徑;檢測設備間的配置沖突、查詢網絡失敗的原因。企業(yè)網用戶可以通過使用網管系統(tǒng),對支持運行LLDP協(xié)議的設備進行鏈路狀態(tài)監(jiān)控,在網絡發(fā)生故障的時候快速進行故障定位。

LLDP報文

DA(Destination MAC Address):目的MAC地址,為固定的組播MAC地址0x0180-C200-000E。SA(Source MAC Address):源MAC地址,為發(fā)送端的MAC地址。Type:報文類型,LLDP報文中該字段的值為0x88CC。LLDPDU:LLDP數據單元,LLDP信息交換的主體。FCS:幀檢驗序列。

TLV

TLV(Type/Length/Value),包含了鏈路狀態(tài)的一些基礎信息。

基本TLV字段描述如下

CDP

在思科或者銳捷網絡設備中,使用的是CDP協(xié)議,協(xié)議號是0x2000

CDP是Cisco Discovery Protocol的縮寫,它是由思科公司推出的一種私有的二層網絡協(xié)議,它能夠運行在大部分的思科設備上面。通過運行CDP 協(xié)議,思科設備能夠在與它們直連的設備之間分享有關操作系統(tǒng)軟件版本,以及IP地址,硬件平臺等相關信息。

使用場景根LLDP類似。

tcpdump

tcpdump是一個可以根據需求來抓取網絡上傳輸的數據包的工具

常用的命令選項有:

-c:設定抓取的數量

-i:指定監(jiān)聽的網口

-w:將抓取的數據包保存到文件

-s:截取報文的內容,默認截取96字節(jié),-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、抓取指定協(xié)議格式的數據包,協(xié)議格式可以是「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協(xié)議的數據包tcpdump -i eth0 tcp -vnn -r /tmp/result18、想要截獲所有192.168.22.16 的主機收到的和發(fā)出的所有的數據包: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 接收或發(fā)出的 telnet 包,使用如下命令:tcpdump tcp port 23 host192.168.22.16

服務器上抓取報文

tcpdump -i eth0 -nve ether proto 0x88cc -A -s0 -t -c 1  #lldp協(xié)議tcpdump -i eth0 -nve ether proto 0x2000 -A -s0 -t -c 1  #cdp協(xié)議

抓取結果如下:

通過system name和port description就能判斷出上聯(lián)交換機名稱和接口

標簽: 并將結果 連接服務器 目的端口

上一篇:【世界快播報】PHP后門反彈演示
下一篇:天天動態(tài):【Dubbo3終極特性】「云原生三中心架構」帶你探索Dubbo3體系下的配置中心和元數據中心、注冊中心的原理及開發(fā)實戰(zhàn)(上)