2026年特权访问管理魔力象限™:Netwrix连续第五年获认可。 下载报告。

资源中心博客

为您提供 Cisco 故障排查命令

为您提供 Cisco 故障排查命令

Aug 26, 2025

Cisco 故障排查依赖一组核心命令,可帮助隔离并解决网络问题。CDP 会显示相邻设备,而 show version 则提供硬件和软件详细信息。Ping 和 traceroute 用于验证连通性与路径,Telnet 用于测试远程端口的访问能力。接口命令可识别错误、速率以及双工模式不匹配;同时通过 MAC 地址和 VLAN 校验来确认转发的准确性。掌握这些命令能够实现更快的根本原因分析、更强的安全性以及可靠的网络性能。

故障排查主要包括三件大事:预测可能发生什么、确定异常情况,以及调查这些异常为什么会发生。许多网络管理员通过分析网络中的三层(Layer 3)路径,并以“逐跳(hop-by-hop)”方式从两 个方向进行检查,将网络基础设施问题拆解开来。这个过程有助于他们隔离问题;一旦确定了三层路径中哪个跳点发生了失败,就可以进一步查看细节。

有各种工具可以帮助进行网络故障排查。让我们来回顾一下它们,看看它们能帮助你调查哪些问题。

Cisco Discovery Protocol (CDP)

Cisco Discovery Protocol (CDP) 会在无需知道这些 Cisco 网络设备 的密码的情况下,发现相邻路由器和交换机的基础信息。这之所以能够实现,是因为思科路由器和交换机会定期发送 CDP 消息,以通告它们自己的信息。因此,支持 CDP 的思科硬件可以通过监听这些消息来了解其他设备。CDP 会从相邻的思科设备中发现多项有用的细节:

  • 设备标识符:主机名
  • 地址列表:网络和数据链路地址
  • 端口标识:发送 CDP 广告的远程设备上的接口
  • 功能列表:设备类型(例如路由器或交换机)
  • 平台:设备上运行的 IOS 版本

要查看此信息,请使用 show cdp 命令:

      show cdp neighbors 
      

此命令会按行列出每一台相邻设备,每行对应一台。每一行都会提供有关相邻设备的最重要拓扑信息:其主机名(设备 ID)、本地设备的接口,以及其接口(在端口标题下)。此接口命令还会列出平台信息,用于识别相邻路由器或交换机的具体型号。

要获取更多细节,例如交换机型号的全称以及在相邻设备上配置的 IP 地址,请按如下方式添加 detail 参数:

      show cdp neighbors detail
      

当然,能够发现有关相邻设备的大量信息本身就是一种网络安全暴露。Cisco 建议在任何不需要使用 CDP 的 IP 接口上禁用 CDP。要在整个设备上切换(开启/关闭)CDP,请使用 no cdp run 和 cdp run 这两个全局命令。要在特定接口上进行切换,请使用 no cdp enable 和 cdp enable 接口子命令。

显示版本

您可以使用 Cisco IOS 命令 show version 在特权 exec 模式下验证 Cisco 设备上运行的 IOS 软件的 Cisco IOS 版本和发行号。它会输出以下信息:

  • Cisco IOS 软件版本 — Cisco 软件的名称和版本号
  • 交换机运行时间 — 距离设备上次启动所经过的时间长度
  • 交换机平台 — 硬件平台信息,包括修订版本和内存(RAM)容量
  • 处理器板 ID — 设备的序列号

Ping

ping 的基本用途是检查可达性、往返时延(RTT)以及丢包情况。为了针对这些特性对设备进行故障排查,我们需要指定该设备的 IP 地址——例如 ping 172.17.4.6. 此命令会发送互联网控制消息协议(ICMP)回显请求,并显示以下结果之一:

! — 在超时时间内收到了 ICMP 回显应答数据包(默认 2 秒)

. — 在超时时间内未收到任何回复。

你可以通过在命令末尾添加带有接口名称的 source 参数,从特定接口发起 ping——例如 ping 172.17.4.6 source Ethernet 0/0.

Traceroute

