前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常见网络故障排除举例-路由故障【网络排障连载04】

常见网络故障排除举例-路由故障【网络排障连载04】

作者头像
Ponnie
发布2022-06-15 19:15:11
6620
发布2022-06-15 19:15:11
举报
文章被收录于专栏:玉龙小栈玉龙小栈

在上一篇文章的故障处理中【网络故障排除的举例【网络排障连载03】】已保证PC1和SW3之间无故障,Server6和SW5之间无故障。

PC1无法使用FTP服务

如下图所示,将PC1无法使用FTP服务的故障原因列举如下:

  • 物理链路故障(已完成)
  • 路由故障
  • 静态路由
  • OSPF
  • BGP
  • IS-IS
  • 流量控制
  • 服务器故障(已完成)

路由检查:

  • 数据包转发时需要进行逐跳转发,沿途所有的路由器都要有到达目的地的路由,首先检测PC1发送数据包给Server6经过的所有网络设备是否存在到达Server6的路由表项。
  • 咱们可以在SW3设备上检查静态路由配置。
  • 配置静态路由时:对于点到点接口,只需指定出接口;对于广播类型接口,必须指定下一跳IP。
代码语言:javascript
复制
<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

  • 通过该步骤发现SW3静态路由配置没有问题。继续查看路由信息
  • 在R1查看路由表。
代码语言:javascript
复制
<R1>display  ip routing-table 192.168.56.0
  • 输出结果:
代码语言:javascript
复制
<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
  • 由输出结果得知,R1无到达192.168.56.0的路由。由于R1的路由应该由BGP协议获取,接下来查询R1的BGP邻居关系是否正常建立。
  • 由以上结果得知BGP邻居关系建立失败,BGP邻居关系建立失败的原因有:
    • 远端设备的loopback0接口不可达
    • 本设备或远端设备AS号配置错误
    • 非直连EBGP邻居关系未设置多跳
    • Router ID冲突
  • 根据输出结果判断,BGP报文发送和接收数量都是0,因此怀疑是由于远端设备的loopback0接口不可达导致。继续进行下一步排错。
  • 在R1上查看到达BGP邻居IP地址的路由
代码语言:javascript
复制
<R1>display ip routing-table 10.0.2.2
  • 由输出结果得知,R1无到达10.0.2.2的路由。由于R1的路由应该由OSPF协议获取,接下来查询R1的OSPF邻居关系是否建立正常。
代码语言:javascript
复制
<R1>display ospf peer 
  OSPF Process 1 with Router ID 10.0.1.1
  • 由以上结果得知OSPF邻居关系建立失败。邻居关系建立失败的原因有:
    • Router ID冲突
    • 区域ID不匹配
    • 网络掩码不匹配
    • MTU不一致
    • MA网络中,所有设备的DR优先级设置为0
    • 认证密码不匹配
    • 接口被设置为silent-interface
    • 时间参数不匹配
  • 在R1查看OSPF error。
