「NETWORKING」- 网络故障排除的核心思想和方法

  CREATED BY JENKINSBOT

故障处理对排障人员的要求

对协议要求有精深的理解;
能够引导客户详细描述出故障现象和相关信息;
充分了解自己所管理和维护的网络;
及时进行故障处理的文档记录和经验总结;
熟悉网络故障排除的方法,将多种方法结合使用;

方法一、以业务流量路径为核心

通常情况下,网络中业务流量的路径是在网络规划阶段就已经设计好的,只需要知道受到网络故障影响的业务的流量往返路径,跟踪此路径,逐步排除即可;

数据转发或许存在多条路径,需要确认业务流量路径:
1)数据链路层:确认业务流量对应的数据帧在二层网络环境中是如何被交换机转发的;
2)网络层:在数据包转发过程中可能存在多条路径,因此需要根据报文转发过程,确认业务流量的传输路径;

方法二、分层故障处理法

分层法很简单,所有模型都遵循相同的基本前提:当模型的所有低层结构工作正常时,它的高层结构才能正常工作;

一般建议在处理故障时,从参考模型自底向上进行故障排查(即从物理层开始):
7)应用层:
6)表示层:
5)会话层:
4)传输层:TCP 连接是否正确建立,TCP、UDP 端口是否打开等
3)网络层:有没有路由,路由协议工作是否正常等等
2)链路层:链路层封装是否正确,接口协议是否 UP,二层寻址是否正常等
1)物理层:接口的物理状态是否 UP、线缆及接头等是否正常等

方法三、对比配置法

对比配置法是指对比正常状态与故障状态下的配置、软件版本、硬件型号等内容,检查两者之间的差异;

经验较少的网络故障排除人员,或无其他排障思路时,可考虑在实践中使用这种方法;

方法四、分块故障处理法

华为的交换机和路由器等网络设备的配置文件具有清晰的组织结构;

当出现一个故障案例现象时,我们可以把它归入以下某一类或某几类中,从而有助于缩减故障定位范围 :
1)管理部分(路由器名称、口令、服务、日志等)
2)端口部分(地址、封装、cost、认证等)
3)路由协议部分(静态路由、RIP、OSPF、BGP、路由引入等)
4)策略部分(路由策略、策略路由、安全配置等)
5)接入部分(Console 登录、Telnet 登录、拨号等)
6)其他应用部分(DNS、DHCP、VPN 配置等)

例如,当使用 display ip routing-table 命令,结果只显示出了直连路由,可能是什么原因呢?
根据上述的分块,该故障可能由以下三部分导致:路由协议、策略、端口。如果没有配置路由协议或配置不当,路由表就可能为空;如果访问列表配置错误,就可能妨碍路由的更新;如果端口的地址、掩码或认证配置错误,也可能导致路由表错误。此时,在排障时,我们首先对这些部分进行检查;

方法五、分段故障处理法

数据包转发过程中可能经过多台路由器和物理链路,每段物理连接都有可能发生故障,因此分段处理的方法是有效的;

方法六、替换法

替换法是检查硬件问题最常用的方法之一;

例如,当怀疑是网线问题时,更换一根确定是好的网线试一试;当怀疑是接口模块有问题时,更换一个其它接口模块试一试;

常见网络故障排除

每次网络问题,都要按照这个流程进行排查,然后完善这个流程;

情景一、无法访问 HTTP 网站

类似于“360 断网急救箱”的排查流程…………在通常情况下,相同问题的解决思路是类似的;

0)、测试其他网站能否正常访问
这一步就是先确定网络问题是发生在 HTTP 站点,还是我们自己的网络中。通常都发生在我们自己的网络中;

1)、物理网线是否正常
使用 ethtool 工具检查网线是否正常。执行ethtool eth0命令,如果包含了Link detected: yes在输出中,则表示链路正常;如果是Link detected: no则表示链路异常;

2)、网卡是否启动
使用 ip 命令检查网卡是否已经启动。执行ip link show wlan0命令,网卡的state必须是UP的。如果是 DOWN 则表示网卡没有正常启动;

3)、是否分配 IP 地址
使用 ip address 命令检查网卡是否正确配置 IP 地址。执行ip link show wlan0命令,网卡的state必须是UP的。如果是DOWN则表示网卡没有正常启动;

4)、是否正确配置路由
使用 ip route 命令查看主机的路由是否正确配置。执行ip route list命令查看路由,检查路由表是否正确配置;

5)、能否 ping 通目标主机
这与第(0)条类似,是为了确定是否能正常访问网络,数据包是否能够发送到目标主机;