Traceroute 是一种用于追踪从一个网络到另一个网络路径的功能,因此可以帮助诊断许多问题的来源。Traceroute 的工作原理是:向远程主机发送一串三个 UDP 数据报,并在 IP 头中将 TTL 设置为 1;这样一来,当该数据报到达路径上的第一台路由器时会超时,从而触发该路由器以“ICMP time exceeded”(ICMP 超时)消息进行响应。然后,traceroute 会发送一组三个 TTL 为 2 的 UDP 数据报;当它们到达第二台路由器时同样会超时,从而使其以超时消息进行响应。该过程会一直持续到数据包到达最终目的地并收到一条“port unreachable”(端口不可达)的 ICMP 消息为止。

因此,你可以使用 traceroute 来测试数据包选择前往其目的地的路径。

你还可以使用扩展版 traceroute 命令,从指定源测试连通性,例如:traceroute 10.10.60.6 source Loopback0.

Telnet

当你使用 Telnet 连接到远程设备时,它会使用默认端口(23)。你可以使用 1 到 65535 之间的任意端口号来测试远程设备是否正在监听特定端口,例如 telnet 172.17.5.74 8080。

Show Interfaces 命令与接口状态代码

思科交换机使用两套不同的接口状态代码。两套状态代码都可以用来判断接口是否正常工作。

  • Show interfaces 和 show interfaces description — 这些命令会列出 线路状态 和 协议状态。它们通常用于指示 Layer 1 是否正常工作(线路状态),以及 Layer 2 是否正常工作(协议状态)。对于 LAN 交换机接口,这两个代码通常具有相同的取值,即“up”或“down”。
  • show interfaces status — 列出 接口状态。这个单一的状态代码对应于 线路状态 和 协议状态 的不同组合,如下表所示。例如,“connected”接口状态对应于其他两个状态均为 up/up 的情况。

以下是状态码列表以及它们可能指示的问题:

Administratively down

Down

Disabled

Interface is disabled due to a shutdown command.

Down

Down

Not connected

No physical connection, mismatched speed, device is powered off, error disabled.

Up

Down

Not connected

And interface is not expected on physical interfaces.

Down

Down error disabled

Error disabled

Port security has disabled the interface.

Up

Up

Connected

The interface is working.

Cisco Shutdown Command

当您在 configure terminal 模式下首次配置接口时,在路由器能够使用该接口来传输或接收数据包之前,必须在管理层面启用该接口。使用 Cisco no shutdown 命令,以允许 IOS 软件使用该接口。

之后,您可能会希望禁用某个特定接口,以对其或网络的一段进行硬件维护。如果某个特定网络段存在问题,并且必须将该段与其余网络隔离,也可能需要禁用该接口。“ shutdown ” 命令在管理层面启用接口。要重新启动接口,请使用 “ no shutdown ” 命令。

显示 IP 路由

大多数路由表包含静态路由和动态路由的组合。然而,在启用任何静态或动态路由之前,路由表必须包含用于访问远程网络的直接连接网络。要验证路由表中的静态路由,请使用 show ip route 命令,指定网络地址、子网掩码以及下一跳路由器或出接口的 IP 地址。

思科设备常见问题

接口速率和双工模式问题

许多基于 UTP 的以太网接口支持多种速率(全双工或半双工)以及 IEEE 标准自动协商。这些接口可以使用 speed {10 | 100 | 1000} 接口子命令来配置为使用特定速率,并使用 duplex {half | full} 接口子命令来配置为使用特定双工模式。如果为同一接口同时配置了这两项,交换机或路由器会在该接口上禁用 IEEE 标准的自动协商过程。

以下两条命令 show interfaces 和 show interfaces status 都会列出接口上的速率和双工模式设置,但只有 show interfaces status 命令会指明交换机如何确定速率和双工模式设置;它会以带有前缀 a- 的形式列出所有自动协商(autonegotiated)的设置。例如,a-full 表示自动协商后的全双工(full-duplex);而 full 表示配置为全双工,但这是手动设置的。虽然自动协商通常运行良好,但默认值会带来名为 duplex mismatch 的问题的可能性:在这种情况下,设备会认为链路处于连接状态,但一端会使用半双工(half-duplex),另一端会使用全双工(full-duplex)。

