
在一般運維工作中,時常要檢查服務器的網絡配置,例如服務器有幾個網卡,有沒有做綁定,上聯(lián)網絡情況等。一般可以從以下幾個方面判斷:
查看布線表查看CMDB搜索相關信息通過上行交換機接口mac地址以及接口描述確認拔網線查看交換機接口up/down但是如果布線表不準確,或者cmdb信息錄入錯誤,交換機接口描述錯誤,查錯交換機,輕則影響運維工作,重則會導致生產事故,拔網線一般都是最后的無奈之舉。
(相關資料圖)
在這種情況下我們可以在服務器上通過tcpdump抓包程序,抓取lldp報文來判斷。
現(xiàn)在的數據中心服務器基本上是通過TOR方式連入網絡。所謂TOR就是接入交換機的布線方式(Top of Rack),既每個機柜或者每組機柜上放置一個或者多個交換機,這個交換機就叫做TOR交換機,服務器連接TOR交換機,TOR交換機連接上一級交換機。
TOR交換機作為接入層網絡設備,采用萬兆電口或者電口連接服務器網卡,配置鏈路聚合對應服務器的網卡綁定,或者是使用單接口連接服務器單網卡。一般TOR交換機都會配置lldp協(xié)議,廣播報文抑制,VLAN等基礎配置。
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ā)生故障的時候快速進行故障定位。
TLV(Type/Length/Value),包含了鏈路狀態(tài)的一些基礎信息。
基本TLV字段描述如下
在思科或者銳捷網絡設備中,使用的是CDP協(xié)議,協(xié)議號是0x2000
CDP是Cisco Discovery Protocol的縮寫,它是由思科公司推出的一種私有的二層網絡協(xié)議,它能夠運行在大部分的思科設備上面。通過運行CDP 協(xié)議,思科設備能夠在與它們直連的設備之間分享有關操作系統(tǒng)軟件版本,以及IP地址,硬件平臺等相關信息。
使用場景根LLDP類似。
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)交換機名稱和接口