【交换机在江湖】用户无法获取IP地址故障专题

 

交换机在江湖 官方号 2016-8-11 21:06:54 最新回复:2019-08-12 09:34:12
 1.3W  7  1  9

现实生活中,每个人都有一个身份标识身份证号码。

作为一个独一无二的标识,无论是考试、乘高铁、飞机、办理银行卡、去网吧、去宾馆…额…都有身份证的参与,可谓是学习、工作、生活的通行证。

网络的世界里,也有这么一个存在,那就是IP地址。

先不说你接入网络想干嘛,就问你有没有IP地址?

没有?还不抓紧搞一个?

什么?搞不到?

没关系!

手把手教你如何解决无法获取IP地址问题~~~

1      用户无法获取IP地址有什么影响?

嗯,很简单,没有IP地址,什么都做不了,且不谈访问外网,内网也无法接入。

2      工欲善其事,必先利其器通过DHCP方式获取IP地址的原理

古语有云:机会总是留给有准备的人,故障总是留给知识储备丰富的人。。。

若想解决用户无法获取IP地址的问题,那么首先必须要清楚地知道通过DHCP方式获取IP地址的原理,详见下图(因现网环境差异,DHCP Snooping设备和DHCP中继可能不存在,此时只需关注涉及DHCP客户端和DHCP服务器的步骤即可)。

2.1      DHCP报文交互过程

【交换机在江湖】用户无法获取IP地址故障专题-1939257-1

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。

【交换机在江湖】用户无法获取IP地址故障专题-1939257-2

1. 为DHCP客户端配置静态IP地址192.168.10.10,Ping DHCP服务器,无法Ping通,说明该二层网络有问题。

PC>ping 192.168.10.1 
 
Ping 192.168.10.1: 32 data bytes, Press Ctrl_C to break 
From 192.168.10.10: Destination host unreachable 
From 192.168.10.10: Destination host unreachable 
From 192.168.10.10: Destination host unreachable 
From 192.168.10.10: Destination host unreachable 
From 192.168.10.10: Destination host unreachable 
 
--- 192.168.10.1 ping statistics --- 
  5 packet(s) transmitted 
  0 packet(s) received 
  100.00% packet loss

2. 在DHCP服务器上执行命令display arp,查看设备的ARP表,无客户端的ARP表项,说明客户端的请求报文和Ping报文均未到达服务器。

display arp 
IP ADDRESS      MAC ADDRESS     EXPIRE(M) TYPE INTERFACE      VPN-INSTANCE       
                                          VLAN  
------------------------------------------------------------------------------ 
192.168.10.1    4c1f-cc60-702b            I -  Vlanif100 
------------------------------------------------------------------------------ 
Total:1         Dynamic:0       Static:0     Interface:1

3. 在SwitchB上执行命令display mac-address,查看设备的MAC表,SwitchB学习到客户端的MAC地址,但是无服务器的MAC地址,说明问题可能出在SwitchB和服务器中间的网络上。

display mac-address 
MAC address table of slot 0: 
------------------------------------------------------------------------------- 
MAC Address    VLAN/       PEVLAN CEVLAN Port            Type      LSP/LSR-ID   
               VSI/SI                                              MAC-Tunnel   
------------------------------------------------------------------------------- 
5489-982d-78db 100         -      -      Eth0/0/1        dynamic   0/-          
------------------------------------------------------------------------------- 
Total matching items on slot 0 displayed = 1

4. 分别查看SwitchA和SwitchB的接口信息,发现SwitchB的上行口未透传VLAN 100。

[SwitchA-GigabitEthernet0/0/1] display this  

interface GigabitEthernet0/0/1 
 port link-type access 
 port default vlan 100 

return 
[SwitchA-GigabitEthernet0/0/1]

[SwitchB-GigabitEthernet0/0/2] display this  

interface GigabitEthernet0/0/2 

return 
[SwitchB-GigabitEthernet0/0/2]

5. 配置SwitchB的上行口透传VLAN 100后,客户端可以正常获取IP地址,故障排除。

[SwitchB-GigabitEthernet0/0/1] display this  

interface GigabitEthernet0/0/1 
 port link-type trunk 
 port trunk allow-pass vlan 100 

return 
[SwitchB-GigabitEthernet0/0/1]

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 
#
dhcp enable
#

2)是否配置全局地址池(基于全局地址池方式),如果存在DHCP中继,需要配置与DHCP客户端所在网段相同的地址池:

display current-configuration 
#
ip pool 1 
 gateway-list 192.168.10.1 
 network 192.168.10.0 mask 255.255.255.0 
#

3)是否在接口下开启DHCP服务器功能:dhcp select global(基于全局地址池方式)或dhcp select interface(基于接口地址池方式)

display current-configuration

#

interface Vlanif10
 ip address 192.168.10.1 255.255.255.0
 dhcp select global
#

2.      地址池无可用地址:

# 执行命令display ip pool命令,查看服务器地址池中是否有可用的IP地址。

display ip pool interface Vlanif100                                 
  Pool-name        : Vlanif100                                                   
  Pool-No          : 0                                                           
... 
 ------------------------------------------------------------------------------- 
  Network section                                                                
         Start           End       Total    Used Idle(Expired) Conflict Disabled 
 ------------------------------------------------------------------------------- 
     192.168.4.1   192.168.4.254     254       0        254(0)       0     0     
 -------------------------------------------------------------------------------

查看回显中Idle关键字是否为0:

n  Idle不为0:服务器有可用地址,进行DHCP中继配置排查或DHCP Snooping设备配置排查。

n  Idle为0:服务器无可用地址,解决办法如下表。

解决方法

接口地址池

全局地址池