输入错误数和 CRC 错误数只是 show interfaces 命令输出中的两个计数器而已。难点在于确定你需要查看哪些计数器:哪些显示正在发生问题,哪些是正常且无需关注的。下面是计数器列表,可帮助你开始理解哪些计数器指向问题,哪些只是统计并计入正常事件(而这些事件并不构成问题):

  • Runts: 未满足最小帧大小要求的帧(64 字节,包括 18 字节的目的端 MAC、源 MAC 和类型)。Runts 可能由冲突导致。
  • Giants: 超过最大帧大小要求的帧(1518 字节,包括 18 字节的目的端 MAC、源 MAC 和类型)。
  • 输入错误: 计数器的总数,包括 runts、giants、no buffer、CRC、frame、overrun 和 ignored。
  • CRC:未通过 FCS 计算的接收帧;这些问题可能由碰撞引起。
  • 帧:具有非法格式的接收帧(例如以半个字节结尾);这些问题可能由碰撞引起。
  • 数据包输出:从该接口转发出去的总数据包(帧)数量。
  • 输出错误:交换机端口尝试发送但出现某种问题的总数据包(帧)数量。
  • 碰撞:接口在传输帧时发生的所有碰撞次数统计。
  • Late Collisions: 在帧的第 64 个字节被传输之后发生的所有冲突中的一个子集。在正常运行的以太网 LAN 中,冲突应当发生在前 64 个字节之内;如今的“后期冲突”往往指向双工不匹配。

预测 MAC 地址表的内容

交换机会学习 MAC 地址,然后使用 MAC 地址表中的条目,为每一帧做出转发/过滤决策。要准确了解某台交换机会如何转发以太网帧,需要查看思科(Cisco)交换机上的 MAC 地址表。

show mac address-table exec 命令会显示交换机的 MAC 地址表内容。该命令会列出交换机当前已知的所有 MAC 地址。输出中包含交换机使用的部分静态开销 MAC 地址,以及任何已静态配置的 MAC 地址,例如通过端口安全功能配置的那些地址。该命令还会列出所有动态学习到的 MAC 地址。如果你只想查看动态学习到的 MAC 地址表项,请直接使用 show mac address-table dynamic EXEC 命令。

在预测 MAC 地址表条目时,你需要想象一台设备向 LAN 另一侧的另一台设备发送的帧,然后确定该帧在穿过 LAN 的过程中会进入哪些交换机端口。

端口安全与过滤

在追踪帧在 LAN 交换机中的传输路径时,请记住:即使所有接口都已处于启用状态,不同类型的过滤器也可能会丢弃帧。例如,LAN 交换机可以使用称为访问控制列表(access control lists,ACLs)的过滤器,根据源 MAC 地址和目的 MAC 地址进行过滤,从而丢弃部分帧。此外,路由器还可以使用 IP ACL 来过滤 IP 数据包。在某些情况下,你可以很容易看出端口安全已采取行动,因为它已经关闭了该接口。

然而在其他情况下,端口安全会保持接口处于启用状态,但只是简单丢弃有问题的流量。从故障排查的角度来看,端口安全配置如果让接口保持启用但仍然丢弃帧,则需要网络工程师仔细查看端口安全状态,而不仅仅是查看接口和 MAC 地址表。端口安全允许三种违规模式(shutdown、 protect 和 restrict),但只有 shutdown 的默认设置会导致交换机将接口置为 err-disable。

要找到端口安全正在运行的证据,你需要执行 show port-security interface 命令。此外,MAC 地址表也提供了一些线索,表明可能已启用端口安全。由于端口安全会管理 MAC 地址,因此与端口安全处于启用状态的端口相关联的任何 MAC 地址都会显示为静态 MAC 地址。结果是,show mac address-table dynamic 命令不会列出在启用了端口安全的接口上的 MAC 地址。不过,show mac address-table 和 show mac address-table static 命令会列出这些静态 MAC 地址。

