1.5 故障排除工具
VPN故障诊断与排除
主要的VPN故障排除工具是show、ping、traceroute和debug命令。要正确、安全地使用这些命令,必须遵循一系列的指导原则。
show命令可用于查看各种与VPN相关的信息和统计数据。
ping和traceroute命令可用于检查基本IP连接性和跨越网络的路由。在MPLS主干中,命令traceroute还可用于显示标签栈。通过使用扩展ping命令来扫描一个分组长度范围,还可以确定VPN中可能出现的最大传输单元(MTU)问题。如果使用较短的分组进行ping测试时成功,但使用较长的分组时失败,则表明VPN中存在MTU问题。
最后,debug命令可用于显示与VPN相关联的各种状态和错误信息。虽然debug命令很有用,且有时候是必不可少的,但使用它也存在一些危险。如果使用了错误的debug命令,或者没有对输出进行过滤,输出可能占用所有的系统资源,导致系统挂起。
可以采取多种方式来避免系统的负载过重。首先是不要通过控制台进行调试,而应通过Telnet会话进行调试。使用命令no logging console来禁止将调试输出显示到控制台。使用命令terminal monitor来通过Telnet会话查看调试输出。命令terminal no monitor禁止通过Telnet会话来查看调试输出。
打开另一个到设备的Telnet会话是个不错的主意,这样即使第一个会话由于debug命令的输出而不堪重负时,仍可以关闭调试。还可以使用命令logging syslog server ip address 将调试输出重定向到系统日志服务器。
撤销所有debug命令最快速(最简单)的方法是执行命令un all,这是命令undebug all的简化版本。
一个很有用的命令是debug condition(对IPSec来说是debug crypto condition),尤其是调试L2F、PPTP、L2TP、Any Transport over MPLS(AToM)和IPSe时。命令debug condition可用于限制debug命令的输出,使得只显示与特定的被叫号(或主叫号)、接口、用户名、IP地址或AToM虚电路(VC)ID相关的输出。命令debug condition可用于限制下述命令的输出:
debug aaa {accounting | authorization | authentication};
debug dialer {events | packets};
debug isdn {q921 | q931};
debug modem {oob | trace};
debug ppp {all | authentication | chap | error | negotiation | multilink events | packet};
debug mpls l2transport vc {event | fsm};
debug crypto {isakmp | ipsec | engine}。
在程序清单1-1中,命令debug condition被用于限制命令debug ppp negotiation的输出,使之只显示与虚拟模板接口1相关的输出。注意,这里只列出了一部分输出。
在加黑的第1行,使用命令debug condition interface virtual-template 1来启用与虚拟模板接口1相关的调试消息。这也禁用了与其他接口相关的输出。在加黑的第2行,使用命令debug ppp negotiation来启用对PPP协商事件的调试。最后,在加黑的第3行,在虚拟模板接口1(在这个例子中,虚拟接入接口1是从该接口克隆而来的)上触发了PPP调试消息。然后,显示了PPP调试消息。
可以同时启用多个debug (crypto) condition命令,但不要启用过多的条件,因为这会影响路由器的性能。在这种情况下,只有满足条件之一的调试输出才被显示。必要时可使用命令show debug condition或show crypto debug-condition来查看当前的调试条件,如程序清单1-2所示。
正如读者看到的,指定了调试条件AToM VC ID 123。该条件满足过两次。要删除调试条件,可使用命令no debug (crypto) condition。对于IPSec,可使用命令debug crypto condition reset来删除所有的调试条件,但在此之前务必关闭所有的IPSec调试命令。
还可以使用访问列表来过滤很多debug命令的输出。一个这样的典型例子是命令debug ip bgp update [access-list],这将把该命令的输出限制为包含访问列表中指定前缀的更新。