ping -O -D example.com # 配合-O -D 选项,可以明显看到回应的 PING 包

6)、域名解析是否正常
使用 dig 命令测试域名解析是否正常。执行dig www.baidu.com命令检查域名能否正常解析;

7)、其他可能原因:代理,防火墙,VPN,认证;
代理和防火墙的设置都会导致网络无法正常访问;

情景二、同一网段内的两台主机无法访问

例如,HostA 无法访问 HostB

1)先确定是「服务无法访问」,还是「主机无法访问」
可以使用 tcpdump 命令在 HostB 上抓包,看看 HostB 是否收到了来自于 HostA 的数据包。防火墙工作与 tcpdump 之后,也就是说 tcpdump 是在防火墙之前先看到的数据包,因此可以抓包进行测试;

如果收到了数据包,那通常就是防火墙的配置问题了(极有可能),或者应用程序的问题(服务异常)。这个不再展开,这个比较容易排查;

如果没有收到数据包,那就是网络问题了,可以断定 HostA 的数据包没有到达 HostB 上;

2)确定出现问题的主机
使用其他主机访问 HostB,如果在 HostB 上发现了数据包,则是 HostA 的问题,否则为 HostB 的问题;

3)如果是 HostA 的问题
与”情景一“检查主机的网络配置;

4)如果是 HostB 的问题;
与”情景一“检查主机的配置;

排查两台主机无法通信(主机角度)

检查 DHCP 正常

DHCP故障的常见原因主要包括:
客户端与服务器之间的链路有故障。
设备未使能DHCP功能。
设备VLANIF接口下没有选择DHCP分配地址的方式。
地址池中没有可用的IP地址可分配。

如果客户端与服务器不在同一个网段内,中间存在中继设备时:
DHCP中继与DHCP服务器之间的链路有故障。
设备未全局使能DHCP功能,导致DHCP功能没有生效。
DHCP中继没有配置所代理的DHCP服务器。
DHCP中继和DHCP服务器不可达。

检查 DHCP Relay 配置,确保所处接口正确:

<SW5>display current-configuration 
dhcp enable
#
interface Vlanif35
 ip address 10.0.35.5 255.255.255.0
 dhcp select relay
 dhcp relay server-ip 10.0.35.3
#

[SW5]display dhcp relay statistics 
 The statistics of DHCP RELAY:
    DHCP packets received from clients	: 11
    DHCP DISCOVER packets received	: 11
    DHCP REQUEST packets received	: 0
    DHCP RELEASE packets received	: 0
    DHCP INFORM packets received	: 0
    DHCP DECLINE packets received	: 0
    DHCP packets sent to clients	: 0
    DHCP packets received from servers	: 0
    DHCP packets sent to servers	: 11
<R3>display  dhcp server statistics 
 DHCP Server Statistics: 	
 Client Request         	2
  Dhcp Discover            	1
  Dhcp Request             	1
Server Reply          		2
  Dhcp Offer              	1
  Dhcp Ack              	1
Bad Messages          		0

排查两台主机无法通信(数通角度)

在场景中,我们主要讨论数通网络,所以假设两台主机网络配置正确;

设备物理链路故障

检查链路处于 UP 状态:

<SW1>display interface brief | include up
Interface				PHY	Protocol	InUti	OutUti	inErrors	outErrors
GigabitEthernet0/0/3	up	up			0%		0%		0		0
GigabitEthernet0/0/4	up	up			0%		0%		0		0
GigabitEthernet0/0/10	up	up			0%		0%		0		0

// 留意 PHY 字段,查看其是否出于 up 状态;

// 如果是普通非网管交换机,则查看设备上的指示灯;

检查报文收发是否正常:

<SW1>display interface GigabitEthernet 0/0/10
Description:
Switch Port, PVID :   12, TPID : 8100(Hex), The Maximum Frame Length is 9216
IP Sending Frames' Format is PKTFMT_ETHNT_2, Hardware address is 4c1f-cc69-6d7b
Hardware address is 4c1f-cc69-6d7b
    Last 300 seconds input rate 0 bytes/sec, 0 packets/sec
    Last 300 seconds output rate 0 bytes/sec, 0 packets/sec
    Input: 430 bytes, 6 packets ------------------------------------------------ // 主机发送 ping 包,观察 Input 是否增多;
    Output: 197137 bytes, 1659 packets

设备 IP-ADDR 配置错误

检查主机地址是否配置错误:略

检查设备地址是否配置正确:

<SW3>display ip interface brief
Interface	IP Address/Mask	Physical	Protocol
MEth0/0/1	unassigned		down		down
NULL0		unassigned		up			up(s)
Vlanif1		unassigned		up			down
Vlanif12	192.168.12.3/24	up			up
Vlanif34	192.168.34.3/24	up			up