确保正确的接入接口位于正确的 VLAN 中

为了确保每个接入(access)接口都已分配到正确的 VLAN,工程师只需确定哪些交换机接口是接入接口而不是干道(trunk)接口;确定每个接口上已分配的接入 VLAN;然后将这些信息与文档进行对比即可。如果可能,请先使用 show vlan 和 show vlan brief 命令,因为这些 show 命令会列出所有已知 VLAN 以及每个 VLAN 对应的接入接口。不过请注意,这两个命令不会列出现有(运行中的)干道(operational trunk)。输出会列出所有其他接口(即当前并未处于干道状态的接口),无论这些接口是处于工作状态还是非工作状态。

如果无法使用 show vlan 和 show interface switchport 这些命令,那么 show mac address-table 命令也可以帮助识别接入 VLAN。该命令会列出 MAC 地址表,其中每条记录都包含 MAC 地址、接口以及 VLAN ID。如果某个接口被分配到了错误的 VLAN,请使用 switchport access vlan vlan-id 接口子命令来分配正确的 VLAN ID。

未定义接入 VLAN

交换机不会转发针对未配置的 VLAN,或已配置但被禁用(关闭)的 VLAN 的帧。show vlan 命令会始终列出交换机已知的所有 VLAN,但 show running-config 命令不会。配置为 VTP 服务器和客户端的交换机不会在当前运行配置或启动配置(startup-config)文件中列出 vlan 命令;在这些交换机上,你必须使用 show vlan 命令。配置为使用 VTP 透明模式,或禁用 VTP 的交换机会在配置文件中列出 vlan 配置命令。(使用 show vtp status 命令来了解交换机当前的 VTP 模式。)当你确定某个 VLAN 不存在后,问题可能只是该 VLAN 需要被定义。

接入 VLAN 已被禁用

排查故障的另一步是验证每个 VLAN 都处于激活状态。命令 show vlan 会列出两种状态之一:active 或 act/lshut。后者表示该 VLAN 已关闭。关闭 VLAN 只会在该交换机上禁用该 VLAN,因此交换机会不会转发该 VLAN 中的帧。Cisco IOS 提供了两种类似的配置方法:用于禁用(shutdown)并启用(no shutdown)某个 VLAN。

检查 Trunk 两端的允许 VLAN 列表

如果 trunk 两端的允许 VLAN 列表不匹配,则该 trunk 无法传递该 VLAN 的流量。每一侧上 show interfaces trunk 命令的输出看起来都会完全正常;只有通过对比 trunk 两端的允许列表,才能发现问题。

Trunking 的运行状态不一致

如果 trunking 配置正确,两台交换机都会为同一组 VLAN 转发帧。如果 trunk 配置错误,可能会出现几种不同的结果。有时,两台交换机都会认为各自的接口没有进行 trunking。其他情况下,一台交换机相信自己的接口正在正确进行 trunking,但另一台交换机则不认为如此。

最常见的错误配置——会导致两个交换机都无法进行 Trunking——是在链路的两台交换机上都使用 switchport mode dynamic auto 命令。单词“auto”会让我们以为该链路会自动进行 Trunking;实际上,两个交换机都会等待链路中的对端设备开始协商。要识别这种错误配置,请使用 show interfaces switchport 命令检查:两台交换机的管理状态是否都是“auto”,并且两者都作为“static access”端口运行。

结论

现在你已经了解了用于排查网络管理员每天都会遇到的问题的基础故障排除命令。你还可以下载 Cisco Commands Cheat Sheet ,以便随时快速查阅故障排除命令及其说明。

分享到

了解更多

关于作者

Asset Not Found

Jeff Melnick

系统工程总监

Jeff 是 Netwrix 的前 Global Solutions Engineering 总监。他是一位长期的 Netwrix 博主、演讲者和讲解员。在 Netwrix 博客中,Jeff 分享各种生活技巧,以及可以显著提升您系统管理体验的提示与技巧。