增加地址数量

l  减小地址掩码长度

l  将客户端划分到更多VLAN之中,增加地址池数量

l  增加DHCP服务器数量

减小地址租期

接口视图下执行命令dhcp server leaselease

全局地址池视图下执行命令lease lease

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 
#
dhcp enable
#

2.      是否开启DHCP中继功能:dhcp select relay

display current-configuration 

interface Vlanif100 
 ip address 192.168.10.1 255.255.255.0 
 dhcp select relay
 dhcp relay server-ip 192.168.20.2
#

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 

dhcp snooping enable   //全局开启DHCP Snooping功能

vlan 100 
 dhcp snooping enable    //VLAN下开启DHCP Snooping功能

interface GigabitEthernet0/0/3 
 dhcp snooping trusted   //配置信任接口
#

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地址的故障点分为“四个设备三段网络“,确定故障点所在位置,可通过下面三种方法:

【交换机在江湖】用户无法获取IP地址故障专题-1939257-3

1.      在DHCP设备上执行如下命令查看DHCP报文的收发情况,根据收发差异判断故障点所在位置:

l  display dhcp statistics

l  display dhcp relay statistics

l  display dhcp snooping statistics

2.      镜像:有关镜像的详细配置,请参见交换机产品文档”配置-配置指南(通过命令行)-网络管理与监控-镜像配置“。

3.      抓包:使用抓包软件在客户端与服务器之间的设备上进行抓包,查看DHCP报文在何处中断。

l  解决方法

设备类型

解决方法

客户端

l  重启客户端。

l  “禁用-再激活”网卡。

DHCP业务设备

l  设备CPU高:参见“CPU高专题资料”。

l  用户视图下执行命令debugging dhcp { snooping | relay | server | stack } error,打开DHCP各模块错误信息的调试开关,查看出错的原因。

l  寻求技术支持人员帮助。

4      授人以渔,更要授人以鱼故障排查典型案例

4.1      服务器无法收到DHCP请求报文

l  网络拓扑

如图所示,PC和DHCP服务器位于不同的网段,DHCP中继和DHCP服务器之间存在配置了DHCP Snooping功能的设备。

【交换机在江湖】用户无法获取IP地址故障专题-1939257-4

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地址。

【交换机在江湖】用户无法获取IP地址故障专题-1939257-5

l  处理过程

1.         在SwitchA上执行命令display mac-address,发现DHCP服务器可以学到下挂PC的MAC地址,说明二层网络无问题。

2.         在SwitchA上执行命令display ip pool,发现地址池有可用地址,说明DHCP服务器配置无问题。

3.         查看SwitchA配置。

[SwitchA] display current-configuration



acl number 3002 
 rule 5 permit ip destination 192.168.30.1 0 
 rule 10 permit ip destination 192.168.30.2 0 
 rule 15 permit ip destination 192.168.30.3 0 
 rule 20 permit ip destination 192.168.30.4 0 
 rule 50 deny ip 

 traffic classifier c2 operator and 
 if-match acl 3002 

 traffic behavior b2 
 permit 

 traffic policy p2 match-order config 
 classifier c2 behavior b2 

interface GigabitEthernet0/0/1 
 port link-type trunk 
 port trunk allow-pass vlan 100 
 traffic-policy p2 inbound   //接口下应用流策略丢弃除指定IP地址之外的所有报文,导致DHCP报文被丢弃,客户端无法获取到IP地址。 
#

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地址。

【交换机在江湖】用户无法获取IP地址故障专题-1939257-6

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 
-------------------------------------------------------------------------------  
MAC Address          VLAN/VSI                    Learned-From          Type 
 -------------------------------------------------------------------------------  
0000-0000-0001          100/-                    GE0/0/1             sticky 
... 
0000-0000-0030          100/-                    GE0/0/1             sticky 
-------------------------------------------------------------------------------  
 Total items displayed = 30

2.         查看设备配置,发现GE0/0/1接口配置端口安全功能,并配置端口最多学习的MAC地址为30个,与上面步骤中查看到的设备已经学习的MAC地址数量吻合。

display current-configuration



interface GigabitEthernet0/0/1 
 port-security enable 
 port-security max-mac-num 30 
#

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  网络拓扑

【交换机在江湖】用户无法获取IP地址故障专题-1939257-7

l  处理过程

1.         查看PC所在网段,DHCP服务器连接PC的接口为GE0/0/1,对应VLANIF100。

[SwitchB] interface GigabitEthernet 0/0/1 
[SwitchB-GigabitEthernet0/0/1] interface GigabitEthernet 0/0/1 

interface GigabitEthernet0/0/1 
 port link-type trunk 
 port trunk allow-pass vlan 100 

[SwitchB-GigabitEthernet0/0/1] quit

[SwitchB] interface Vlanif 100 
[SwitchB-Vlanif100] display this 

interface Vlanif100 
 ip address 192.168.10.241 255.255.255.248   //网关地址为192.168.10.241/29 
dhcp select global 
#

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 
  ------------------------------------------------------------------- 
  Pool-name      : shuai 
  Pool-No        : 0 
  Position       : Local           Status           : Unlocked 
  Gateway-0      : 192.168.10.241 
  Mask           : 255.255.255.240   //DHCP服务器地址池中的地址网段为192.168.10.240/28
  VPN instance   : -- 
 
 
  IP address Statistic 
    Total       :13     
    Used        :5          Idle        :8      
    Expired     :0          Conflict    :0          Disable   :0

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      画龙点睛故障排查FAQ

5.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功能应用于二层网络中的接入设备。

posted @ 2021-08-04 20:13  精舞门2020  阅读(1187)  评论(0编辑  收藏  举报