// 确保 IP 地址配置正常
// 如果 VLANIF 没有 IP-ADDR,则不会 up,无法完成三层转发

设备 VLAN 故障

检查接口所在 VLAN 是否正确:

<SW1>display vlan
The total number of VLANs is: 10
--------------------------------------------------------------------------------
U: Up;         D: Down;         TG: Tagged;         UT: Untagged;
MP: Vlan-mapping;               ST: Vlan-stacking;
#: ProtocolTransparent-vlan;    *: Management-vlan;
--------------------------------------------------------------------------------

VID  Type    Ports                                                        
--------------------------------------------------------------------------------
1    common  UT:GE0/0/49(D)     GE0/0/50(D)     GE0/0/51(D)     GE0/0/52(D)   
                Eth-Trunk1(U)   Eth-Trunk3(U)   Eth-Trunk4(U)                 
             TG:GE0/0/25(D)     GE0/0/26(D)     GE0/0/27(D)     GE0/0/28(D)   
                GE0/0/29(D)     GE0/0/30(D)     GE0/0/31(D)     GE0/0/32(D)   
                Eth-Trunk2(U)                                                 
7    common  TG:Eth-Trunk1(U)   Eth-Trunk3(U)

VID  Status  Property      MAC-LRN Statistics Description    
--------------------------------------------------------------------------------
1    enable  default       enable  disable    VLAN 0001                       
7    enable  default       enable  disable    VLAN 0007

设备 MSTP 故障

检查生成树是否配置正常:

<SW4>display stp brief
MSTID	Port					Role	STP			State
0		GigabitEthernet0/0/2	DESI	FORWARDING	NONE
0		GigabitEthernet0/0/3	DESI	FORWARDING	NONE
0		GigabitEthernet0/0/4	DESI	FORWARDING	NONE
12		GigabitEthernet0/0/2	DESI	FORWARDING	NONE
12		GigabitEthernet0/0/3	DESI	FORWARDING	NONE
12		GigabitEthernet0/0/4	DESI	FORWARDING	NONE
34		GigabitEthernet0/0/2	DESI	FORWARDING	NONE
34		GigabitEthernet0/0/3	DESI	FORWARDING	NONE
34		GigabitEthernet0/0/4	DESI	FORWARDING	NONE

<SW4>display current-configuration | begin region-configuration
stp region-configuration
 region-name TEST
 instance 12 vlan 12
 instance 34 vlan 34
 active region-configuration
#

// 留意 STP 字段的状态是否正常;
// MSTP 故障的原因可能是域名配置错误、Instance 和 VLAN 绑定错误、端口绑定 VLAN 错误等;

// 上下班时间,交换机端口频繁 UP/DOWN,会发送大量 TC 报文;
// 开启 STP 的交换机在收到 STP TC 报文后会清空 MAC 地址表进行重新学习,期间数据转发会出现短暂的中断,从而产生丢包现象;
// 建议将交换机连接主机的端口设置为边缘端口;

检查是否出现 MAC 地址漂移:

[SW3]display mac-address flapping 
Mac-address Flapping Configurations :
-------------------------------------------------
  Flapping detection         		: Enable
  Aging  time(sec)             		: 300 
  Quit-vlan Recover time(min) 		: 10 
  Exclude vlan-list 				: -
-------------------------------------------------
<SW3>display mac-address flapping record 
Info: The mac-address flapping record does not exist.

设备 VRRP 故障

如果 VRRP 切换出现故障,则可能 VRRP 的配置存在问题:

<SW3>
ARP/4/ARP_DUPLICATE_IPADDR(l)[0]:Received an 
ARP packet with a duplicate IP address from the interface. (IpAddress=192.168.12.254, InterfaceName=Vlanif12, MacAddress=0000-5e00-0101)

// 如上信息,鉴于该IP地址是虚拟IP地址,因此怀疑VRRP出现故障。

// 针对 VRRP 进行报文捕获以查看其交互;

[SW1]capture-packet interface GigabitEthernet 0/0/10 destination terminal 
Packet: 6
-------------------------------------------------------
00 00 5e 00 01 03 54 89 98 1f 5a 8d 81 00 00 0c 
08 00 45 00 00 3c 39 aa 40 00 80 01 11 b8 c0 a8 
0c 01 c0 a8 22 0d 08 00 f9 d1 82 3b 0a 71 08 09 
0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 
1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 
-------------------------------------------------------

// 查看 VRRP 配置

