引言: 筆者單位組建了兩套相互獨立的局域網,這兩個局域網是物理隔離的,不允許互訪。前不久,網絡出現故障,用戶明明連接的是局域網A的網口,卻獲得了局域網B的IP地址、子網掩碼、網關和DNS,最可能的原因是網絡A與網絡B間發生了物理連接。如何快速排查接線點呢?筆者使用思科網絡助手(CNA),完美解決了此故障。
筆者所在單位出于安全考慮,組建了兩套相互獨立的局域網。綜合化布線時為每個用戶工作區(辦公點)安置了兩個網絡接口,分屬兩個不同的局域網。這兩個局域網是物理隔離的,不允許互訪。每套局域網均為單核心、核心層-接入層的兩層式結構,網絡拓撲結構如圖1所示。
局域網A核心層為Cisco 6504-E三層交換機,通過光纖連接29臺Cisco 2960接入層交換機,劃分了35個VLAN,IP規劃為192.168.0.0 /24,網 絡 出口區連接Internet。局域網B核心層為Cisco 6504-E三層交換機,通過光纖連接23臺Cisco 2960接 入 層交換機,劃分了 2個 VLAN,I P規 劃 為172.16.0.0/24,網絡出口區連接政務外網。所有用戶PC均為單網卡,同一時刻只能連接A、B網絡中的一個,切換網絡時需拔下網線后插入工作區另一接口。
局域網A、B均有各自的DHCP服務器,是在核心交換機上設置的,每個VLAN設一個DHCP服務器,所以網絡A有35個DHCP服務器,網絡B有2個DHCP服務器。
前不久,部分用戶反映無法正常上網。現場發現,用戶明明連接的是局域網A的網口,卻獲得了局域網B的IP地址、子網掩碼、網關和DNS。Windows命令行下用ipconfig/renew多次向DHCP服務器重新申請IP,時而得到網絡B的IP,時而得到網絡A的IP。
憑直覺判斷,最可能的原因是網絡A與網絡B間發生了物理連接,使網絡A、B組成了一個大的局域網,在這個大的局域網中同時存在35+2=37個DHCP服務器, DHCP服務器間是競爭關系,都具備向用戶提供IP地址的能力。

圖1 網絡拓撲結構

圖2 拓撲圖左側的交換機列表
用戶網卡作為DHCP Client,向網絡中發送DHCP Discover廣播報文,兩臺DHCP服務器均接收到DHCP Discover報文,然后向DHCP Client發送一個DHCP Offer報文。DHCP Client只能處理其中的一個DHCP Offer報文,一般的原則是DHCP Client處理最先收到的DHCP Offer報文,然后發出一個廣播的DHCP Request報文……
網絡A與網絡B間發生了物理連接,該連接發生在核心層或接入層的可能性均存在。由于核心交換機放置在數據中心,由數據中心的網管人員管理維護,外人無法接觸,基本上不可能發生核心層錯誤連線這種低級錯誤。經在數據中心現場勘查,沒有發現兩臺核心層交換機間有任何連接,核心層互連的可能性被排除,那么互連只可能發生在接入層。
接入層互連點又存在兩種可能,一在配線間,二在工作區。如果互連點在配線間,全單位共有十個弱電配線間,現場勘查找到互連點不需要太長時間。但如果互連點在工作區,全單位共有500多個工作區,1100多個網絡布線點(每工作區有網絡A、網絡B接口各一個),且網絡接口多數布置在辦公桌后,需移動辦公設備才能暴露網口和網線,排查的工作量非常大。那么有沒有一種簡單高效的方法來找到互連點呢?
對于Cisco的交換機,一種簡單高效的方法是,使用Cisco公司為中小型企業提供的一款免費的、幫助網管員配置思科設備的工具——思科網絡助手(CNA),優點是圖形化、可自動產生網絡拓撲,很直觀。
到思科官網下載CAN,最新版本為6.3.0,安裝過程很簡單。運行CNA,首先Create community,輸入要添加到管理組的交換機的IP或IP范圍,輸入交換機口令,軟件即開始嘗試與要管理的交換機建立通信,掃描到本組所有交換機后會形成并展示一個網絡拓撲圖,調整拓撲圖的參數,使其顯示設備鏈路接口ID、設備名稱信息。
我單位二層交換機hostname均按“建筑物名稱首字母+配線間所在樓層+F+D+本交換機在本配線間中的序號”的命名規則命名,如Z2FD3表示綜合樓二樓政務外網交換機中的第三臺,MD2表示門診樓政務外網交換機中的第二臺。目測右側區域的拓撲圖和左側區域的交換機列表(放大后如圖2),根據交換機的hostname發現問題。

圖3 發生錯誤互連的兩臺交換機

圖4 用 show cdp neighbors命令查看其相鄰的交換機
圖2字母d為創建出的community組名,表示政務外網組,其下方列出了本組所有二層交換機。Neighbors表示與本組交換機有鏈路相連的其他交換機,這里列出了兩臺,hostname分別為ws6504D和Z2FN1。其中ws6504D為核心交換機,由于思科網絡助手無法管理三層交換機,所以將其列入Neighbors組,而Z2FN1根據命名可知其是屬于網絡A中的交換機,不屬于網絡B,而網絡A、B應為物理隔離,不應有關聯,所以可判斷Z2FN1這臺交換機與網絡B中的某一臺交換機發生了不應有的連接。
觀察右側區域拓撲,與Z2FN1相連的交換機為Z2FD1(放大后如圖3),Z2FN1和Z2FD1均位于綜合樓二樓配線間。在綜合樓二樓配線間,現場勘查Z2FD1和Z2FN1這兩臺交換機之間并未發生互連,則互連必發生在工作區。查看網絡端口表可知,與Z2FN1的Fa0/46端口和Z2FD1的Fa0/40端口相連的信息插座均位于綜合樓一樓的同一間辦公室。經在該辦公室現場勘查,發現用戶私接了一臺8口的微型交換機,該交換機用兩條網線同時連接了信息插座中分屬網絡A、B的兩個網口。將其中一條網線拔掉,在思科網絡助手中刷新拓撲圖,發現交換機Z2FN1消失了,說明網絡A、B間的連接已被清除。
其實用命令行的方式也能發現和排除此類故障。首先逐一telnet網絡B中的每臺交換機,用show cdp neighbors命令查看其相鄰的交換機是哪幾個,根據hostname名判斷其是否屬于本網絡,如果發現相鄰交換機不屬于本網絡,則可判定已找到發生錯誤連接的兩臺交換機(如圖4)。此方法需遍歷community中的所有交換機,需反復輸入telnet登錄口令并重復手工敲入命令,效率低下,遠不及使用CAN方便和高效。