思科路由show processes cpu看不出来哪些进程占用CPU高,但CPU使用率却是99%,请高手指点。

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-16
用的思科3825路由器,过一段时间后,cpu使用率慢慢就升到99%,网络越来越卡,直到断网

ip nat ager 这个进程是路由器解析nat用的。使用率过高可能是上网流量过大,内网用户过多,有人在有迅雷或者其他下载器全速下载。还有可能是内网的PC中毒,内网的原因。
路由器做nat解析本来就占用很大CPU的,要根本解决问题还是要用防火墙。建议你们公司换成ASA,或者NETSCREEN防火墙。

show process cpu,看看是那个进程占用了cpu

你的路由可能被攻击了,最好把路由器恢复到出厂设置,在重新设置下,另外就是检查下端口,对端口进行监控,观察一段时间看下

你看下show processes cpu | exclude 0.00%
然后看看那个线程CPU usage会比较高...
不知道有没有loop....

检测下有没有环路
再就是用排除法来分析了

把端口逐个断开,观察cpu利用率,很快就能找出故障的端口。或者进一步用排除发找出网络分支上的故障点。

  1、判断故障原因
  原理上,是在路由器上创建一个permit ip any any的access-list(访问列表),然后,把这个acl应用到故障端口上,打开ip包的debug,分析故障原因。例子如下:
  1.1创建一个access-list ,允许ip包通过
  route(config)# access-list 120 permit ip any any
  1.2把此acl应用的故障端口上
  route((config-if)#ip access-group 120 in
  这样做的目的是因为,下面要打开debug,就是要根据这个acl,来抓通过这个端口的包。
  1.3打开debug进行抓包
  route#debug ip packet 120
  debug应该在console上进行
  1.4停止debug
  route#no debug all
  注意debug可能会把路由器冲死,所以应该尽快停止。
  1.5分析抓到的包
  抓到的包,可以分析出原地址,目的地址,源端口,目的端口,用于判断故障的根源。
  当然,有时遇到攻击软件,会用IP欺骗的方式进行攻击,例如下面看到的抓包信息
2:54:56: IP:
s=180.93.127.229 (FastEthernet0/0), d=193.151.73.76 (FastEthernet0
1), g=211.138.74.97, len 40, forward
2:54:56: TCP src=1232, dst=80, seq=1632305152, ack=0, win=16384 SYN
2:54:56: IP: s=180.93.128.205 (FastEthernet0/0), d=193.151.73.76 (FastEthernet0
1), g=211.138.74.97, len 40, forward
2:54:56: TCP src=1839, dst=80, seq=1144193024, ack=0, win=16384 SYN
2:54:56: IP: s=180.93.129.212 (FastEthernet0/0), d=193.151.73.76 (FastEthernet0
1), g=211.138.74.97, len 40, forward
2:54:56: TCP src=1116, dst=80, seq=1918435328, ack=0, win=16384 SYN
2:54:56: IP: s=180.93.130.223 (FastEthernet0/0), d=193.151.73.76 (FastEthernet0
1), g=211.138.74.97, len 40, forward
2:54:56: TCP src=1302, dst=80, seq=1559429120, ack=0, win=16384 SYN
  上面这个例子可以看出,攻击行为用虚拟源地址180.x.x.x想目的地址192.151.73.76发包,这些包都被发到了网关,也就是路由器的FastEthernet0/0。
  2、解决方法
  首先,当然应该先找到罪魁祸首,如果在路由器上debug不是很清晰能找出故障源,就用sniffer或者ethereal这样的抓包工具找出那台机器。
  另外,在路由器上,也可以针对攻击的特性,做访问列表,关闭相关的端口。
  下面是在路由器上一个典型的acl
! --- 禁止ICMP协议
access-list 115 deny icmp any any echo
access-list 115 deny icmp any any echo-reply
! --- 禁止冲击波135端口的数据包.
access-list 115 deny tcp any any eq 135
access-list 115 deny udp any any eq 135
access-list 115 deny udp any any eq 4444
! --- 禁止TFTP应用的端口的数据包
access-list 115 deny udp any any eq 69
! --- 禁止其他微软的有漏洞的协议端口.
access-list 115 deny udp any any eq 137
access-list115denyudpanyanyeq138
access-list115denytcpanyanyeq139
access-list115denyudpanyanyeq139
access-list115denytcpanyanyeq445
access-list115denytcpanyanyeq593
! --- 允许其他的IP包通过路由器端口.
access-list 115 permit ip any any
! --- 把以上的访问列表应用的端口上.
interface
ip access-group 115 in
ip access-group 115 out

另外还有和你一样有故障的人的结局方法:你可以参考下
1. IP
NAT导致路由器cpu利用率高的情况比较常见,查了nat表 发现我的静态映射条目只有5个不算多 这个应该不需要考虑
2.
在inside、outside端口增加no ip redirect和no ip
direct-broadcast等语句以减少cpu处理的数据包,这个是非常重要的一步,很多时候,路由器死机就是因为没有做这一步防范
3.
启用了service tcp-keepalive-in功能和scheduler process-watchdog
terminat功能,开启了看门狗进程,检查已经建立的tcp连接,如果发生不激活或者长时间挂起的情况,立刻中断这个连接。个人认为只对路由器自身发
起的链接有效,
4. 使用no ip source-route命令关于对于源ip地址的路由检查,这个避免了不必要的资源占用
5.
关闭一些不需要的服务 比如 no ip finger ,no service tcp-small-servers,no service
udp-small-servers等等
6. 关闭对直接广播的转发 no ip direct-broadcast
这样可以防治路由器对一些大量的广播包进行应答
7. 关闭了路由器的http服务
8. 关闭cdp服务
9.
最后一个,就是在路由器的outside口上,加上acl来防止一些主要的工具,在网上看了下,这个acl比较全
access-list 101 deny
tcp anyanyeq 135
access-list 101 deny tcp any any eq 139
access-list 101
deny tcp any any eq 389
access-list 101 deny tcp any any eq
420
access-list 101 deny tcp any any eq 445
access-list 101 deny tcp any
any eq 449
access-list 101 deny tcp any any eq 593
access-list 101 deny
tcp any any eq 1025
access-list 101 deny tcp any any eq 1092
access-list
101 deny tcp any any eq 1434
access-list 101 deny tcp any any eq
2745
access-list 101 deny tcp any any eq 3127
access-list 101 deny tcp any
any eq 4444
access-list 101 deny tcp any any eq 5354
access-list 101 deny
tcp any any eq 5554
access-list 101 deny tcp any any eq 5555
access-list
101 deny tcp any any eq 5800
access-list 101 deny tcp any any eq
5900
access-list 101 deny tcp any any eq 6129
access-list 101 deny tcp any
any eq 6667
access-list 101 deny tcp any any eq 9604
access-list 101 deny
tcp any any eq 9995
access-list 101 deny tcp any any eq 9996
access-list
101 deny tcp any any eq 16881
access-list 101 deny tcp any any eq
20168
access-list 101 deny udp any any eq 135
access-list 101 deny udp any
any eq netbios-ns
access-list 101 deny udp any any eq
netbios-dgm
access-list 101 deny udp any any eq 389
access-list 101 deny
udp any any eq 445
access-list 101 deny udp any any eq 449
access-list 101
deny udp any any eq 1068
access-list 101 deny udp any any eq
1092
access-list 101 deny udp any any eq 1433
access-list 101 deny udp any
any eq 1434
access-list 101 deny udp any any eq 5300
access-list 101 deny
udp any any eq 5554
access-list 101 deny udp any any eq 5800
access-list
101 deny udp any any eq 6667
access-list 101 deny udp any any eq
7995
access-list 101 deny udp any any eq 9800
access-list 101 deny udp any
any eq 16881
access-list 101 deny udp any any eq 20168
access-list 101
deny udp any any eq tftp
access-list 101 deny udp any any eq
netbios-ss
access-list 101 permit ip any any

光转和路由器接口必须用交叉线,路由器出口必须设置为全双工100M