<SW3>display vrrp
  Vlanif12 | Virtual Router 3
    State : Master
    Virtual IP	: 192.168.12.254
    Master IP	: 192.168.12.3
    PriorityRun 	: 100
    PriorityConfig 	: 100
    MasterPriority	: 100
    Virtual MAC 	: 0000-5e00-0103
<SW3>display current-configuration interface Vlanif 12
#
interface Vlanif12
 ip address 192.168.12.3 255.255.255.0
 vrrp vrid 3 virtual-ip 192.168.12.254
#

检查设备路由配置

<SW3>display ip routing-table protocol static 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Destination/Mask	Proto	Pre	Cost	Flags	NextHop	Interface
0.0.0.0/0	Static	60	0	RD	10.0.13.1	Vlanif13

// 查看去往特定网络的路由配置

<R1>display  ip routing-table 192.168.56.0

// 检查路由协议

<R1>display ospf peer
...

<R1>display ospf error
General packet errors:
 0     : IP: received my own packet     		0     : Bad packet
 0     : Bad version                            0     : Bad checksum
 0     : Bad area id                            0     : Drop on unnumbered interface
 0     : Bad virtual link                       0     : Bad authentication type
 0     : Bad authentication key           		0     : Packet too small
 0     : Packet size > ip length            	0     : Transmit error
 0     : Interface down                       	0     : Unknown neighbor
 0     : Bad net segment                    	0     : Extern option mismatch
 133   : Router id confusion
 
<R1>terminal debugging 
Info: Current terminal debugging is on.

<R1>debugging ospf packet interface GigabitEthernet 0/0/0
...

<R1>display bgp peer
BGP local router ID : 10.0.1.1
Local AS number : 100
Total number of peers : 1    Peers in established state : 0
Peer		AS		MsgRcvd	MsgSent	OutQ	Up/Down	State	PrefRcv
10.0.2.2	100		0		0		0		0:00:05	Idle	0

// 如上信息
// State==Idle,表示邻居关系没有正常建立,需要排查邻居关系;
// BGP 报文发送和接收数量都是 0,因此怀疑是由于远端设备的 loopback0 接口不可达导致;

流量追踪

通过 traceroute 命令,进行流量追踪,能够确定流量中断之处:

traceroute to 192.168.56.6, 8 
 1  192.168.12.3   63 ms  46 ms  47 ms
 2  10.0.13.1   78 ms  63 ms  62 ms
 3  10.0.12.2   94 ms  63 ms  78 ms
 4  10.0.23.3   94 ms  62 ms  63 ms
 5    *  *  *

通过 MQC 组件,进行流量统计:

[R3] acl 3000
[R3-acl-adv-3000]rule 5 permit ip source 192.168.12.1 0 destination 192.168.56.6 0 
[R3-acl-adv-3000]quit
[R3]traffic classifier trafficSta 
[R3-classifier-trafficSta]if-match acl 3000
[R3-classifier-trafficSta]quit
[R3]traffic behavior trafficSta 
[R3-behavior-trafficSta]statistic enable
[R3-behavior-trafficSta]quit
[R3]traffic policy trafficSta 
[R3-trafficpolicy-trafficSta]classifier trafficSta behavior trafficSta
[R3-trafficpolicy-trafficSta]quit
[R3]interface GigabitEthernet0/0/2.35
[R3-GigabitEthernet0/0/2.35]traffic-policy trafficSta outbound

<R3> display traffic policy statistics interface GigabitEthernet0/0/2.35 outbound
Interface:GigabitEthernet0/0/2.35
 Traffic policy inbound: trafficSta                                                  
 Rule number: 1                                                                 
 Current status: OK!                                                            
Item                     Sum(Packets/Bytes)              
-----------------------------------------
Matched                      	50/400                 
  Passed                      	50/400                  
  Dropped                   	0/0 

基于流量统计,可以分析如下问题:
流量是否到达设备入口,进而判断上游设备是否丢包;
流量是否被转发到设备出口,进而判断设备是否丢包;
流量在设备入口二三层信息是否正确,进而判断上游设备转发封装是否正常;
流量在设备出接口二三层信息是否正确,进而判断设备转发封装是否正常;
是否存在MAC漂移、路由变化、IP冲突等导致的流量瞬间漂移。

流量统计的配置步骤:
配置ACL规则,匹配需要统计的流量。
配置流分类,根据ACL规则匹配不同的流量,从而区分不同数据流量。
配置流行为,在流行为中配置流量统计。
配置流策略,绑定以上流分类和流行为,实现对不同用户报文的流量统计。
在接口出方向或入方向调用流策略。