代码语言:javascript
复制
[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
  • 由以上结果得知OSPF邻居关系建立失败的原因可能是Router ID冲突,为了更准确的确定故障原因,在R1上开启debug OSPF 功能。
代码语言:javascript
复制
<R1>terminal debugging 
Info: Current terminal debugging is on.
<R1>debugging ospf packet interface GigabitEthernet 0/0/0
  • 当在R1上debug信息看到来自10.0.12.2的hello报文携带的OSPF Router ID与R1上OSPF Router ID相同,从而导致Router ID冲突。
  • 首先查看本地OSPF协议的配置
代码语言:javascript
复制
<R1>display ospf interface GigabitEthernet 0/0/0 verbose 
  OSPF Process 1 with Router ID 10.0.1.1
 Interface: 10.0.12.1 (GigabitEthernet0/0/0)
 Cost: 1       State: DR        Type: Broadcast    MTU: 1500  
 Priority: 1
 Designated Router: 10.0.12.1
 Backup Designated Router: 0.0.0.0
 Timers: Hello 10 , Dead 40 , Poll  120 , Retransmit 5 , Transmit Delay 1 
  IO Statistics
             Type        Input     Output
            Hello           36         36

  • 在R1上查看debug信息中的OSPF error,部分信息如下。
代码语言:javascript
复制
:  Source Address: 10.0.12.2
:  Destination Address: 224.0.0.5
:  Ver# 2, Type: 1 (Hello)
:  Length: 44, Router: 10.0.1.1
:  Area: 0.0.0.0, Chksum: db9c
:  AuType: 00
:  Key(ascii): * * * * * * * *
:  Net Mask: 255.255.255.0
:  Hello Int: 10, Option: _E_
:  Rtr Priority: 1, Dead Int: 40

  • 经过对比发现Hello报文发送间隔,掩码,认证等信息匹配,只有Router ID冲突。

需要登录R2修改OSPF Router ID,但此时发现无法Telnet登录R2。

  • Telnet登录故障常见原因有:
    • 路由不可达,客户端和服务器无法建立TCP连接。
    • 服务器未开启Telnet功能。
    • 登录设备的用户数到达了上限。
    • VTY用户界面下绑定了ACL。
    • VTY用户界面下允许接入的协议不正确。如配置为protocol inbound ssh时,使用Telnet将无法登录。
    • 从Console口登录到R2,查询设备是否开启Telnet服务。
  • 从Console口登录到R2,查询设备是否开启Telnet服务。
代码语言:javascript
复制
[R2]display telnet server status
 TELNET IPV4 server                       :Enable
 TELNET IPV6 server                       :Enable
 TELNET server port                     :23
  • 查看VTY下是否允许Telnet。
代码语言:javascript
复制
[R2-ui-vty0-4]display this
user-interface vty 0 4
 authentication-mode aaa
 protocol inbound ssh
  • 修改R2配置,VTY下允许Telnet,经过测试发现R2可以正常登录。
  • 在R2修改OSPF Router ID,并且将OSPF进程重启,使Router ID生效,然后检查OSPF邻居关系状态。
代码语言:javascript
复制
<R2>display ospf peer 
  OSPF Process 1 with Router ID 10.0.12.2
   Neighbors 
 Area 0.0.0.0 interface 10.0.12.2(GigabitEthernet0/0/0)'s neighbors
 Router ID: 10.0.1.1         Address: 10.0.12.1       
   State: Full  Mode:Nbr is  Slave  Priority: 1
   DR: 10.0.12.2  BDR: 10.0.12.1  MTU: 0    
   Dead timer due in 35  sec 
   Retrans timer interval: 5 
   Neighbor is up for 00:09:17     
   Authentication Sequence: [ 0 ] 
  • 在R1上查看是否存在10.0.2.2的路由。
代码语言:javascript
复制
<R1>display ip routing-table 10.0.2.2
Route Flags: R - relay, D - download to fib
------------------------------------------------------------
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.2.2/32 OSPF 10 1 D 10.0.12.2 GE0/0/0 
  • 在R1上查看BGP邻居状态。
代码语言:javascript
复制
<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 : 1
Peer     AS MsgRcvd MsgSent Up/Down  State
10.0.2.2 100  25       26   0:19:22  Established
  • 在R1上查看BGP路由表中是否存在192.168.56.0/24。
代码语言:javascript
复制
<R1>display bgp routing-table
BGP Local router ID is 10.0.1.1 
Total Number of Routes: 2
Network           NextHop MED LocPrf Path/Ogn
*>192.168.12.0/24 0.0.0.0 0 0 ?
  • 发现R1仍然没有路由信息,由于该路由信息是由R3引入,因此需要在R3上查看是否将路由引入BGP协议。
代码语言:javascript
复制
<R3>display bgp routing-table 
BGP Local router ID is 10.0.3.3 
Total Number of Routes: 1
Network         NextHop MED LocPrf Path/Ogn
*> 192.168.56.0 0.0.0.0 0 0 ?
  • 在R3上查看BGP邻居状态。
代码语言:javascript
复制
<R3>display bgp peer 
BGP local router ID : 10.0.3.3
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
  • R3和R2的BGP邻居状态未建立,在R3上查看是否存在10.0.2.2/32的路由表项。
代码语言:javascript
复制
<R3>display ip routing-table 10.0.2.2
  • R3上无10.0.2.2/32的路由,由于R2和R3之间运行IS-IS协议,需要查看R3和R2之间是否正常建立了IS-IS邻居关系。
代码语言:javascript
复制
<R3>display isis peer 
Peer information for ISIS(1)
SystemId Interface CircuitId State Type PRI
0100.0000.2002 GE0/0/1 0100.0000.2002.01 Up L2 64
  • IS-IS邻居关系无法正常建立的原因有:
    • 区域ID不一致。(只会影响level-1)
    • 运行级别不一致。(注:在华为中如果系统级别和接口电路级别不同,以系统级别为准)
    • 接口认证不一致。
    • system-id长度不一致或者system-id冲突。
    • P地址不在同一个网段。(IS-IS在广播网中是开启源检查的,但是可以关闭)
  • IS-IS协议邻接关系建立正常,但是R3却无法获取10.0.2.2/32的路由信息,可能有以下原因:
    • 接口没有开启IS-IS协议
    • Metric值的类型不一致
    • 设备做了路由策略
    • 网络类型不一致
  • 在R2上查看IS-IS接口信息。
代码语言:javascript
复制
<R2>display isis interface 
Interface information for ISIS(1)
Interface Id IPV4.State MTU Type DIS
GE0/0/1 1 Up 1497 L1/L2 No/Yes
Loop0 1 Up 1500 L1/L2 --
  • 查看R2 IS-IS配置。
代码语言:javascript
复制
isis 1
 is-level level-2
 cost-style wide
 network-entity 49.0001.0100.0000.2002.00
 import-route ospf 1 
  • 查看R3 IS-IS配置。
代码语言:javascript
复制
isis 1
 is-level level-2
 network-entity 49.0001.0100.0000.3003.00
  • 通过以上对比得知,R2和R3Cost-Style不匹配,将R3修改为Wide类型。修改完成后,查看R3是否存在10.0.2.2/32的路由。
代码语言:javascript
复制
<R3>display ip routing-table 10.0.2.2
Route Flags: R - relay, D - download to fib
--------------------------------------------------------------
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.2.2/32 ISIS-L2 15 10 D 10.0.23.2 GE0/0/1
  • 查看R3的BGP邻居关系是否恢复正常,以及R3的BGP路由表。
代码语言:javascript
复制
<R3>display bgp peer 
BGP local router ID : 10.0.23.3
Peer AS MsgRcvd MsgSent Up/Down State
10.0.2.2 100 8 7 0:04:42 Established

<R3>display bgp routing-table
Total Number of Routes: 2
Network NextHop MED LocPrf Path/Ogn
*>I 192.168.12.0 10.0.1.1 0 100 ?
*> 192.168.56.0 0.0.0.0 0 0 ?

  • R3已正确发布路由,且已经学习到192.168.12.0/24的路由。继续在R1查看是否存在到达目的地192.168.56.0/24的路由。
代码语言:javascript
复制
<R3>display bgp peer 
<R1>display bgp routing-table   BGP Local router ID is 10.0.1.1 
Network NextHop MED LocPrf Path/Ogn
*> 192.168.12.0 0.0.0.0 0 0 ?
I 192.168.56.0 10.0.3.3 0 100 ?

  • R1已收到R3发送的BGP路由,但是该路由不可用,可能因为下一跳不可达,继续在R1查看是否存在到达10.0.3.3/32的路由表项。
代码语言:javascript
复制
<R1>display ip routing-table 10.0.3.3
  • 发现R1路由表中不存在10.0.3.3/32的路由,由于该路由条目应由R2从IS-IS向OSPF引入,因此可能有以下原因导致R1无路由:
    • R1配置了路由策略
    • R2没有将IS-IS路由引入OSPF
    • R2接口出方向做了5类LSA的过滤
  • 查看R1的LSDB。
代码语言:javascript
复制
<R1>display ospf lsdb 
OSPF Process 1 with Router ID 10.0.1.1
Area: 0.0.0.0
Type LinkStateID AdvRouter Age Len Sequence Metric
Router 10.0.2.2 10.0.2.2 5 48 80000003 1
Router 10.0.1.1 10.0.1.1 3 48 8000000D 1
Network 10.0.12.1 10.0.1.1 3 32 80000002 0
  • 发现R1没有5类的LSA,查询R2是否将IS-IS路由引入OSPF协议。
代码语言:javascript
复制
<R2>display current-configuration configuration ospf
#
ospf 1 router-id 10.0.2.2 
 area 0.0.0.0 
  network 10.0.2.2 0.0.0.0 
  network 10.0.12.2 0.0.0.0 ·
  • 修改R2的配置,将IS-IS路由引入OSPF协议,再次查看R1的路由表。
代码语言:javascript
复制
<R1>display ip routing-table 
  Route Flags: R - relay, D - download to fib
------------------------------------------------------------
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.3.3/32 O_ASE 150 1 D 10.0.12.2 GE0/0/0
192.168.56.0/24 IBGP 255 0 RD 10.0.3.3 GE0/0/0
  • 修改完R2的配置之后,在R1上已经可以正常看到10.0.3.3/32的路由表项。
  • 在PC1设备Traceroute 192.168.56.6。
代码语言:javascript
复制
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    *  *  *
  • 发现数据包到达R3之后没有返回响应,在R3的GE0/0/2接口开启流量统计,查看R3是否将数据包从GE0/0/2口发出。
代码语言:javascript
复制
[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
  • R1上正常学习到路由之后,PC1依然无法访问Server6提供的FTP服务,此时通过traceroute排查到Server6的连通性在何处中断。
  • 基于流量统计,可以分析如下问题:
    • 流量是否到达设备入口,进而判断上游设备是否丢包;
    • 流量是否被转发到设备出口,进而判断设备是否丢包;
    • 流量在设备入口二三层信息是否正确,进而判断上游设备转发封装是否正常;
    • 流量在设备出接口二三层信息是否正确,进而判断设备转发封装是否正常;
    • 是否存在MAC漂移、路由变化、IP冲突等导致的流量瞬间漂移。
  • 流量统计的配置步骤:
    • 配置ACL规则,匹配需要统计的流量。
    • 配置流分类,根据ACL规则匹配不同的流量,从而区分不同数据流量。
    • 配置流行为,在流行为中配置流量统计。
    • 配置流策略,绑定以上流分类和流行为,实现对不同用户报文的流量统计。
    • 在接口出方向或入方向调用流策略。
  • 在R3上查看流量统计,发现R3无丢包。
代码语言:javascript
复制
<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 
  • 查看Server6发送数据包方向上设备的路由信息,检查SW5路由表。
代码语言:javascript
复制
[SW5]display ip routing-table 
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.35.0/24   Direct 0 0 D 10.0.35.5     Vlanif35
192.168.56.0/24 Direct 0 0 D 192.168.56.5 Vlanif56
  • SW5缺乏前往PC1的静态路由,在SW5上配置静态路由。
  • 验证PC1和Server6能否正常通信,以及正常使用FTP服务。
  • 完成以上工作后该故障处理完成。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 玉龙网络新知社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PC1无法使用FTP服务
    • 路由检查:
      • 需要登录R2修改OSPF Router ID,但此时发现无法Telnet登录R2。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档