简介
本文档介绍如何对汇聚服务路由器(ASR5500/ASR 5000)的管理IP丢失安全外壳(SSH)连接时的场景进行故障排除。
ASR5500节点的登录问题
您无法登录ASR5500数据包核心节点。SSH连接立即终止,且没有登录提示。Telnet连接表现出类似的行为。
故障排除的步骤
步骤1.尝试通过控制台连接登录到节点。
步骤2.在大多数情况下,未发出任何可能指向连接故障原因的特定简单网络管理协议(SNMP)陷阱。
步骤3.与登录相关的日志(经常出现在系统日志中)包括:
evlogd: [local-60sec55.607] [tacacs+ 37201 error] [5/0/8908 <vpnmgr:1> authen_events.c:598] [software internal system critical-info syslog] Authentication failed for user **** on tty /dev/pts/0, application ssh, remote IP address XX.XX.XX.XX
evlogd: [local-60sec55.623] [cli 30028 debug] [5/0/8908 <vpnmgr:1> luser_auth.c:1448] [context: local, contextID: 1] [software internal system syslog] Login attempt failure for user **** IP address XX.XX.XX.XX - Access type ssh/sftp
evlogd: [local-60sec53.652] [tacacs+ 37201 error] [5/0/8908 <vpnmgr:1> authen_events.c:598] [software internal system critical-info syslog] Authentication failed for user **** on tty /dev/pts/0, application ssh, remote IP address XX.XX.XX.XX
evlogd: [local-60sec53.679] [cli 30028 debug] [5/0/8908 <vpnmgr:1> luser_auth.c:1448] [context: local, contextID: 1] [software internal system syslog] Login attempt failure for user **** IP address XX.XX.XX.XX - Access type ssh/sftp#####
evlogd: [local-60sec2.942] [tacacs+ 37201 error] [5/0/8908 <vpnmgr:1> authen_events.c:598] [software internal system critical-info syslog] Authentication failed for user epcats on tty /dev/pts/0, application ssh, remote IP address YY.YY.YY.YY
步骤4.命令show crash list all显示最近的崩溃,请注意,与vpnmgr相关的崩溃尤其重要。
步骤5.命令show task resources all可确保vpnmgr 和sshd 进程不能处于过度状态。vpnmgr负责IP地址池管理并执行所有情景特定操作。sshd支持安全登录StarOS CLI。
步骤6.重新启动vpnmgr实例1。有助于在某些情况下以最小影响恢复SSH连接。但是,连接可能会在一段时间后终止。
步骤7. MIO切换解决了问题。请注意,在进程可能达到阈值或过载状态的情况下,MIO退回可以帮助清除它。
解决方法是MIO切换。下一节介绍根本原因分析的步骤。
根本原因分析
- 使用show administrators命令可确定节点上的活动连接数。但是,输出中可能未显示过多活动会话,这些会话可能会阻塞到节点的连接。
示例输出:
[local]ASR5500-2# show administrators
Monday September 06 13:15:07 CDT 2021
Administrator/Operator Name M Type TTY Start Time Mode Idle
------------------------------ - ------- -------------- ------------------------ ------------ ----
admin admin /dev/pts/4 Mon Sep 06 13:14:38 2021 Context User 29
admin admin /dev/pts/3 Mon Sep 06 12:21:13 2021 Context User 749
admin admin /dev/pts/2 Thu Sep 02 11:03:57 2021 Context User 342206
[local]ASR5500-2#
- 此外,执行这些命令并深入探讨问题。通过隐藏模式导航到调试外壳。
cli test-command pass <password>
debug shell
在debug shell中运行以下命令:
ps -ef
setvr 1 bash
netstat -n
ps — 列出进程。ps命令允许您查看有关系统上当前进程的技术信息并验证其状态。
-e — 显示所有进程,而不考虑用户。
-f — 以详细格式显示进程。
netstat 命令是最方便的命令行选项之一,用于显示存在于节点的所有套接字连接。它能够列出所有tcp和udp套接字连接以及unix连接。此CLI还可用于列出可能仍等待连接建立的侦听套接字。
示例输出:
ASR5500-2:card5-cpu0# ps -eF
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
root 1 0 0 511 640 4 Aug20 ? 00:00:13 init [5]
root 2 0 0 0 0 2 Aug20 ? 00:00:00 [kthreadd]
root 3 2 0 0 0 0 Aug20 ? 00:00:00 [ksoftirqd/0]
root 6 2 0 0 0 0 Aug20 ? 00:00:00 [migration/0]
root 7 2 0 0 0 0 Aug20 ? 00:00:01 [watchdog/0]
root 8 2 0 0 0 1 Aug20 ? 00:00:00 [migration/1]
root 10 2 0 0 0 1 Aug20 ? 00:00:00 [ksoftirqd/1]
root 11 2 0 0 0 0 Aug20 ? 00:00:31 [kworker/0:1]
root 12 2 0 0 0 1 Aug20 ? 00:00:00 [watchdog/1]
root 13 2 0 0 0 2 Aug20 ? 00:00:00 [migration/2]
root 15 2 0 0 0 2 Aug20 ? 00:00:00 [ksoftirqd/2]
root 16 2 0 0 0 2 Aug20 ? 00:00:00 [watchdog/2]
root 17 2 0 0 0 3 Aug20 ? 00:00:00 [migration/3]
root 19 2 0 0 0 3 Aug20 ? 00:00:00 [ksoftirqd/3]
root 20 2 0 0 0 3 Aug20 ? 00:00:00 [watchdog/3]
root 21 2 0 0 0 4 Aug20 ? 00:00:00 [migration/4]
root 22 2 0 0 0 4 Aug20 ? 00:00:00 [kworker/4:0]
root 23 2 0 0 0 4 Aug20 ? 00:00:00 [ksoftirqd/4]
……………………………
ASR5500-2:card5-cpu0# setvr 1 bash
bash-2.05b# netstat -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 10.201.211.23:22 10.227.230.222:51781 ESTABLISHED
tcp 0 0 10.201.211.23:22 10.24.28.55:49918 ESTABLISHED
tcp 0 0 10.201.211.23:22 10.99.10.148:54915 ESTABLISHED
tcp 0 0 10.201.211.23:22 10.227.230.222:51783 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 39221385
unix 2 [ ] DGRAM 27056
bash-2.05b# exit
根据前面提到的报告,服务器运行的脚本导致连接到ASR55K机箱。这些服务器打开了许多处于停滞或空闲状态的连接,但它们从未关闭。
即使在TeleTypeWriter(TTY)连接终止后,TCP连接仍在网关上处于活动状态。
由于这些连接,ASR5500达到了允许的最大SSH连接数,妨碍了与机箱的连接。一旦您尝试登录到服务器并终止父进程,所有连接都会立即释放,SSH会立即恢复。
这些空闲SSH连接将建立为无TeleTypeWriter(noTTY)连接。这样的noTTY连接由连接的程序使用,以使其输出不显示。
在大多数情况下,SSH admin@asr55k主机名“显示版本”等命令会建立noTTY连接。
同样,SSH语句:*@notty表明有SSH登录到我们的网关(GW),但尚未分配可视终端,例如外壳或伪终端。这可能发生在各种与脚本相关的操作中,特别是在使用FTP/安全复制(SCP)连接时。
建议的解决方案
- 对可用于API服务器的脚本实施超时。执行多个CLI的多个SSH连接可能会在所有会话管理器进程上生成Messenger拥塞和显着的CPU使用率。
- 为了简化故障排除,请配置以下选项:
logging filter runtime facility cli level debug critical-info
- 将此配置应用于节点。此命令用于在5分钟后终止空闲SSH会话。这用作防止服务器导致的过时会话的保护机制:
Exec > Global Configuration > Context Configuration
configure > context context_name
administrator encrypted password timeout-min-absolute 300 timeout-min-idle 300
相关信息