現實生活中,每個人都有一個身份標識身份證號碼。 作為一個獨一無二的標識,無論是考試、乘高鐵、飛機、辦理銀行卡、去網吧、去賓館…額…都有身份證的參與,可謂是學習、工作、生活的通行證。 網絡的世界里,也有這么一個存在,那就是IP地址。 先不說你接入網絡想干嘛,就問你有沒有IP地址? 沒有?還不抓緊搞一個? 什么?搞不到? 沒關系! 手把手教你如何解決無法獲取IP地址問題~~~ 1 用戶無法獲取IP地址有什么影響?嗯,很簡單,沒有IP地址,什么都做不了,且不談訪問外網,內網也無法接入。 2 工欲善其事,必先利其器通過DHCP方式獲取IP地址的原理古語有雲:機會總是留給有准備的人,故障總是留給知識儲備豐富的人。。。 若想解決用戶無法獲取IP地址的問題,那么首先必須要清楚地知道通過DHCP方式獲取IP地址的原理,詳見下圖(因現網環境差異,DHCP Snooping設備和DHCP中繼可能不存在,此時只需關注涉及DHCP客戶端和DHCP服務器的步驟即可)。 2.1 DHCP報文交互過程1. 客戶端廣播發送Discover報文:DHCP客戶端首次接入網絡,發送Discover報文,用於發現網絡中的DHCP服務器。Discover報文源IP地址全0,目的IP地址全1。 2. 沿信任接口轉發:DHCP Snooping設備將收到的Discover報文沿信任接口進行轉發。若無信任接口,則報文將被直接丟棄。 3. 單播Discover報文給服務器:DHCP中繼根據配置將Discover報文單播給指定的DHCP服務器。 4. 服務器回應Offer報文:DHCP服務器根據接收的Discover報文中的IP地址所在網段,選擇一個IP地址分配給DHCP客戶端,包含在Offer報文中。 5. 單播Offer報文給客戶端:DHCP中繼將收到的Offer報文轉發給客戶端。 6. 轉發Offer報文:DHCP Snooping設備轉發Offer報文給客戶端。 7. 客戶端單播Request:Request報文中包含客戶端選擇的DHCP服務器及IP地址(防止網絡中存在多個DHCP服務器,且均為該客戶端分配了IP地址的情況出現) 8-12過程與2-6類似,不再贅述。 2.2 DHCP角色功能:l DHCP客戶端:通過DHCP方式獲取IP地址的用戶終端。例如PC、手機、IP電話等。 l DHCP Snooping設備(可選):通過配置信任接口,保證客戶端從指定的服務器獲取IP地址。還可以記錄客戶端IP地址與MAC地址之間的對應關系,防止DHCP攻擊等。 l DHCP中繼(可選):Discover報文為廣播報文,當客戶端與服務器不在同一網段時,客戶端無法發現網絡中的服務器,此時需要借助DHCP中繼的幫助才能完成DHCP報文的交互。 l DHCP服務器:為DHCP客戶端分配IP地址等網絡參數。 3 故障排查,有跡可循故障排查思路全解析在充分了解原理的基礎之上,很容易發現:通過DHCP方式獲取IP地址,是一個從DHCP客戶端至DHCP服務器的報文交互過程,DHCP客戶端至DHCP服務器之間的任何一個設備或任何一段線路故障都有可能導致該故障。 因此可從以下幾個方面進行故障排查: 3.1 排查DHCP客戶端與DHCP服務器之間是否路由可達l 排查思路 1. 為DHCP客戶端配置靜態IP地址,Ping DHCP服務器進行測試: n 若能夠Ping通,客戶端與服務器之間路由可達,檢查DHCP配置是否有誤。 n 若不能Ping通,客戶端與服務器之間路由不可達,進行第2步和第3步排查。 2. 確定Ping不通的網絡位置:采用逐段Ping的方法,即依據網段的划分逐個網段進行Ping操作,可以將Ping不通故障最終定位到局部網絡之間。 3. 確定Ping不通的故障原因:采用流量統計或者抓包的方法,通過對統計信息或者獲取的報文進行分析,可以預判故障原因,針對故障原因進行排查,從而解決故障。 關於如何進行ping不通故障排查的詳細信息,請參見“維護寶典-維護類資料專題-Ping和Tracert”。 l 排查示例 如圖所示,PC1(MAC地址:5489-982D-78DB)、PC2與DHCP服務器位於同一網段,PC1、PC2無法從服務器獲取IP地址,假設該示例中故障為SwitchB的上行口沒有透傳VLAN 100。 1. 為DHCP客戶端配置靜態IP地址192.168.10.10,Ping DHCP服務器,無法Ping通,說明該二層網絡有問題。 PC>ping 192.168.10.1 2. 在DHCP服務器上執行命令display arp,查看設備的ARP表,無客戶端的ARP表項,說明客戶端的請求報文和Ping報文均未到達服務器。 display arp 3. 在SwitchB上執行命令display mac-address,查看設備的MAC表,SwitchB學習到客戶端的MAC地址,但是無服務器的MAC地址,說明問題可能出在SwitchB和服務器中間的網絡上。 display mac-address 4. 分別查看SwitchA和SwitchB的接口信息,發現SwitchB的上行口未透傳VLAN 100。 [SwitchA-GigabitEthernet0/0/1] display this [SwitchB-GigabitEthernet0/0/2] display this 5. 配置SwitchB的上行口透傳VLAN 100后,客戶端可以正常獲取IP地址,故障排除。 [SwitchB-GigabitEthernet0/0/1] display this 3.2 排查DHCP配置是否有誤3.2.1 排查DHCP服務器配置l 可能的故障點 1. DHCP配置不完整。 2. 地址池無可用地址。 l 排查方法 1. DHCP配置不完整: # 在DHCP服務器上任意視圖下執行display current-configuration命令查看設備DHCP服務器功能是否配置完整。 1)是否全局開啟DHCP功能:dhcp enable display current-configuration 2)是否配置全局地址池(基於全局地址池方式),如果存在DHCP中繼,需要配置與DHCP客戶端所在網段相同的地址池: display current-configuration 3)是否在接口下開啟DHCP服務器功能:dhcp select global(基於全局地址池方式)或dhcp select interface(基於接口地址池方式) display current-configuration # interface Vlanif10 2. 地址池無可用地址: # 執行命令display ip pool命令,查看服務器地址池中是否有可用的IP地址。 display ip pool interface Vlanif100 查看回顯中Idle關鍵字是否為0: n Idle不為0:服務器有可用地址,進行DHCP中繼配置排查或DHCP Snooping設備配置排查。 n Idle為0:服務器無可用地址,解決辦法如下表。
3.2.2 排查DHCP中繼配置l 可能的故障點 1. 未使能DHCP功能。 2. DHCP中繼功能。 3. 未指定或指定錯誤的DHCP服務器IP地址。 l 排查方法 # 在DHCP中繼任意視圖下執行display current-configuration命令查看設備DHCP中繼功能是否配置完善。 1. 是否全局開啟DHCP功能:dhcp enable display current-configuration 2. 是否開啟DHCP中繼功能:dhcp select relay display current-configuration 3. 是否指定DHCP服務器地址:dhcp relay server-ip 3.2.3 排查DHCP Snooping設備l 可能的故障點 1. 使能DHCP Snooping功能,但未配置信任接口(缺省情況下,所有接口為非信任接口,設備使能DHCP Snooping功能之后,將DHCP請求報文沿信任接口轉發,並接收來自信任接口的DHCP回應報文,若無信任接口將丟棄所有接收到的DHCP報文) 2. 接口下用戶數達到配置的最大值。 l 排查方法 1. 在DHCP Snooping設備上執行display dhcp snooping configuration命令,查看設備是否配置信任接口。 display dhcp snooping configuration 2. 在DHCP Snooping設備上執行display dhcp snooping命令,查看接口或VLAN下是否配置了最大用戶數。可根據實際情況執行命令dhcp snooping max-user-number調整最大接入用戶數。 display dhcp snooping DHCP snooping running information for VLAN 100 : DHCP snooping : Enable Dhcp user max number : 1024 (default) //該VLAN下配置的最大用戶數 Current dhcp user number : 3 //當前VLAN下接入的用戶數 Check dhcp-giaddr : Disable (default) Check dhcp-chaddr : Disable (default) 3.3 排查DHCP報文交互過程在何處中斷由於DHCP報文的特殊性,以及Ping測試所使用的ICMP報文與DHCP報文為兩種不同的報文類型,即使客戶端與服務器之間路由可達,DHCP配置無誤,仍然無法保證,DHCP報文交互正常。
l 排查方法 根據DHCP流程圖,可將終端獲取IP地址的故障點分為“四個設備三段網絡“,確定故障點所在位置,可通過下面三種方法: 1. 在DHCP設備上執行如下命令查看DHCP報文的收發情況,根據收發差異判斷故障點所在位置: l display dhcp statistics l display dhcp relay statistics l display dhcp snooping statistics 2. 鏡像:有關鏡像的詳細配置,請參見交換機產品文檔”配置-配置指南(通過命令行)-網絡管理與監控-鏡像配置“。 3. 抓包:使用抓包軟件在客戶端與服務器之間的設備上進行抓包,查看DHCP報文在何處中斷。 l 解決方法
4 授人以漁,更要授人以魚故障排查典型案例4.1 服務器無法收到DHCP請求報文l 網絡拓撲 如圖所示,PC和DHCP服務器位於不同的網段,DHCP中繼和DHCP服務器之間存在配置了DHCP Snooping功能的設備。 l 根因分析 DHCP中繼和DHCP服務器之間配置DHCP Snooping,檢查DHCP報文中GIADDR字段: 1. 當客戶端發出DHCP請求時,如果服務器和客戶端不在同一個網段,那么第一個DHCP中繼將DHCP請求報文轉發給DHCP服務器時,會把自己的IP地址填入GIADDR字段。 2. DHCP Snooping設備上執行命令dhcp snooping check dhcp-giaddr enable開啟了檢測DHCP報文中GIADDR字段是否非零的功能。 3. 當DHCP Snooping設備檢測到DHCP請求報文中GIADDR字段不為零時,直接丟棄。 l 解決方法 n 不改變網絡拓撲:DHCP Snooping設備上執行命令undo dhcp snooping check dhcp-giaddr enable關閉對DHCP請求報文中GIADDR字段是否非零的檢查。 n 改變網絡拓撲:將開啟DHCP Snooping功能的設備部署二層網絡中的接入設備或者客戶端服務器之間的第一個DHCP中繼上。 l 總結與建議 為了保證DHCP Snooping設備在生成DHCP Snooping綁定表時能夠獲取到用戶MAC地址等參數,DHCP Snooping功能一般應用於二層網絡中的接入設備或者客戶端與服務器之前的第一個DHCP中繼上。 4.2 設備配置流策略丟棄DHCP客戶端報文導致客戶端無法獲取IP地址l 網絡拓撲 如圖所示,PC和DHCP服務器位於同一網絡之中,SwitchA作為DHCP服務器,PC無法獲取到IP地址。 l 處理過程 1. 在SwitchA上執行命令display mac-address,發現DHCP服務器可以學到下掛PC的MAC地址,說明二層網絡無問題。 2. 在SwitchA上執行命令display ip pool,發現地址池有可用地址,說明DHCP服務器配置無問題。 3. 查看SwitchA配置。 [SwitchA] display current-configuration … … l 根因分析 客戶端的DHCP DISCOVER報文為廣播報文,目的地址為廣播地址,上送到DHCP中繼時,匹配上ACL 3002中的規則50,DHCP DISCOVER報文被丟棄,導致DHCP客戶端無法獲取到IP地址。 l 解決方法 在ACL 3002中增加一條規則,放行來自客戶端的DHCP報文。 rule 25 permit ip source 0.0.0.0 0 4.3 大量用戶同時上線導致用戶無法獲取IP地址l 網絡拓撲 如圖所示,內網中有大量DHCP客戶端同時上線時導致用戶無法獲取IP地址。 l 根因分析 設備開啟DHCP功能之后,DHCP報文會上送CPU進行處理。當網絡中大量DHCP用戶同時上線、二層網絡出現環路故障或者網絡中存在DHCP攻擊時,會導致網絡中出現大量DHCP請求報文。開啟了DHCP功能的設備,短時間內收到大量DHCP請求報文,一旦超過DHCP報文上送CPU的CPCAR值,超出部分的DHCP報文會被丟棄,導致部分甚至全部用戶無法獲取到IP地址。 l 解決方法 n 盡量避免大量用戶同時上線;對於二層接入設備(非DHCP Snooping設備),關閉DHCP功能。 n 排查二層網絡中可能存在的環路故障。 n 對於網絡中可能存在的DHCP攻擊,在交換機上開啟攻擊溯源功能,如果網絡中存在同一用戶發送大量DHCP報文,攻擊溯源功能可以檢測到該用戶的MAC地址,可以通過配置黑名單禁用該攻擊用戶。 l 總結與建議 n 如果設備未規划任何DHCP業務,請不要執行命令dhcp enable。 n 如果匯聚交換機或者核心交換機配置DHCP Snooping或DHCP中繼業務,同時開啟攻擊溯源功能。一旦在設備上檢測到DHCP攻擊,能夠快速確認攻擊源並采取相應措施。 4.4 接入交換機配置端口安全導致新用戶無法獲取IP地址l 問題描述 某網絡為了防止非法MAC地址攻擊網絡,在二層接入交換機上配置端口安全功能,並執行命令port-security max-mac-num max-number限制了接口下最多允許學習30個MAC地址。設備運行一段時間后,發現新接入用戶無法獲取IP地址,與網關不通,業務徹底中斷。 l 處理過程 1. 執行命令display mac-address查看設備學習到的MAC表項,發現設備下僅下掛一台PC但是卻已經學習到30個MAC地址(無當前接入的PC的MAC地址),且類型全部為sticky。 display mac-address 2. 查看設備配置,發現GE0/0/1接口配置端口安全功能,並配置端口最多學習的MAC地址為30個,與上面步驟中查看到的設備已經學習的MAC地址數量吻合。 display current-configuration … … 3. 刪除接口下的端口安全配置后,PC能夠正常獲取IP地址。 l 根因分析 Sticky MAC工作原理: 1. 接口會將動態學習到的MAC地址轉換為Sticky MAC。 2. Sticky MAC不會被老化,保存配置重啟設備也不會丟失,無需重新學習。 3. 當接口Sticky MAC數量超過port-security max-mac-num max-number指定的數量之后,設備不會再學習新的MAC地址,導致新用戶上線時的報文被直接丟棄,用戶無法獲取到IP地址。 l 解決方法 執行命令port-security max-mac-num配置接口下最多允許學習的MAC地址為最大值。 l 總結與建議 端口安全會對報文進行過濾,所以在使用的時候一定要明確需求選擇對應的方案進行配置: n 如果該接口要求只有第一次上線的MAC地址為合法MAC地址,后續上線的MAC地址均為非法MAC地址,不能進行通信。此時可以執行命令port-security mac-address sticky配置Sticky MAC功能,限制接口允許學習的MAC地址數量為1。 n 如果該接口要求同時只允許10個用戶上線,超出的用戶無法上線。此時可以執行命令port-security enable配置安全MAC功能,限制接口下學習的MAC地址數量為10。 n 如果該端口要求特定的MAC地址和10個動態MAC地址同時上線,超出的用戶無法上線。此時可使用安全MAC功能和手工配置靜態MAC地址來實現(手工配置的靜態MAC地址不會占用安全動態MAC表項規格)。 4.5 DHCP服務器有空閑地址,但客戶端無法獲取l 問題描述 如圖所示,網絡中共有六台PC,前五台設備上線可以正常獲取IP地址,第六台PC始終無法獲取IP地址,而此時DHCP服務器的全局地址池中有空閑地址。 l 網絡拓撲 l 處理過程 1. 查看PC所在網段,DHCP服務器連接PC的接口為GE0/0/1,對應VLANIF100。 [SwitchB] interface GigabitEthernet 0/0/1 [SwitchB] interface Vlanif 100 2. 由第一步可知,PC所在網段為192.168.10.240/29,子網掩碼為29位,可用IP地址數:2321=5,因此前五台接入的PC可以獲取到IP地址,第六台PC無法獲取到。 3. 在DHCP服務器上執行命令display ip pool查看DHCP服務器地址池信息,服務器有空閑地址,但是由於PC網關IP地址的子網掩碼配置過小,導致PC無法獲取到子網掩碼為28位的IP地址。 [SwitchB] display ip pool 4. 配置PC網關的IP地址為192.168.10.241/28,第六台PC可以正常獲取IP地址。 l 根因分析 DHCP服務器和客戶端位於同一網段,采用全局地址池方式分配IP地址,DHCP服務器收到報文的物理接口為GE0/0/1,對應的VLANIF100的IP地址為192.168.10.241/29,因此DHCP服務器將從地址池中挑選出192.168.10.240/29網段的地址分配給客戶端,而此時192.168.10.240/29除去該網段的網絡地址、廣播地址和網關地址后,僅有5個地址可用,因此第六台客戶端上線時無法獲取到IP地址。造成DHCP服務器全局地址中雖然有空閑,但是客戶端無法獲取。 l 解決方法 將VLANIF接口IP地址的掩碼和全局地址池地址掩碼配置一致。 5 畫龍點睛故障排查FAQ5.1 為什么配置了DHCP Snooping之后,下掛用戶無法獲取IP地址?l 未配置信任接口 在使能DHCP Snooping之后,設備所有接口狀態缺省都是非信任狀態。此時需要在於DHCP服務器相連的接口視圖下執行命令dhcp snooping trusted將該接口配置成信任狀態,否則客戶端發現服務器的DISCOVER報文將被直接丟棄,導致設備下掛用戶無法從DHCP Server獲取IP地址。 l 信任接口配置錯誤 配置的信任接口不是與DHCP服務器相連的接口。 5.2 Super VLAN對應的VLANIF是否可以開啟DHCP服務器功能?V100R006及后續版本支持。 5.3 非DHCP業務設備是否可以開啟DHCP功能?非DHCP業務設備不要開啟DHCP功能,原因如下: 非DHCP業務設備開啟DHCP功能,收到的所有DHCP報文都會上送CPU進行處理。 當大量用戶同時上線或由於其他原因導致網絡中的DHCP報文數量較多時,超過CPCAR值部分的DHCP報文被丟棄,部分客戶端無法獲取IP地址,甚至導致設備CPU高大量用戶無法獲取IP地址。 5.4 DHCP中繼和DHCP服務器之間能否配置NAT功能?不能 5.5 DHCP Snooping設備能否部署在DHCP中繼的上行網絡?可以,但是必須關閉檢測DHCP報文中GIADDR字段是否非零的功能。因為DHCP中繼會將該字段修改為用戶網關地址,snooping設備檢測到其非零直接丟棄。推薦DHCP Snooping功能應用於二層網絡中的接入設備。 |