Méthodes de diagnostic
Pour diagnostiquer une situation, on procédera par des vérifications à partir de la couche la plus basse. La principale commande est "show" suivie des paramètres appropriés. On trouvera une discussion l'autre principale commande de diagnostic "debug" ainsi qu'une courte présentation du protocole de couche 2 CDP. Dans un diagnostic, on priviliégera toute information dynamique en temps réel. Se baser sur le souvenir d'une commande dactylographiée est une méprise courante sur laquelle on évitera de se baser.
1. Vérifications de couche 1
Voici les erreurs communes de couche 1 :
-
des câbles rompus,
-
des câbles déconnectés,
-
des câbles raccordés à des ports inappropriés,
-
des connexions instables,
-
des câbles inappropriés pour la tâche à accomplir (les câbles console, les câbles d'interconnexion et les câbles droits doivent être employés à bon escient),
-
des problèmes d'émetteur-récepteur,
-
des problèmes de câblage ETCD,
-
des problèmes de câblage ETTD,
-
des unités hors tension.
Ces problèmes sont les plus courants et doivent être vérifiés de visu.
2. Vérifications de couche 2
Plusieurs commande permettent de donner sur létat de la liaison et sur le résultat de messages de tests dactivité.
Létat de la liaison correspond à la détection dune porteuse.
Les messages de tests dactivité correspond à lémission de keepalive.
Voici les commandes qui donnent ces résultats :
#show interfaces
#show ip interface
#show ip interface brief
#show protocols
|
Etat de la liaison |
Test dactivité |
Interprétation |
|
Interface is up |
line protocol is up |
Opérationnel |
|
Interface is up |
line protocol is down |
Câblage incorrect (couche 1) : Par exemple, en Ethernet, câble droit entre une routeur et une station de travail. Problème de configuration :
|
|
Interface is down |
line protocol is down |
La porteuse na pas été détectée (couche 1) :
|
|
Interface is administratively down |
line protocol is down |
Interface shutdown |
On examinera la commande show interfaces, par exemple :
#show interfaces serial 0/0
Serial0/0 is up, line protocol is up
Hardware is PowerQUICC Serial
Description: De Bruxelles vers Charleroi
Internet address is 200.200.200.129/27
MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation HDLC, loopback not set
Keepalive set (10 sec)
Last input 00:00:00, output 00:00:05, output hang never
Last clearing of "show interface" counters never
Queueing strategy: fifo
Output queue 0/40, 0 drops; input queue 0/75, 0 drops
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
103 packets input, 7902 bytes, 0 no buffer
Received 97 broadcasts, 0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
105 packets output, 8129 bytes, 0 underruns
0 output errors, 0 collisions, 19 interface resets
0 output buffer failures, 0 output buffers swapped out
1 carrier transitions
DCD=up DSR=up DTR=up RTS=up CTS=up
|
Champ |
Description |
|
Hardware is |
Donne le type de matériel. |
|
Internet address is |
Donne ladresse IP et le masque. |
|
MTU |
Maximum transmission unit : taille maximale de paquet, en octets, que peut traiter une interface. |
|
BW |
Bande passante. |
|
DLY |
Délai de linterface en microsecondes : temps entre l'amorce d'une transaction par un émetteur et la première réponse reçue par cet émetteur. |
|
Relay |
Reliability - Fiabilité : Taux de messages de veille attendus d'une liaison. Si le taux est élevé, la ligne est fiable. Fraction de 255 (255/255 est 100 % de fiabilité), calculé comme moyenne exponentielle sur 5 minutes. |
|
Load |
Charge : Quantité dactivité sur la liaison. Fraction de 255 (255/255 est complètement saturé), calculé comme moyenne exponentielle sur 5 minutes. |
|
Encapsulation |
Méthode dencapsulation de couche 2 sur linterface |
|
loopback |
Loopback activé ou non. |
|
keepalive |
Keepalive défini |
On vérifiera également la configuration courante :
#show running-config
Sans se déplacer sur les routeurs, on peut voir si les interfaces sérielles sont DCE ou DTE :
#show controllers serial interface_number
Par exemple, à la troisième ligne,
Router#show controllers serial 0/0
Interface Serial0/0
Hardware is PowerQUICC MPC860
DTE V.35, clock rate 64000
idb at 0x8129C8E8, driver data structure at 0x812A1E58
...
Tapez simultanément sur CTRL SFHIT et § (le touche 6 du clavier alphanumérique) pour interrompre la liste.
Les problèmes communs peuvent être les suivants :
-
Une interface qui nest pas activée (shutdown)
-
des interfaces série configurées de façon incorrecte,
-
des interfaces Ethernet configurées de façon incorrecte,
-
un ensemble d'encapsulation inapproprié (HDLC est utilisé par défaut pour les interfaces série),
-
une fréquence d'horloge inappropriée pour les interfaces série.
3. Le Protocole CDP (Cisco Discovery Protocol)
Le Cisco Discovery Protocol est utilisé pour obtenir des adresses des périphériques voisins et découvrir leur plate-forme. CDP peut aussi être utilisé pour voir des informations sur les interfaces quun routeur utilise. Il est entièrement indépendant du média ou des protocoles et tourne sur tous les matériels Cisco comme des ponts, des commutateurs, des serveurs daccès ou des routeurs.
Lutilisation de SNMP avec la MIB CDP permet au logiciel de gestion du réseau (NMA) de connaître le type de matériel, les adresses des agents SNMP voisins et denvoyer des demandes SNMP à ces matériels.
CDP fonctionne sur tous les médias qui supporte le SNAP (Subnetwork Access Protocol) dont les médias physiques LAN, Frame-Relay et ATM. CDP fonctionne uniquement au niveau de la couche 2, liaison de donnée. Ainsi, deux système qui ont des protocoles de couche 3 différents peuvent se communiquer des informations CDP.
Chaque matériel CDP envoie périodiquement des messages, connus sous le nom de advertisements, à une adresse multicast. Ces messages contiennent un temps de vie (time-to-live) ou un compteur de retenue (holdtime), une information qui indique le temps quun matériel CDP doit garder les informations avant de ne plus en tenir compte. Aussi chaque matériel CDP écoute les messages CDP périodiques envoyés par les autres pour en apprendre sur ses voisins et déterminer quand les interfaces sont montées ou non.
3.1. Activation de CDP
CDP est activé par défaut sur le matériel Cisco. On peut activer ou désactiver lutilisation de CDP :
(config)#cdp run
Ou
(config)#no cdp run
Egalement, on peut activer ou désactiver CDP sur une interface :
(config)#interface serial 0
(config-if)#cdp enable
Ou
(config)#interface serial 0
(config-if)#no cdp enable
3.2. Compteurs CDP
Il y a deux type de compteurs CDP :
|
(config)#cdp timer seconds |
Fréquence de transmission des informations CDP |
60 sec par défaut |
|
(config)#cdp holdtime seconds |
Temps de validité dune information CDP avant quelle ne soit plus prise en compte |
180 sec par défaut |
Commandes de visualisation CDP
|
Commande |
Description |
|
#clear cdp counters |
Remet les compteurs à zéro |
|
#clear cdp table |
Efface la table CDP à propos des voisins |
|
#show cdp |
Donne les valeurs des compteurs |
|
#show cdp entry entry-name [protocol|version] |
Donne des informations sur les voisins donnés. « * » pour être utilisés pour les visualiser tous |
|
#show cdp interface [type number] |
Donne des informations sur les interfaces sur lesquelles CDP est activé. |
|
#show cdp neighbors [type number] [detail] |
Donne le type de matériel découvert, son nom, le nombre et le type dinterface, la validité des informations CDP, etc. |
|
#show cdp traffic |
Indique les compteurs CDP ainsi que des statistiques sur le trafic CDP |
Exemples :
#show cdp
Global CDP information:
Sending CDP packets every 60 seconds
Sending a holdtime value of 180 seconds
#show cdp neighbors
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater
Device ID Local Intrfce Holdtme Capability Platform Port ID
Router3 Ser 1 120 R 2500 Ser 0
Router1 Eth 1 180 R 2500 Eth 0
Switch1 Eth 0 240 S 1900 2
#show cdp entry Router1
-------------------------
Device ID: Router1
Entry address(es):
IP address: 192.168.1.2
Platform: cisco 2500, Capabilities: Router
Interface: Ethernet1, Port ID (outgoing port): Ethernet0
Holdtime : 180 sec
Version:
Cisco Internetwork Operating System Software
IOS (tm) 2500 Software (2500-JS-L), Version 11.2(15)
RELEASED SOFTWARE (fcl)
Copyright (c) 1986-1998 by Cisco Systems, Inc.
Compiled Mon 06-Jul-98 22:22 by tmullins
#show cdp neighbors detail
Device ID: 008024 1EEB00 (milan-sw-1-cat9k)
Entry address(es):
IP address: 1.15.28.10
Platform: CAT5000, Capabilities: Switch
Interface: Ethernet1/0, Port ID (outgoing port): 2/7
Holdtime : 162 sec
Version :
Cisco Catalyst 5000
Duplex Mode: full
Native VLAN: 42
VTP Management Domain: `Accounting Group'
#show cdp traffic
Total packets output: 543, Input: 333
Hdr syntax: 0, Chksum error: 0, Encaps failed: 0
No memory: 0, Invalid: 0, Fragmented: 0
CDP version 1 advertisements output: 191, Input: 187
CDP version 2 advertisements output: 352, Input: 146
#show cdp interface
Ethernet0 is up, line protocol is up
Encapsulation ARPA
Sending CDP packets every 60 seconds
Holdtime is 180 seconds
Serial0 is up, line protocol is up
Encapsulation HDLC
Sending CDP packets every 60 seconds
Holdtime is 180 seconds
Serial1 is up, line protocol is up
Encapsulation HDLC
Sending CDP packets every 60 seconds
Holdtime is 180 seconds
4. Vérifications de couche 3
4.1. Configuration
On vérifiera la configuration courante :
Router#show running-config
4.2. Adressage
Létat dIP peut être vérifié.
4.2.1. show ip interface
Par exemple,
Bruxelles#show ip interface serial 0/0
Serial0/0 is up, line protocol is up
Internet address is 200.200.200.129/27
Broadcast address is 255.255.255.255
Address determined by setup command
MTU is 1500 bytes
Helper address is not set
Directed broadcast forwarding is disabled
Multicast reserved groups joined: 224.0.0.9
Outgoing access list is not set
Inbound access list is not set
Proxy ARP is enabled
...
4.2.2. show ip interface brief
Cette commande permet de vérifier rapidement les paramètres essentiels des interfaces.
Par exemple,
Bruxelles#show ip interface brief
Interface IP-Address OK? Method Status Protocol
Ethernet0/0 200.200.200.33 YES manual up up
Serial0/0 200.200.200.129 YES manual up up
Serial0/1 200.200.200.161 YES manual up up
4.2.3. show protocols
Plus simple encore,
Bruxelles#show protocols
Global values:
Internet Protocol routing is enabled
Ethernet0/0 is up, line protocol is up
Internet address is 200.200.200.33/27
Serial0/0 is up, line protocol is up
Internet address is 200.200.200.129/27
Serial0/1 is up, line protocol is up
Internet address is 200.200.200.161/27
4.3. Routage
La table de routage donnera les différentes destinations apprises par le ou les protocoles de routage activés sur le routeur. Lexistence de routes apprises par un protocole de routage signifie que le routeur a appris des routes. Par ailleurs, lexistence des ces entrées nindique nullement que le routeur envoie des informations de routage !
#show ip route
En se basant sur cet exemple voici ce que donnera la commande :
Bruxelles#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
200.200.200.0/27 is subnetted, 6 subnets
R 200.200.200.192 [120/1] via 200.200.200.158, 00:00:25, Serial0/0
[120/1] via 200.200.200.190, 00:00:26, Serial0/1
C 200.200.200.128 is directly connected, Serial0/0
C 200.200.200.160 is directly connected, Serial0/1
R 200.200.200.64 [120/1] via 200.200.200.158, 00:00:25, Serial0/0
R 200.200.200.96 [120/1] via 200.200.200.190, 00:00:26, Serial0/1
C 200.200.200.32 is directly connected, Ethernet0/0
Où :
Colonne 1 : type de protocole de routage
Colonne 2 : réseau de destination
Colonne 3 : distance administrative / valeur de la métrique
Colonne 4 : joignable par telle prochaine interface
Colonne 5 : âge de la route apprise
Colonne 6 : interface de sortie du routeur
Par contre, on vérifiera les paramètres de routage sur le routeur en regardant le fichier de configuration ou de manière plus dynamique par la commande :
#show ip protocols
Par exemple, pour IGRP activé :
#show ip protocols
Routing Protocol is "igrp 109"
Sending updates every 90 seconds, next due in 44 seconds
Invalid after 270 seconds, hold down 280, flushed after 630
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Default networks flagged in outgoing updates
Default networks accepted from incoming updates
IGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
IGRP maximum hopcount 100
IGRP maximum metric variance 1
Redistributing: igrp 109
Routing for Networks:
198.92.72.0
Routing Information Sources:
Gateway Distance Last Update
198.92.72.18 100 0:56:41
198.92.72.19 100 6d19
198.92.72.22 100 0:55:41
198.92.72.20 100 0:01:04
198.92.72.30 100 0:01:29
Distance: (default is 100)
4.4. Connectivité
4.4.1. Ping
La commande Ping (Packet InterNet Groper) est une méthode très utile pour vérifier la connectivité. Elle utilise deux messages ICMP (Internet Control Message Protocol), des ICMP Echo Requests et des ICMP Echo Replies pour déterminer quun hôte distant est joignable. Cette commande mesure également le temps pris pour recevoir un Echo Reply.
La commande ping envoie dabord un Echo Request à une adresse IP et attend une réponse. Le ping est satisfaisant seulement si lEcho Request arrive à destination et si la destination est capable de renvoyer un Echo Reply à la source du ping avec un intervalle de temps prédéfini.
Voici un ping standard dans un IOS :
>ping 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/31/32 ms
4.4.2. Le ping étendu
Quand la commande normale ping est envoyée dun routeur, ladresse source est celle de linterface qui est utilisée pour sortir. Avec la commande étendue ping, on peut construire plus précisément sa requête Echo ICMP (notamment spécifier ladresse IP source). Lappel à la commande étendue se fait en tapant ping suivi dun retour chariot. La commande posera une série de question auxquelles il faudra répondre. Les réponses par défaut saccusent par un retour chariot.
#ping
|
Question |
Description |
|
Protocol [ip]: |
Protocole routé suporté : appletalk, clns, ip, novell, apollo, vines, decnet, or xns. Par défaut, ip. |
|
Target IP address: |
Adresse IP de destination ou nom dhôte à vérifier. Par défaut, rien. |
|
Repeat count [5]: |
Nombre de paquets qui seront envoyés à ladresse de destination. Par défaut, 5. |
|
Datagram size [100]: |
Taille du paquet en octets. Par défaut, 100 octets. |
|
Timeout in seconds [2]: |
Intervalle de Timeout. Par défaut, 2 secondes. Le ping est déclaré satisfaisant seulement si lEcho Reply est reçu endéans cet intervalle. |
|
Extended commands [n]: |
Demande si lon veut utiliser des commandes supplémentaires. Par défaut, non. |
|
Source address or interface: |
Adresse source ou interface (avec une syntaxe correcte). |
|
Type of service [0]: |
Spécifie le le « type of service » (ToS). Par défaut, 0. |
|
Set DF bit in IP header? [no]: |
Spécifie si le bit « Don't Fragment » (DF) est activé ou pas. Utile pour spécifier le plus petit MTU dans un trajet. Par défaut, non. |
|
Validate reply data? [no]: |
Spécifie sil y aura validation ou non des données de réponse. Par défaut, non. |
|
Data pattern [0xABCD] |
Spécifie le modèle de donnée. Utile pour diagnostiquer des problèmes de trames ou dhorloge sur des lignes sérielles. Par défaut, 0xABCD. |
|
Loose, Strict, Record, Timestamp, Verbose[none]: |
Options den-têtes IP. Par défaut, non. |
|
Sweep range of sizes [n]: |
Permet de faire varier la taille des paquets décho envoyés. Par défaut, non. |
|
!!!!! |
Chaque « ! » signifie la réception dune réponse. |
|
..... |
Chaque « . » signifie que les requêtes ICMP nont pas reçu de réponse avant le temps requis. |
|
UUUUU |
Chaque « U » signifie quun paquet « destination inaccessible » a été recu. |
|
MMMMM |
Chaque « M » correspond à limpossibilité de fragmenter les paquets |
|
????? |
Chaque « ? » correspond à des paquets inconnus reçus |
|
&&&&& |
Chaque « & » signifie que la durée de vie des paquets est dépassée |
|
Success rate is 100 percent |
Pourcentage des paquets pour lesquels le routeur a reçu une réponse. En dessous de 80 % est habituellement considéré comme problématique. |
|
round-trip min/avg/max = 1/2/4 ms |
Temps de trajet de retour (Round-trip travel time intervals) pour les réponses (minumum/moyenne/maximum) |
4.4.3. Traceroute
La commande traceroute permet de voir les différents sauts quempruntent les paquets à un moment donné. Par exemple :
Router1#traceroute 34.0.0.4
Type escape sequence to abort.
Tracing the route to 34.0.0.4
1 12.0.0.2 4 msec 4 msec 4 msec
2 23.0.0.3 20 msec 16 msec 16 msec
3 34.0.0.4 16 msec * 16 msec
Comme pour la commande ping, on peut utiliser la commande traceroute en mode étendu (commande seule suivie dun retour chariot).
Pour plus dinformations sur traceroute :
http://www.informatik.uni-trier.de/~smith/networks/tspec.html
Pour plus dinformations sur ICMP voir la RFC 792 : http://www.ietf.org/rfc/rfc0792.txt?number=792
4.5. Problèmes communs
-
un protocole de routage non activé,
-
un protocole de routage activé mais incorrectement configuré,
-
des adresses IP incorrectes ou absentes,
-
des masques de sous-réseau incorrects,
-
des liens DNS-IP incorrects
-
Une passerelle par défaut non configuré sur lhôte disant (pas de retour possible)
5. Vérifications de la couche 4-7
Les vérifications de couche 7 sopèrent en établissant des requêtes à partir dun client approprié vers le service demandé. Pour ne citer que les services les plus courant :
-
un navigateur internet pour HTTP
-
la commande telnet (IOS et OS PC) pour TELNET
-
la commande ftp (OS PC) pour FTP
Il va de soi que ce type de diagnostic permet aussi détablir létat des ports ouverts ou filtrés (Liste daccès ACL).
6. Debug
La commande debug donne des messages de diagnostic sur des processus mis en uvre sur le routeur. En production, il faut prendre garde dactiver ce type de méthode car elle peut prendre beaucoup de ressources. Avant dactiver un quelconque débogage, il convient de vérifier les ressources restantes du routeur avec la commande show process cpu en mode privilège.
Aussi, par défaut ces informations apparaîtront sur la console, ce qui est particulièrement inconfortable. Il est possible de désactiver cet affichage et, même de les envoyer sur un serveur approprié Syslog (voir infra).
On ne présentera pas ici le détail des commandes ainsi que leur interprétation.
6.1. Débogage du routage.
Il peut être utile de voir les informations de routage qui sont envoyées et reçues par le routeur.
Pour Rip,
#debug ip rip
http://www.cisco.com/univercd/cc/td/doc/product/software/ios120/12supdoc/debug_r/dippim.htm#8567
Pour IGRP,
#debug igrp events
http://www.cisco.com/univercd/cc/td/doc/product/software/ios120/12supdoc/debug_r/dipdrp.htm#4019
#debug igrp events
http://www.cisco.com/univercd/cc/td/doc/product/software/ios120/12supdoc/debug_r/dipdrp.htm#4048
6.2. Débogage du ping
On verra ici lorigine, la destination et la nature des paquets ICMP envoyés et reçus.
#debug ip packet
http://www.cisco.com/univercd/cc/td/doc/product/software/ios120/12supdoc/debug_r/dipdrp.htm#4599
http://www.cisco.com/warp/public/63/ping_traceroute.html#usingdbg
6.3. Désactivation du débogage
On peut désactiver un debug par la négation (no). On peut également désactiver tout débogage par les commandes suivantes :
#undebug all
Ou,
#no debug all
6.4. Débogage hors console.
Voici un exemple de manipulation pour visualiser les informations de débogage après coup sur la console. Au préalable, il sagit de vérifier si le routeur a suffisamment mémoire pour accepter le stockage des logs par show process memory.
Router#configure terminal
Router(config)#no logging console
Router(config)#logging buffered 5000
Router(config)#^Z
Router#debug ip packet
IP packet debugging is on
Router#ping 12.0.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 12.0.0.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 36/36/37 ms
Router#undebug all
All possible debugging has been turned off
Router#show log
Syslog logging: enabled (0 messages dropped, 0 flushes, 0 overruns)
Console logging: disabled
Monitor logging: level debugging, 0 messages logged
Buffer logging: level debugging, 61 messages logged
Trap logging: level informational, 59 message lines logged
Log Buffer (5000 bytes):
1w0d: IP: s=34.0.0.4 (local), d=12.0.0.1 (Serial0/0), Len 100, sending
1w0d: IP: s=12.0.0.1 (Serial0/0), d=34.0.0.4 (Serial0/0), Len 100, rcvd 3
Pour envoyer les log de debogage sur un serveur Syslog, on utilise la commande logging suivie de ladresse IP du serveur.
7. Autres diagnostics
Pour vérifier la valeur du registre de démarrage, on appliquera la commande
#show version
Pour visualiser le contenu de la startup-config située en NVRAM, autrement dit, pour constater lenregistrement dune configuration, on utilisera les commandes :
#show startup-config
Ou,
#show configuration
8. Liste des commandes
- #show interfaces [type number]
- #show ip interface[type number]
- #show ip interface brief
- #show protocols
- #show running-config
- #show controllers [type number]
- (config)#cdp run
- (config-if)#cdp enable
- (config)#cdp timer seconds
- (config)#cdp holdtime seconds
- #clear cdp counters
- #clear cdp table
- #show cdp
- #show cdp entry entry-name [protocol|version]
- #show cdp interface [type number]
- #show cdp neighbors [type number] [detail]
- #show cdp traffic
- #show ip route
- #show ip protocols
- >ping ip_address
- #ping [ip_address]
- >traceroute ip_address
- #traceroute [ip_address]
- #show process cpu
- #debug ip rip
- #debug igrp events
- #debug ip packet
- #undebug all
- #no debug all
- #show process memory
- (config)#logging console
- (config)#logging buffered value_in_bytes
- #show log
- (config)#logging ip_address
- #show version
- #show startup-config
- #show configuration