Cisco : routeurs 2600-2800-3700

De Wiki info-lab.fr
Aller à : Navigation, rechercher

Sommaire

INTRODUCTION

Les Routeurs Cisco séries 2600-2800-3700 se présentent sous la forme de boitiers au format 19 pouces, d'une hauteur de 1 à plusieurs RU, légèrement modulaires, spécialisés dans le routage et possédant des capacités de filtrage.

Conventions typographiques

Les caractères affichés par le routeur sont représentés en vert.
Les commandes à taper sont écrites en caractères gras et sont à valider par la touche entrée.
Certaines commandes peuvent réclamer des sous commandes.
Les commandes à manipuler avec précaution sont suivies de !!

Connexion à un routeur

  • Si ce routeur possède une adresse IP connue, par Telnet ou SSH.
  • Par interface Web s'il a déjà une adresse IP connue et si le serveur Web du routeur est actif.
  • Si le routeur n'a pas encore d'adresse ou si elle n'est pas connue, en reliant le port console du routeur au port COM (interface série RS-232 mâle) d'un PC qui exécute un émulateur de terminal VT100 réglé à 9600 baud/s, 8 bit de données, pas de parité, 1 bit d'arrêt et contrôle de flux matériel ou aucun. Exemple d'émulateurs de terminal : Minicom, GtkTerm, PuTTy ...
  • Tous ces moyens permettent d'accéder à l'austère mais puissante CLI (Command Line Interface). Si le serveur web est actif, l'interface Web permet en plus d'accéder à d'autres informations plus visuelles : Cette interface dépend beaucoup de la version d'IOS et ne présente aucun intérêt sur les routeurs Cisco. Il est préférable d'utiliser la CLI.

Commandes de base de la CLI et astuces

Après une authentification éventuelle, nous sommes accueillis par un Prompt:

router> 

"Router" est le nom actuel du routeur, le prompt en > indique que l'on est connecté en mode utilisateur non privilégié (ou Exec) : Accès en lecture à la plupart des informations, et possibilité de modifier quelques paramètres ou de lancer quelques commandes simples.
Résumé des principales commandes accessible en mode non privilégié:

?	        pour afficher la liste alphabétique des commandes.
enable		passer en mode privilégié
exit		se déconnecter
help		système d'aide interactif
ping		envoyer un echo request ICMP 
rcommand	lancer une commande sur un équipement distant
set		définir un paramètre (hors config)
show		afficher des paramètres 
telnet		client telnet
traceroute	utilitaire traceroute
where		lister les connexions VTY actives


  • Sur un routeur , toutes les modifications effectuées via la CLI s'appliquent à la configuration en cours d'exécution (la running-config) qui se trouve en mémoire volatile RAM ; il faudra donc écrire le contenu de la cette running config dans la startup-config (mémoire non volatile: Nvram ou Flash, lue au démarrage du routeur) pour garder les modifications effectuées.
  • La combinaison de touches CTRL+C permet d'arrêter une opération en cours de traitement (par exemple sortir de la lecture d'un fichier de plusieurs pages).
  • La combinaison de touches CTRL+Z permet de descendre de plusieurs niveaux d'arborescence dans les commandes et de revenir au niveau le plus bas du mode (à la racine). Par exemple de Router(config-pmap-c)# directement vers Router#. La présence des 3 mots séparés par un tiret indique 3 niveaux d'arborescence : config, puis policy-map (pmap) puis class (c).
  • La complétion de commandes est appelée au moyen de la touche tabulation : La commande est complétée si elle est sans ambiguïté.
  • La touche flèche haut du clavier permet de rappeler les 10 (par défaut mais ce nombre est modifiable) dernières commandes validées. La commande #show history permet de consulter toutes les commandes enregistrées.
  • Commandes incomplètes: Parfois il n'est pas nécessaire d'écrire une commande en entier; si la chae de caractère saisie est dénuée d'ambiguïté, la CLI l'acceptera; exemple: wr est une abréviation suffisante de la commande write terminal ; autre exemple: int fa 0/1 est une abréviation suffisante de interface fastEthernet 0/1
  • la commande ? Permet à tout moment de savoir ce qu'attend comme instructions supplémentaires une commande incomplète en listant les possibilités offertes. Dans cette liste si <cr> est présent cela veut dire que cette commande peut aussi s’exécuter telle quelle sans instructions supplémentaires. Si <cr> est seul dans la liste c'est que l'on ne peut rien ajouter à la commande.
  • Beaucoup d'interfaces crées (VLAN, Loopback) sont inactives par défaut ; Il faut les activer par la commande no shutdown. Certains changement de configuration d'interfaces « à chaud » peuvent perturber le fonctionnement des ACL par exemple. Avant une modification, shutdown de l'interface concernée, modification de ses paramètres, puis no shutdown.
  • Le fichier de configuration (startup-config) interprété par l'IOS est un simple fichier texte ASCII que l'on peut importer/exporter via le protocole TFTP, FTP ou SCP, ce qui permet de le sauvegarder/restaurer, l'imprimer ou le modifier facilement dans un éditeur de texte.
  • La commande no permet d'annuler toutes les commandes ou de les remettre à leur valeur par défaut. Par exemple, CDP enable active le mode CDP, no CDP enable le désactive.
  • La commande enable (ou son raccourci en) permet de basculer du mode exec vers le mode privilégié et d'avoir accès à beaucoup plus de commandes.
  • En principe une commande ne peut être exécutée que dans le niveau d'exécution prévu pour le faire ; ainsi en mode (config-line)# il n'est pas possible d'exécuter une commande du mode exec, telle que #write memory. La commande do permet d’exécuter la plupart des autres commandes en dehors de leur niveau d’exécution : (config-line)#do write memory.

Configuration de base du routeur

Router#show version

Renvoie les informations de version du boot loader, de l' IOS, les types de mémoire, leur taux d'utilisation, le modèle de processeur...

Router#configure terminal      (rappel: conf t suffit)

Pour passer en mode configuration.

Routeur(config)#ip classless

ip classeless permet d'utiliser les masques de sous réseau à sa convenance sans classe A, B ou C. Concerne principalement le format des routes dans la table de routage.

Routeur(config)#ip subnet-zero

Autorise l'emploi de réseaux dont l'avant dernier octet est 0, comme par exemple le réseau 120.0.0.0/16 : néanmoins l'emploi de ces réseaux n'est pas toujours conseillé (certaines RFC le déconseillent même fortement), c'est pour cela que sans cette commande un IOS n'en autorise pas l'emploi.

Router(config)#hostname routeur_105

Pour nommer le routeur ; les espaces ne sont pas acceptés dans le nom. Le prompt change de suite pour adopter le nouveau nom. A noter que sans nom d'hôte il n'est pas possible de lancer le serveur SSh.

routeur_105#clock set hh:mm:ss jj mois aaaa
routeur_105#clock timezone UTC 1
routeur_105#clock summer-time UTC recurring last Sun Mar 2:00 last Sun Oct 3:00

Mise à l'heure du routeur (cet horodatage pourra être affiné si un ou des serveurs NTP sont renseignés), choix du fuseau horaire et application du changement d'heure d'été.

routeur_105(config)#interface FastEthernet0/0
routeur_105(config-if)#ip address 155.15.19.1 255.255.255.128
routeur_105(config-if)#description VERS LAN
routeur_105(config)#interface FastEthernet0/1
routeur_105(config-if)#ip address 124.30.0.1 255.255.255.0
routeur_105(config-if)#description acces WAN

Assignation d'une adresse IP et d'un commentaire sur 2 interfaces ethernet. Un commentaire (description) est limité à 80 caractères, espaces compris.

routeur_105(config)#ip route 0.0.0.0 0.0.0.0 124.30.0.254

Attribution d'une route par défaut : Désignation de l'interface (dans le même réseau que notre FastEthernet0/1) vers laquelle envoyer les paquets en direction de tous les réseaux inconnus.

Gestion des utilisateurs

router_105(config)#enable secret XXXXXXXX
router_105(config)#no enable password
router_105(config)#security password min-length 12
router_105(config)#security authentification failure rate 3 log
router_105(config)#username toto privilege 15 secret mot-de-passe

L'accès au mode enable est soumis à mot de passe, XXXXXXXX en l'occurence. Ce mot de passe apparait en clair lors de son écriture, mais plus tard la configuration ne montrera que son empreinte MD5 avec sel de 3 octets, le mot de passe de type password (codage faible de type 7) est désactivé, et les mots de passe crées ultérieurement réclameront 12 caractères minimum. Au bout de 3 échec d'authentification, archivage d'un log.
Nota 1 : L'utilisateur TOTO se connectant directement en mode privilégié (privilege 15), il n'aura pas besoin de saisir le mot de passe enable.
privilege 0 = utilisateur désactivé, privilege 1 (prompt >) = utilisateur de type EXEC, privilege 15 (prompt #) = utilisateur de type privilégié.
Nota 2 : Même si la commande enable secret a préséance sur la commande enable password, il est plus prudent de désactiver les mots de passe type password (no enable password).

router_105(config)#line con 0
router_105(config-line)#login
router_105(config-line)#password mot-de_passe   (protéger l'accès au port console par un mot de passe)
router_105(config-line)#transport input none   (pas d'accès Telnet sur le port console au moyen d'un MODEM série)
router_105(config-line)#exec-timeout 3 30  (déconnexion au bout de 3 minutes et 30 secondes d'inactivité)

Protection du port Console.

router_105(config)#line aux 0
router_105(config-line)#login
router_105(config-line)#no password   
router_105(config-line)#no exec   (pas d'accès à l'interpréteur de commandes)
router_105(config-line)#exec-timeout 0 1  (au cas ou déconnexion au bout d'une seconde)

Après le port Console, protection du port auxiliaire.

router_105(config)#line vty 0 15
router_105(config-line)#login local  (connexion en utilisant un compte local)
router_105(config-line)#exec-timeout 3 30

Pour les 16 VTY disponibles, authentification locale et déconnexion au bout de 3 minutes et 30 secondes d'inactivité.

router_105(config)#login on-success log 
router_105(config)#login on-success trap
router_105(config)#login delay 2            (2 est une valeur en secondes)
router_105(config)#login on-failure every 2           (2 est le nombre d'échecs)
router_105(config)#no service password recovery

Diverses options qui peuvent ne pas exister ou avoir une syntaxe différente en fonction du routeur et de son IOS.

Désactivation des services inutiles ou dangereux

routeur_105(config)#no ip domain-lookup

Quand le routeur ne connait pas une chaine de caractère saisie, il envoie une requete DNS pour récupérer l'adresse IP associée à ce qu'il pense être un DN, dans le but de lancer une connexion Telnet vers cet équipement supposé : Opération longue et inutile que l'on désactive.

routeur_105(config)#no service pad 

Désactivation de l'assembleur/désassembleur de paquets X25.

routeur_105(config)#no mop enable

Protocole "Maintenance Operation Protocol" de DEC (administration à distance), inutile et trop ouvert.

routeur_105(config)#no service tcp-small-servers
routeur_105(config)#no service udp-small-servers
routeur_105(config)#no service finger    (variante sur certains IOS "no ip finger")

Ces 3 commandes n'apparaitront pas dans la configuration : elles désactivent certains petits services comme : chargen, echo, discard, daytime, finger.

routeur_105(config)#no service config

Désactive les requêtes broadcast sur tous les ports afin de télécharger automatiquement par TFTP un fichier de configuration.

routeur_105(config)#no ip http server
routeur_105(config)#no ip http secure-server

Désactive l'interface web HTTP et HTTPS (inutile sur les routeurs).

routeur_105(config)#no ip bootp server
routeur_105(config)#no service dhcp

Désactive les fonctions serveur BootStrap et DHCP du routeur.

routeur_105(config)#no cdp run

Désactive le Cisco Discovery Protocol bien trop bavard.

routeur_105(config)#no ip source-route

Empêche la demande de routage par l'adresse source.

routeur_105(config)#no logging console

Bloque l'envoi des messages syslog vers la console (provoque une interruption CPU à chaque message)

Activation des services utiles

routeur_105(config)#tcp-keepalives-in

Prévient les sessions orpheline suite à une déconnexion brutale provoquant le blocage ou l'occupation des ports VTY du routeur.

routeur_105(config)#tcp-keepalives-out 

Complément de la commande précédente.

routeur_105(config)#service password-encryption

Par défaut, tous les mots de passe apparaissent en clair (sauf SECRET dont on ne voit que l'empreinte MD5) dans les fichiers de configuration, activer cette commande masque tous les autres mot de passe, malheureusement par un codage de type 7 (propriétaire Cisco) réversible et donc très faible. Il est conseillé de toute façon de ne pas utiliser de mots de passe de type PASSWORD.

router_105(config)#ip cef

Activation de l'optimisation de routage Cisco Express Forwarding : Pour une connexion donnée, seul le premier paquet est routé, les suivants sont directement commutés vers l'interface de sortie. Le routage étant sensiblement plus lent que la commutation, cette commande améliore les performances d'acheminement des paquets.

router_105(config)#scheduler process-watchdog terminate

Termine les processus sans réponse (zombies ou processus en boucle infinie) du routeur.

Protection juridique et avertissements

router_105(config)#banner login % Attention !! Vous tentez d'acceder à un système .....%
router_105(config)#banner motd % Attention !! Vous tentez d'acceder à un système .....%
router_105(config)#banner exec % Attention !! Equipement en production .....%

Les divers messages qui apparaitront à la connexion à une VTY ou pour n'importe quelle session. Le texte à afficher doit être encadré par le signe %.

Configuration SSH

router_105(config)#ip domain-name yyyyyyyyy
router_105(config)#no aaa new model
router_105(config)#crypto key generate rsa modulus 2048

yyyyyyyyy est à remplacer par votre nom de domaine SSH. aaa = Authentication Autorization Accounting. La commande crypto key-generate rsa attend une longueur pour la paire de clés générée (valeur comprise entre 360 et 2048 bits, 512 par défaut). Choisir à minima 1024 , mais plus raisonnablement 1536 ou 2048 bits. La paire de clés RSA sera crée en quelques dizaines de secondes en fonction de La longueur des clés et de la puissance du CPU. IOS en version 15 et supérieur permet aussi la création de clés ECDSA.

router_105(config)#ip ssh authentication-retries 3
router_105(config)#ip ssh time-out 120
router_105(config)#ip ssh version 2

3 échecs de mot de passe provoquent une déconnexion SSH. Déconnexion automatique au bout de 120 secondes d'inactivité, refus des tentatives de connexion SSH en v1, seule la v2 est autorisée. Les routeurs série 2600 uniquement compatibles SSHv1 n'acceptent pas la dernière commande.

router_105(config)#line vty 0 4
router_105(config-line)#transport input ssh
router_105(config-line)#transport output none
router_105(config-line)#login local
router_105(config-line)#line vty 5 15
router_105(config-line)#transport input ssh
router_105(config-line)#transport output none
router_105(config-line)#login local

Tous les terminaux (de 0 à 15) ne sont plus accessibles par Telnet : SSh obligatoire. Output none = l'équipement ne peut pas initier de connexion SSH (client désactivé). Utilisation d'un compte local (l'utilisateur TOTO par exemple crée ci-dessus) et non pas authentification par serveur TACACS ou RADIUS.
Nota : La longueur de clé RSA n'apparaît pas dans la configuration.

Configuration SCP

SCP (copie de fichiers encapsulée par SSHv2) a pour but de remplacer TFTP et FTP pour la sauvegarde / restauration de fichiers de configuration ou d'IOS.
Tout matériel Cisco supportant SSHv2 (IOS de type K9 indispensable) et sur lequel a été généré une paire de clés RSA est de fait client SCP et peut donc se connecter à un serveur SCP (ici 192.168.1.1) :

router_105#copy startup-config scp://compte@192.168.1.1

Pour les équipements acceptant SFTP la commande est identique :

router_105#copy startup-config sftp://compte@192.168.1.1

Attention : La commande précédente ssh output none n'autorise pas les connexions sortantes SSH et donc bloque client SSH, SFTP et SCP.
Suivant le type d'équipement Cisco et sa version d'IOS, la commande peut être complétée pour spécifier le dossier dans lequel sauvegarder le fichier ; malheureusement les syntaxes possibles sont nombreuses (et parfois boguées sur les versions antérieures à IOS 12.2). Exemples de syntaxes suivant les versions :

router_105#copy startup-config scp://compte@192.168.1.1
router_105#copy startup-config scp://compte@192.168.1.1/
router_105#copy startup-config scp://compte@192.168.1.1/nom-du-fichier
router_105#copy startup-config scp://compte@192.168.1.1/chemin/nom-du-fichier
router_105#copy startup-config scp://compte@192.168.1.1//chemin/nom-du-fichier
router_105#copy startup-config scp://compte@192.168.1.1:chemin/nom-du-fichier

Contrairement au serveur SSH pour lequel c'est facultatif, activer le serveur SCP nécessite la mise en oeuvre du AAA NEW MODEL.

router_105(config)#aaa new-model
router_105(config)#aaa authentication login default local
router_105(config)#aaa authorization exec default local
router_105(config)#ip scp server enable
router_105#write

Un client SCP peut dès à présent se connecter au serveur SCP du routeur Cisco pour y envoyer des fichiers (configuration, IOS) ou sauvegarder ceux qui y sont présents (exemple de commandes à partir d'un client Unix/Linux) :

compte@192.168.1.1:~$ scp /chemin/routeur_105-confg login@routeur_105:nvram:startup-config
compte@192.168.1.1:~$ scp /chemin/c2800-ipbasek9-123.6-mz login@routeur_105:flash:c2800-ipbasek9-123.6-mz
compte@192.168.1.1:~$ scp login@routeur_105:nvram:startup-config /chemin/routeur_105-confg

Envoi du fichier de configuration, sauvegarde de l'IOS puis du fichier de configuration.
Pour surveiller les connexions SCP en cours ou déboguer les tentatives de connexions :

router_105#debug ip scp     (à annuler par undebug ip scp)

Nota : SCP a été développé pour SSHv2 mais peut éventuellement fonctionner sur SSHv1. 99% des implémentations serveurs et clients SCP (toutes plateformes et systèmes confondus) utilisent par défaut SSHv2 mais autorisent l'encapsulation SSHv1 pour SCP à condition de modifier un fichier de configuration ou d'ajouter l'argument adéquat à une commande. Les IOS Cisco font partie du 1% restant et ne sont pas capables d'autoriser SCP sur SSHv1. De fait, tous les équipements non compatibles SSHv2 (les routeurs série C2600 par exemple) ne peuvent être ni clients ni serveurs SCP.

Authentification par clé publique

IOS version 15 accepte l'authentification par clé publique RSA :

router_105#conf t
router_105(config)#ip ssh pubkey-chain
router_105(conf-ssh-pubkey)#username toto
router_105(conf-ssh-pubkey-user)#key-string
router_105(conf-ssh-pubkey-data)#$AAQEA6jYlf9MBs86kWov+ZOUDK/n0ExQIRj1zfWA/YcnOx2VS  
$XsxM7SqNkRSQOR7y7HBMoxTHV7o+R/uS6A8/mF0A3P/ScRjct  
$JrNGACGaFy1njD9PrrvrU4o4hx6XDr6xVXF4sP4OCSXIn+Cp8  
$bCnZLmv908AeDb1Ac4nPdsn1OhCPIg6fxZjB7DvAMB8Dbr+7Y  
$apEbGE94zuIqnB161HsMd6JCWbQ== toto@tata.domaine.org     
router_105(conf-ssh-pubkey-data)#exit
router_105(conf-ssh-pubkey-user)#exit

Dépot de la clé publique RSA associée à l'utilisateur toto qui doit bien sûr exister. Seule l'empreinte de la clé apparait dans la configuration :

router_105#sh run | begin ip ssh
ip ssh pubkey-chain
 username toto
  key-hash ssh-rsa C20B739F2695D68A0C591C6A1178DCB5 toto@tata.domaine.org

Routage

Processus utilisé pour transmettre des paquets reçus vers un réseau de destination. Même si un routeur peut héberger des services annexes (serveur DHCP, filtrage, relais NTP) le routage est sa fonction première.
En général un routeur possède plusieurs interfaces (sauf cas spécial des routeurs "borgnes"), chacune d'entre elle appartenant à un réseau différent. Les informations de routage connues du routeur permettent de savoir vers laquelle de ses interfaces transférer les paquets reçus par une interface quelconque. Un routeur cloisonne les différents domaines de diffusion et sauf exception ne retransmet pas les broadcast reçus.
Les informations de routage se présentent sous la forme d'entrées comprenant un réseau de destination (avec son masque), la désignation du prochain relais (ou bond) qui nous rapproche de ce réseau, la manière dont a été apprise cette information, d'un coût (ou métrique) et d'une distance administrative. Une entrée s'appelle une "route" et l'ensemble des entrées d'un routeur est sa "table de routage".
Un routeur met en oeuvre trois techniques pour apprendre ses routes et construire sa table de routage :

  • Par connexion directe : Chacune de ses interfaces étant dans un réseau (puisque elle sont définies par une adresse IP et un masque de sous-réseau), il connait de fait, automatiquement, les différents réseaux qui lui sont adjacents  : Ce sont les routes directement connectées.
  • Par apprentissage statique : Pour atteindre les réseaux au delà de ses réseaux adjacents, un administrateur peut au moyen d'une commande (ip route) indiquer au routeur vers où envoyer les paquets reçus en désignant le prochain bond. L'ensemble de ces commandes représente les routes statiques.
  • Par apprentissage dynamique : En activant un ou des protocoles de routage, un routeur va pouvoir communiquer l'ensemble des routes qu'il connait (connectées, statiques et dynamiques) à ses routeurs adjacents afin de compléter leurs tables de routage et en même temps au moyen des mêmes protocoles recevoir les annonces de routes de ses voisins afin de compléter ou mettre à jour sa propre table de routage.

Par défaut le routage n'est pas activé sur un routeur Cisco : Une commande saisie en mode configuration terminal telle que ip route ...... (statique) ou router [protocole] .... (dynamique) permet la construction d'une table de routage et lance le processus de routage.
La distance administrative d'une route permet de définir la fiabilité de la technique utilisée pour apprendre cette route et d'évaluer la "confiance" accordée à cette méthode. Plus une route à une distance administrative faible, plus les informations de la route (réseau destination, métrique) seront considérées comme fiables, digne de confiance. La valeur des distances administratives varie de 0 à 255 ; en général une route connectée à une valeur de 0, une route statique une valeur de 1 et la valeur d'une route dynamique dépend du protocole de routage qui a servi à la propager. Au sein d'un équipement, les valeurs administratives sont définies par Cisco mais peuvent être modifiées.
Un routeur qui ne connait pas un réseau (aucun apprentissage par route connectée, statique ou dynamique) ne peut renvoyer les paquets reçus à destination de ce réseau : Les paquets sont alors détruits et un message ICMP de type 3 (destination inaccessible) et de code 6 (réseau inconnu) est envoyé à l'emetteur.
Non seulement un routeur doit trouver un chemin vers un réseau, mais en plus il doit sélectionner le meilleur chemin en cas de multiples possibilités. Le meilleur chemin est celui qui est le moins coûteux, et ce coût (ou métrique) doit être connu de l'administrateur qui positionne les routes statiques ou calculé par les protocoles de routage.

Routage statique

Exemple de routes statiques paramétrées sur un routeur :

router_105(config)#ip route 10.55.19.0 255.255.255.0 166.22.39.44 [distance administrative]

Le paquets à destination du réseau 10.55.19.0/24 doivent être renvoyés vers le prochain bond 166.22.39.44. 166.22.39.44 est une adresse qui doit être directement joignable par une des interfaces du routeur. Une valeur de distance administrative peut être saisie, sinon la valeur définie sur le routeur pour les routes statiques (1 par défaut) s'appliquera.
Rappel : tant qu'une commande ip route n'est pas saisie (ou un protocole n'est pas exécuté), le routage est inactif.

router_105(config)#ip route 10.55.22.0 255.255.255.0 166.22.39.44

Une autre route vers un autre réseau mais qui doit être envoyée vers le même "bond" ou "passerelle" que la route précédente.

router_105(config)#ip route 10.55.0.0 255.255.0.0 124.16.33.101

Un réseau de taille plus imposante (/16) est dirigé vers une passerelle différente. Problème : Les 2 routes précédentes désignent des réseaux (10.55.19.0/24 et 10.55.22.0/24) qui appartiennent à 10.55.0.0/16. En cas de litige de ce type, le routeur choisira toujours la route qui est annoncée avec le masque le plus grand, c'est à dire le plus précis. Ainsi une route avec un masque en /27 est plus précise qu'une route avec un masque en /24, elle même plus précise qu'une route avec un masque en /20, elle même plus précise qu'une route avec un masque en /16...
L'agrégat de route est possible (et même conseillé) afin de réduire la taille des tables de routage, car la taille des tables a un impact direct sur les performances des routeurs.
Ainsi, en cas de saisie des 4 routes suivantes désignant 4 réseaux à l'adressage IP adjacent et qu'il faut transmettre vers la même passerelle :

router_105(config)#ip route 10.55.0.0 255.255.255.0 124.16.33.101
router_105(config)#ip route 10.55.1.0 255.255.255.0 124.16.33.101
router_105(config)#ip route 10.55.2.0 255.255.255.0 124.16.33.101
router_105(config)#ip route 10.55.3.0 255.255.255.0 124.16.33.101

Il est intéressant de fusionner les quatre routes en une seule :

router_105(config)#ip route 10.55.0.0 255.255.252.0 124.16.33.101

La route particulière 0.0.0.0 0.0.0.0 désigne "tous les autres réseaux". Il est ainsi possible (mais pas obligatoire) de désigner une passerelle vers laquelle envoyer tous les réseaux inconnus dans sa table de routage. Cette route est désignée comme la route par défaut, et comme elle a le masque le moins précis possible (0.0.0.0 soit /0) elle sera lue en tout dernier :

router_105(config)#ip route 0.0.0.0 0.0.0.0 42.7.135.77

Renvoyer les paquets à destination de tous les réseaux inconnus vers la passerelle 42.7.135.77
Les routeurs qui se trouvent en bout de chaîne, dernier maillon avant un réseau local en cul-de-sac possèdent dans la plupart des cas une route par défaut. C'est le cas des box que les FAI mettent à disposition de leurs clients "grand public" (particuliers, PME...).
Par contre dans le cadre d'un réseau maillé parfaitement maîtrisé, l'emploi de routes par défaut pouvant propager du trafic inutile voire dangereux est à déconseiller.

Routage dynamique

Système de mises à jour des tables de routages de routeurs voisins en mettant en oeuvre un protocole de routage. Plusieurs protocoles peuvent être exécutés et leurs résultats peuvent être mixés.
Un routeur sur lequel un protocole de routage est activé prend connaissance des annonces (réalisées avec le même protocole) de ses routeurs voisins et met à jour sa table de routage en conséquence : Insertion des meilleures routes, mise à jour des informations sur les routes déjà connues (nouvelle passerelle, distance administrative différente...), suppression des routes qui ne sont plus valides...
Chaque fois que la topologie d'un réseau est modifiée (passerelle injoignable, apparition d'un nouveau routeur, dégradation d'un lien...) la base de connaissance du réseau doit être modifié ; Lorsque l'ensemble des routeurs d'un domaine de routage possède les mêmes connaissances, on dit que le réseau a convergé. Une convergence rapide est a privilégier afin de réduire la fenêtre de temps pendant laquelle certains routeurs peuvent prendre des décisions de routage fausses (réseau injoignable car mauvais chemin) ou non optimales (réseau joignable mais par le chemin n'ayant pas le moindre coût, un autre chemin étant meilleur).
Il existe deux grandes familles de protocoles de routage :

  • Protocoles de routage externe : Utilisés pour échanger des routes entre des routeurs gérés par des entités adminsitratives différentes (entre opérateurs concurents, entre opérateurs et FAI, entre FAI concurents, entre FAI et entreprises ...). Exemple : BGP. Dans le vocable BGP, la notion d'AS (Système Autonome représenté par un numéro unique) désigne l'ensemble des réseaux appartenant à une entité administrative unique et bénéficiant d'une stratégie de routage commune. BGP est donc utilisé entre AS différents.
  • Protocoles de routage interne : Utilisés pour partager les routes de routeurs gérés par la même entité adminsitrative (un opérateur, un FAI, une entreprise). Exemple de protocoles internes : RIP1, RIP2, IGRP, EIGRP, OSPF, IS-IS. Ces protocoles sont utilisés à l'intérieur des systèmes autonomes, ou sur de petits réseaux isolés.
  • Un routeur BGP peut être soit un "routeur de bordure" faisant le lien entre l'intérieur d'une AS et des AS voisins, soit purement un routeur Internet, ne reliant que des AS entre eux. Les routeurs type Internet appartiennent en général aux grands opérateurs régionaux, nationaux ou internationaux. La répartition mondiale des routeurs BGP est d'environ 60 % de routeurs de bordures et 40 % de routeurs Internet.

Pour calculer le coût de chaque route, les protocoles (internes et externes) utilisent des méthodes de calcul différentes qui peuvent être classées dans 2 catégories :

  • algorithmes de calcul de vecteur de distance : Détermination de la direction (vecteur) vers tous les points intermédiaires distants.
    • Chaque routeur reçoit l'intégralité de la table de routage connue par ses voisins immédiats
    • Cette transmission est réalisée de manière régulière.
    • L'algorithme le plus utilisé est celui de Bellman-Ford.
    • Les routeurs n'ont pas connaissance de l'intégralité de la topologie de leur domaine.
    • Les protocoles RIPv1, RIPv2, IGRP, EIGRP (amélioration du calcul), BGP utilisent le calcul de vecteur de distance.
  • algorithmes de calcul d'état des liens : Modélisation de la topologie du réseau, appelée calcul du chemin le plus court.
    • Transmission de paquets LSA (Link-State Advertisements) échangés entre routeurs.
    • Un nouveau paquet n'est envoyé que si la topologie change.
    • Fait appel à un calcul complexe dès la réception d'un paquet LSA qui implique la construction d'une base de données interne recréant la topologie à partir des informations connues (ancienne base modifiée par le nouveau paquet), application de l'algorithme pour en déduire une arborescence type, choix des meilleures routes dans l'arborescence, et enfin mise à jour de la table de routage en fonction de ces choix.
    • L'algorithme utilisé est celui de Dijkstra (ou SPF).
    • La construction de la base topologie, l'application de l'algorithme créant l'arbre, le choix dans l'arbre et enfin la mise à jour de la table est un processus gourmand en CPU et mémoire vive. Activer un algorithme de calcul d'état des liens sur un routeur peu puissant possèdant de nombreuses routes et activant d'autres services (DHCP, filtrage) est fortement déconseillé.
    • Les protocoles IS-IS et OSPF utilisent le calcul d'état des liens.
  • Des calculs réalisés par les algorithmes à vecteur de distance et état des liens découlent une valeur pour chaque route annoncée : Cette valeur s'appelle le "coût" ou "métrique" de la route concernée.


L'activation d'un protocole de routage se fait au moyen de la commande :

router_105(config)#router {protocole} {option}
router_105(config-router)#network ......       désignation des routes annoncées

Mise en oeuvre de protocoles de routage - Configurations types

  • RIPv2 RFC 2453 : Les annonces RIPv2 sont propagées sur le groupe Multicast dont l'adresse réservée est 224.0.0.9
router_105(config)#router rip
router_105(config-router)#version 2 
router_105(config-router)#network 136.16.25.32/27
router_105(config-router)#network 17.22.99.0/24
router_105(config-router)#network 33.64.0.0/16
router_105(config-router)#network 33.65.0.0/16
router_105(config-router)#redistribute connected    les routes connectées sont aussi annoncées
router_105(config-router)#redistribute static      les routes statiques sont aussi annoncées
router_105(config-router)#{no} auto-summary    agrégat automatique des routes ou pas

La commande redistribute static redistribue toutes les routes statiques, y compris la route par défaut si elle existe. La commande passive-interface permet de désigner les interfaces du routeur qui n'annonceront pas de routes à leurs vis-à-vis. La commande distribute-list peut être appliquée sur une interface afin de filtrer les routes à annoncer en fonction d'une ACL qui devra avoir été créee.
Au niveau d'une interface l'option poisoned (poison reverse) permet d'annoncer de suite un problème de route sans attendre la temporisation par défaut ; la commande split horizon permet de ne pas annoncer une route sur l'interface par laquelle le routeur en a reçu l'annonce.

router_105(config-if)#ip rip split-horizon poisoned

La commande ip rip authentication mode md5 permet après avoir généré une clé sur 2 routeurs adjacents d'authentifier les annonces RIPv2 entre ces 2 routeurs. La commande ip rip authentication mode md5 est à appliquer au niveau des interfaces en vis à vis avec les routeurs concernés par l'authentification.
Création de la clé :

router_105(config)#key chain CLE-RIP2-05
router_105(config)#key 1
router_105(config)#key-string ma_clé_secrète_complexe
router_105(config)#exit

Application de la clé au niveau d'une interface :

router_105(config)#int fast0/1
router_105(config-if)#ip rip authentication mode md5
router_105(config-if)#ip rip authentication key-chain CLE-RIP2-05
router_105(config-if)#exit

Bien sûr une clé composée de la même chaîne de caractère doit être créee sur l'interface en vis à vis du routeur distant avec qui nous voulons authentifier les annonces RIPv2.

  • OSPFv2 RFC 2328 pour IPv4 ou RFC 2740 pour IPv6 : Les annonces OSPF sont propagées sur les groupes Multicast dont les adresses réservées sont 224.0.0.5 et 224.0.0.6
router_105(config)#router ospf 1      chaque instance OPSF est identifiée par un numéro
router_105(config-router)#network 106.140.9.0 0.255.255.255 area 0    
router_105(config-router)#network 82.66.0.0 0.0.255.255 area 0
router_105(config-router)#network 82.66.13.0 0.255.255.255 area 5
router_105(config-router)#exit

NOTA : La syntaxe OSPF Cisco nécessite d'écrire les masques de sous-réseau au format wildcard (complément à 255).
Pour visualiser la base d'OSPF dont est déduite la topologie des routes :

router_105#show ip ospf
router_105#show ip ospf database
router_105#show ip ospf database router
router_105#show ip ospf database router w.x.y.z      désignation du routeur dont on veut voir la base
router_105#show ip ospf database network

La déclaration d'une aire 0 (area 0 appelée aussi aire Backbone) est obligatoire pour toute instance OSPF . Le temps de convergence d'un réseau dépend de la latence entre chaque lien mais surtout du temps de calcul sur chaque routeur (rappel : OSPF est exigeant en temps CPU est en empreinte mémoire) ; or le temps de calcul de SPF grandit factoriellement avec le nombre de routeurs dans l'aire : il est très important à partir d'une quarantaine de routeurs et rédhibitoire au delà de la cinquantaine. Il ne faut donc pas hésiter à découper un grand réseau de routeurs en différentes aires OSPF, sachant que l'aire 0 est obligatoire, et que 50 routeurs par aire est la limite à ne pas dépasser.
Contrairement à EIGRP, un routeur Cisco ne sait pas agréger automatiquement (auto-summary) les routes annoncées par OSPF. Si agrégat des routes OSPF il y a c'est qu'un administrateur l'a configuré manuellement.
Comme avec RIPv2, la RFC 2328 permet l'utilisation de l'authentification mutuelle des annonces OSPF entre routeurs en ajoutant en fin des annonces un condensat de l'annonce couplé à un secret partagé (Cisco n'autorise que MD5 pour la génération du condensat).

Vérification des routes - Lecture des tables de routage

Afficher la table de routage :

router_105#show ip route   

Voir une route en particulier :

router_105#show ip route {adresse}

Visualiser l'état des protocoles de routage dynamique :

router_105#show ip protocols

Afficher les messages de débogage :

router_105#debug ip {protocole}          par exemple : debug ip rip

Effacer les routes apprises dynamiquement :

router_105#clear ip route *

Configuration avancée du routeur

Sécurisation des interfaces

router_105(config)#ip ssh source-interface FastEthernet0/0
router_105(config)#ip tftp source-interface FastEthernet0/0

Choix de l'interface source en cas d'utilisation des clients SSH ou TFTP.

router_105(config)#interface FastEthernet 0/1
router_105(config-if)#no ip proxy-arp
router_105(config-if)#no ip redirects
router_105(config-if)#no ip unreachables
router_105(config-if)#ip accouting access-violations
router_105(config-if)#no ip mask-reply

Exemple de sécurisation de l'interface FastEthernet 0/1 : ne pas répondre aux requêtes ARP ne le concernant pas, pas de messages ICMP "redirects" envoyés pour découvrir des routes, désactive l'envoi des messages ICMP de type 'protocol-unreachable et host-unreachable, enregistrement des violations d'accès sur l'interface, et désactiver l'envoi de réponses avec le masque réseau.

routeur_105(config-if)#no ip directed-broadcast

Protège des broadcast dirigés (Broadcast transformés en Unicast pour être routés) vers une interface mais qui cible un sous réseau auquel n'appartient pas cette interface : attaques de type SMURF ou FRAGGLE. Attention ! Cette commande n'apparait pas dans la configuration. Si on doit laisser passer des broadcast UDP sur cette interface (par la commande ip helper-address 125.12.15.46 par exemple car 125.12.15.46 est un serveur DNS ou DHCP distant qui doit pouvoir être contacté par des machines en broadcast), on ne peut pas activer cette commande, il faudra donc limiter l'impact ders directed-broadcast par une ACL par exemple.

routeur_105(config-if)#ip access-group regle_100 in

Enfin pour sécuriser une interface, on peut y appliquer une ACL prédédemment créee.

NTP

Voir cet article pour plus de détails sur les architectures NTP.

  • Désignation du serveur NTP qui synchronisera notre "router_105", en utilisant quelques options :
router_105(config)#ntp authentication-key 1 md5 XXXXXXXX
router_105(config)#ntp authentication-key 2 md5 YYYYYYYY
router_105(config)#ntp authenticate
router_105(config)#ntp server 140.175.12.26 source FastEthernet 0/1 trusted key 1

Le routeur se synchronisera sur un serveur ntp qu'il contacte uniquement par l'interface FastEthernet 0/1, création de 2 clés pour l'authentification des messages et choix de la première clé. Plusieurs serveurs NTP peuvent être configurés et c'est préférable ; même si un des serveurs peut être privilégié (au moyen de l'option prefer) ce n'est pas souhaitable : Il est préférable de laisser notre équipement recevoir les messages de plusieurs serveurs NTP et de choisir lui même celui qui offre la meilleure précision (celui qui détient les valeurs de délai et de dispersion les plus basses).
Un routeur ainsi synchronisé peut diffuser à son tour l'heure, en devenant serveur NTP "niveau de strate de son serveur + 1".

router_105(config)#ntp master

Notre routeur est maintenant lui aussi serveur NTP. Cette commande fonctionne aussi sur un routeur qui n'a pas d'horloge de référence. Dans ce cas, le routeur se positionne par défaut en strate 8 sauf si une option de la commande ntp master définit un autre niveau de strate, entre 1 et 15.

  • Sécuriser NTP : L'authentification est nécessaire mais pas suffisante, l'utilisation d'ACL permet de border le comportement trop "ouvert" de NTP. La commande ntp access-group permet de préciser dans quel sens fonctionne NTP, comment et avec qui.
Router(config)#access-list 50 permit a.b.c.d m.m.m.m
Router(config)#access-list 50 permit e.f.g.h m.m.m.m
Router(config)#access-list 50 deny any
Router(config)#ntp access-group 50 type <valeur>

Seules les adresses correspondant à l'ACL 50 peuvent interagir en NTP avec notre routeur. type peut prendre les valeurs peer, query-only, serve et serve-only.
peer Le type le moins restrictif : Le routeur répond aux requêtes de synchronisation , aux requêtes de contrôle NTP, et lui même peut se synchroniser sur un serveur. Nota : Les requêtes de contrôle NTP sont des mécanismes employés par d'autres protocoles (SNMP par exemple) pour comparer la synchronisation des horloges des différents équipements concernés.
serve Un peu restrictif : Notre équipement peut se synchroniser vers un serveur NTP, et utiliser les requêtes de contrôle NTP.
query-only Est plus restrictif : Seules sont autorisées les requêtes de contrôle NTP ; pas de requêtes de synchronisation vers cet équipement, et lui même ne se synchronise pas.
serve-only Le plus restrictif : Notre équipement peut se synchroniser vers un serveur NTP, c'est tout.

Router(config)#ntp source fastEthernet 0/1

désignation de l'interface autorisée à emettre/recevoir des messages NTP.

Router(config)#ntp server 125.25.25.2 version 3 source fastEthernet 0/1

La même commande plus complête : L'équipement 125.25.25.2 est maintenant autorisé à interagir avec nous en NTP version 3 (valeur possible 1 à 4 sur des IOS récents, 1 à 3 sur de vieux IOS)

  • Contrôler NTP : Les commandes show clock, show ntp status, show ntp association et show ntp association detail fourniront tout ce qu'il est nécessaire pour contrôler l'état de NTP sur un équipement Cisco. Le comportement de NTP peut être observé en temps réel au moyen d'un debug.

Pour rappel NTP diffuse l'heure "brûte" UTC +0, c'est à l'IOS ensuite de modifier cet horodatage NTP en fonction du fuseau horaire défini et de l'application ou pas de l'heure d'été.

LOGS

Par défaut un routeur Cisco envoie ses logs vers le port Console. Pour déporter les logs vers les VTY actives :

router_105#terminal monitor

Limitation des buffers en Octets réservés aux évènements.

router_105(config)#logging buffered 4096 debugging

Choix de l'horodatage et non pas du temps uptime par défaut pour les logs et les debugs. Cet horodatage est composé de l'heure zoulou ajustée par les informations du fuseau horaire.

router_105(config)#service timestamps debug datetime localtime show-timezone
router_105(config)#service timestamps log datetime localtime show-timezone

Numérotation des entrées dans les jounaux système.

router_105(config)#service sequence-numbers

Désignation de 144.15.26.43 en tant que serveur SYSLOG vers lequel seront envoyés les messages de sévérité minimum errors :

router_105(config)#logging 144.15.26.43
router_105(config)#logging trap errors

Il y a 8 niveaux de sévérité du moins grave au plus grave :7=debugging, 6=informational, 5=notifications, 4=warnings, 3=errors, 2=critical, 1=alerts, 0=emergencies. Choisir le niveau 3=errors comme dans cet exemple, permet l'envoi des messages SYSLOG de sévérité 3,2,1 et 0.

SNMP

Avant d'utiliser SNMP, consulter cet article sur SNMP et cet article sur SNMP chez Cisco. Pour exemple voici une configuration type SNMP v3 :

#conf t
(Config)#snmp-server enginId local numéro_engineid    (numéro_engineid = au minimum 10 chiffres) 
(Config)#snmp-server group nom_du_groupe v3 auth  
(Config)#snmp-server user nom_de_l’utilisateur group nom_du_groupe v3 auth sha [ou md5] mon_mot_de_passe access n°acl 
(Config)#snmp-server enable traps 
(Config)#snmp-server host 155.16.9.123 nom_de_l'utilisateur      (155.16.9.123 est la station de gestion SNMP)

Dans ce cas une ACL devra donc préciser qui est le serveur SNMP. Par exemple :

(Config)#access-list 3 permit host 155.16.9.123                (deny any final implicite)

En plus d'une authentification SNMPv3 peut chiffrer ses messages au moyen de DES (voire d'AES). Une clé secrète devra être connue du routeur et du serveur SNMP.
Mettre en place SNMPv3 ne supprime pas les communautés des versions précédentes, qu'il faut donc effacer manuellement :

(Config)#no snmp-server community public RO

Faire de même avec toutes les autres communautés.

Les ACL Cisco

Les possibilités des ACL (Listes de Contrôle d'Accès) et leur syntaxe dépendent des versions d'IOS Utilisées. Ne sont abordées ici que les ACL des IOS 12.x et supérieur.
Une liste de contrôle d'accès est un filtre conditionnel à appliquer sur un flux réseau : Si tout ou partie du trafic observé au niveau d'une interface concorde avec les critères définis (adresse IP source, adresse IP destination, protocoles de couches supérieures, numéros de ports de ces protocoles, tranches horaires, sens de la transmission in/out) une action sera appliquée sur ce flux. les actions types sont autorisation, refus, application d'un traitement particulier (encapsulation IPSec), marquage du champ DSCP...
Pour qu'une ACL soit active il faut d'abord la créer (conditions et actions) puis l'appliquer sur une ou des interfaces. La structure générale de création d'une ACL (standard) est :

(config)#access-list numéro_d_ACL_ou_nom {permit|deny} instructions

Affectation de cette ACL à une interface :

(config-if)#(protocole) access-group numéro_d_ACL_ou_nom {in|out}

Notas : Pour une ACL appliquée à un terminal virtuel (VTY), la syntaxe est access-class au lieu d'access-group

(config-line)#access-class numéro_d_ACL_ou_nom {in|out}

Une même ACL peut être appliquée sur plusieurs interfaces. Par contre, chaque interface ne peut recevoir qu'une seule ACL par protocole et par direction. Par exemple on ne peut pas affecter plusieurs ACL à la même interface pour le trafic IP sortant. Par contre on peut en affecter deux pour le trafic IP, une pour le trafic entrant, l'autre pour le trafic sortant.
Dès qu'une ACL est appliquée à une interface, chaque paquet entrant ou sortant par cette interface (en fonction de la condition in ou out) est examiné par l'IOS qui en extrait un certain nombre d'informations (adresse IP source, destination, protocoles...) et les compare à la liste d'instructions de l'ACL, dans l'ordre dans lequel les instructions ont été crées (c'est pourquoi l'ordre des règles d'une ACL est important). Si le paquet satisfait à une condition, il est autorisé ou refusé (suivant l'instruction permit ou deny) et les autres instructions ne sont pas vérifiées. Si un paquet ne correspond à aucune instruction dans l'ACL, il est rejeté à cause de l'instruction implicite deny any ("refuser tout le reste") à la fin de chaque ACL.
Il existe plusieurs types d'ACL : Les ACLs standards identifiées par un numéro, qui ne filtrent que les adresses sources, les ACLs étendues identifiées par un numéro qui filtrent adressent source, destination et protocoles supérieurs, et enfin les ACLs nommées identifiées non par un numéro mais par un nom et qui peuvent être de type standard ou étendu. Le nommage n'a qu'un seul but : Faciliter la compréhension et connaître la finalité de l'ACL. "ACL web_stagiaires" est plus parlant que "ACL 102". Seuls les IOS 11.2 et plus récents sont compatibles avec les ACLs nommées.
Les numéros d'ACL réservés sont : 1 à 99 ACL IP standards, 100 à 199 ACL IP étendues, 600 à 699 ACL AppleTalk, 800 à 899 ACL IPX standards, 900 à 999 ACL IPX étendues, 1000 à 1099 ACL IPX Service Advertising Protocol.

  • Les ACL standard

Elles sont identifiées par un numéro, elles agissent sur l'adresse source, et autorisent ou refusent un type de protocole défini par le numéro de l'ACL.
Voici la structure type d'une ACL standard :

(config)#access-list {1-99} {deny|permit} adresse_IP_origine masque_générique

Le masque générique (wildcard en patois anglo-saxon) est pour chaque octet le complément à 255 : Ainsi le masque générique de 255.255.240.0 s'écrira 0.0.15.255
Exemple :

(config)#access-list 1 deny 192.168.10.0 0.0.0.255
(config)#access-list 1 permit any

Refus du trafic IP en provenance des hôtes du réseau 192.168.10.0/24, et autorisation du trafic IP des hôtes de tous les autres réseaux. Si on n'oublie la seconde ligne plus aucun réseau n'est autorisé car une ACL se termine toujours par l'instruction implicite deny any : Quelle soit visible ou non, cette instruction est toujours appliquée.
Bien sûr il faut assigner l'ACL à une interface pour qu'elle soit active :

(config-if)#ip access-group 1 out                   si on ne définit ni "in" ni "out", la valeur "out" est activée par défaut

Les valeurs protocolaires possibles sont ICMP, TCP ou UDP et enfin IP qui est la réunion des 3 autres.

  • Les ACL étendues

Elles sont identifiées par un numéro, elles utilisent des spécifications d'adresses plus complexes que les ACLs standards et autorisent ou refusent des protocoles précis. Voici la structure type d'une ACL étendue :

(config)#access-list {100-199} {deny|permit} protocole adresse_IP_origine masque_générique adresse_IP_destination masque_générique opérateur opérande 
[established]

Opérateur opérande correspond à eq (égal à) , ou gt (plus grand que), ou lt (plus petit que) ou enfin ne (non égal à, différent de) suivi d'un numéro de port.
Depuis IOS version 11, un port peut être désigné sous sa forme numérique 25 ou logique smtp.
TCP accepte l'instruction established qui signifie que Le trafic TCP est autorisé si le bit ACK est activé.
Exemple d'ACL étendue :

(config)#access-list 100 deny udp host 212.16.23.6 host 10.23.4.6 eq tftp
(config)#access-list 100 permit ip any any

Explications : 1ère ligne : Le trafic TFTP est interdit entre les machines 212.16.23.6 et 10.23.4.6 ; 2ème ligne : Tout le reste du trafic (IP) est autorisé pour n'importe quelle source (any) vers n'importe quelle destination ; sans cette deuxiéme ligne l'instruction implicite de fin d'ACL interdirait tout le trafic de tout le monde. TFTP est désigné par son protocole sous-jacent (udp) et par son nom logique (tftp) mais le nom logique aurait pu être remplacé par le numéro de port (69). Le terme host signifie que l'ACL vise un hôte et pas un réseau, ce qui économise l'écriture du masque générique.

  • Les ACL nommées

Les ACLs nommées sont identifiées non par un numéro mais par un nom et peuvent être de type standard ou étendu. Le nommage n'a qu'un seul but : Faciliter la compréhension et connaître la finalité de l'ACL. "ACL web_stagiaires" est plus parlant que "ACL 102". Seuls les IOS 11.2 et plus récents sont compatibles avec les ACLs nommées. Les espaces ne sont pas autorisés dans les noms d'ACL.
Voici le schéma générique d'une ACL nommée :

(config)#ip access-list {standard|extended} nom_de_l_ACL
(config-nacl)instructions

Attention, chaque ACL nommée devra avoir un nom unique. Voici un exemple d'ACL nommée suivie de ses explications :

(config)#ip access-list extended production 
(config-nacl)#deny tcp 120.15.9.0 0.0.0.255 host 155.19.6.44 eq www
(config-nacl)#permit ip any any
(config-if)#ip access-group production in

Explications : L'ACL étendue nommée "production" (plus parlante qu'un numéro) filtre le trafic http port 80 entre les hôtes du réseau 120.15.9.0/24 (réservé aux machines en production d'où le nom de l'ACL) et l'hôte 155.19.6.4, tous les autres trafics étant autorisés. Au final l'ACL doit être positionnée efficacement sur une interface succeptible de pouvoir filtrer l'intégralité de ce trafic, et ce le plus tôt possible.

  • Généralités sur les ACL et leur syntaxe :

L'utilisation d'ACL nommées nécessite IOS version 11.2 ou mieux. Le choix du sens d'application d'une ACL sur un interface (in ou out) est apparu avec IOS version 10.
Une ACL ne s'applique pas au trafic émis par un équipement : Par exemple une ACL filtrant le trafic UDP bloquera le trafic UDP transitant par l'équipement mais pas le trafic SNMP (donc UDP) émis par l'équipement lui-même.
Une ACL de type in associée à une interface contrôle le trafic qui entre dans le routeur par cette interface.
Une ACL de type out associée à une interface contrôle le trafic qui sort du routeur par cette interface.
L'instruction log dans une ACL apparue depuis IOS 11 génère un message syslog à chaque fois qu'un paquet satisfait un élément d'une ACL. Pour les ACL ayant une forte connotation sécurité, il peut être intéressant d'ajouter un log à chaque ligne ou apparait un deny.
Pour les ACLs standards, les protocoles possibles sont TCP, UDP ou ICMP, IP. IP regroupe ICMP, UDP et TCP.
La lecture des éléments d'une ACL étant séquentielle, sur les équipements où sont activés de nombreuses ACL comportant chacunes de nombreuses règles, il faut placer en premier les conditions ayant le plus de chances de concorder et en dernier les conditions les plus rares, ceci afin d'arrêter au plus tôt la lecture l'ACL. De nombreuses ACL longues ne respectant pas cette bonne pratique peuvent pénaliser les performances d'un équipement.
Une seule ACL par sens et par protocole appliquée sur une interface.
La syntaxe des ACL accepte les opérateurs suivants : host (une seule station), any (tous), lt (lesser than, plus petit que), gt (greather than, plus grand que), eq (equal, équivalent à), neq (not equal, différent de).
Rédiger en langage courant les conditions à vérifier et les actions qui en découlent (ex : Bloquer le trafic UDP port 123 émis par les stations du réseau w.x.y.z m.m.m.m à destination du serveur a.b.c.d) puis les traduire ensuite en syntaxe ACL Cisco est une bien meilleure "bonne pratique" que de rédiger ses ACL directement.

  • Contrôle des ACL :
#show access-lists                           pour voir toutes les ACLs
#show access-lists production                 pour voir l'ACL nommée production
  • Modification et suppression des ACL :

Retrait d'une ACL :

(config-if)#no ip access-group production in        L' ACL "production" ne contrôle plus le trafic sur cette interface

Suppression d'une ACL :

(config)#no ip access-list production        pour supprimer cette ACL

Il est préférable de retirer une ACL de toutes les interfaces sur lesquelles elle s'applique avant de la supprimer.
Pour modifier une ACL, il faut toujours la retirer des interfaces sur lesquelles elle s'applique, puis la modifier et au final l'associer à nouveau sur ses interfaces d'origine. Modifier à la volée une ACL en cours d'utilisation sur une ou des interfaces est fortement déconseillé.

  • 6 conseils à respecter pour la manipulation des ACL :
  1. Dès qu'un type de trafic est désigné (ICMP, UDP...) le reste de ce trafic non désigné est implicitement filtré (deny all implicite final).
  2. L'ordre d'entrée des règles d'une ACL est important ; la 1ère règle qui concorde est appliquée, les suivantes ne sont même pas lues.
  3. Privilégier les ACL nommées et si possible commenter l'ACL (remark).
  4. ACL longue = traitement de l'ACL long.
  5. Sauf pour filtrer les trafics de l'équipement lui-même (son trafic NTP, son trafic SNMP, ses accès VTY) il n'est pas conseillé de multiplier les ACL sur un équipement Cisco. Un équipement Cisco doit d'abord router ou commuter et la sécurité doit être confiée à des équipements spécialisés.
  6. Pas de modification d'ACL à la volée.

HSRP

Pour des questions de redondance et de tolérance aux pannes, il est intéressant de doubler ou tripler certains routeurs. Pour cela il faut les configurer en groupe de secours en activant le protocole HSRP. Un des équipements va devenir le routeur actif, les autres resteront en attente (standby) jusqu'à la défaillance de celui ci.
HSRP (Hot Standby routing Protocol) est un protocole propriétaire Cisco similaire à VRRP.

switch01(config)#interface vlan 2
switch01(config-if)#ip address 125.140.12.253 255.255.255.0 
switch01(config-if)#standby 1 ip 125.140.12.254
switch01(config-if)#standby 1 priority 100
switch01(config-if)#standby 1 preempt
switch02(config-if)#standby 1 authentication md5 key-string 7 0364FD140EB00ACF4D259

Sur le commutateur multiniveaux switch01 création d'une adresse virtuelle IP 125.140.12.254 appartenant au groupe de secours numéro 1 (stanby 1) pour permettre une redondance de routage dans le Vlan numéro 2 ; les autres multiniveaux ou routeurs concernés doivent avoir la même configuration avec une priorité différente. preempt force l'équipement ayant la priorité la plus haute à devenir maître ; sans cette commande, le premier équipement démarré ou configuré devient le maître.
Une interface virtuelle HSRP possède toujours une adresse MAC virtuelle bien particulière : 00-00-0C-07-AC-XX ou XX correspond au numéro du groupe de secours (dans notre exemple 00-00-0C-07-AC-01). A cause de cette limitation, il ne peut y avoir que 255 groupe de secours (01 à 255) dans le même réseau local (ou VLAN) car il n'y a que 255 adresses MAC possibles (et pas 256, les équipements Cisco n'acceptant pas la création du groupe 00).
Voici la configuration d'un routeur redondant dans le même groupe de secours, avec un niveau de priorité plus bas :

router02(config)#interface vlan 2
router02(config-if)#ip address 125.140.12.252 255.255.255.0  
router02(config-if)#standby 1 ip 125.140.12.254
router02(config-if)#standby 1 priority 50
router02(config-if)#standby 1 preempt
router02(config-if)#standby 1 authentication md5 key-string 7 0364FD140EB00ACF4D259

La KEY-STRING doit être la même chez tous les membres d'un groupe HSRP, elle permet d'authentifier les annonces HSRP au sein d'un groupe et de fait, d'écarter les annonces HSRP non authentifiées.

VPN IPsec

Le mise en place d'IPSec à partir de routeurs Cisco fait l'objet d'un article à part.

Serveur DHCP

DHCP est un protocole permettant à une machine d'obtenir automatiquement une configuration IP lors du démarrage de ses services réseaux. La machine doit posséder un client DHCP qui va envoyer des paquets "Broadcast" (diffusion générale) à l'attention d'un serveur DHCP présent sur son segment LAN . Un serveur DHCP recevant ces requêtes répond en envoyant certaines informations. Le service DHCP peut être exécuté à partir d'un système d'exploitation type *Nix ou IOS Cisco.
Les informations de configuration DHCP ont une durée de validité, décidée par le serveur ; cette durée nommée "bail DHCP" peut varier de quelques minutes à l'infini. Dans les faits elle est souvent définie entre 1 et 7 jours.
Il n'est pas nécessaire d'avoir un serveur DHCP par réseau ou VLAN, les broadcast des clients DHCP cherchant un serveur pouvant être relayés par les routeurs intermédiaires Cisco mettant en oeuvre la fonctionnalité "IP Helper-Address".
Attention : Sur certains IOS Cisco le service DHCP est lancé par défaut. La commande no service dhcp le désactive ; service dhcp le réactive au besoin.

  • Configuration d'un IOS Cisco en serveur DHCP :

Création d'un réservoir d'adresses. Les adresse IP affectées aux clients seront piochées parmi les adresses libres de ce réservoir.

Router(config)#ip dhcp pool pool-test
Router(dhcp-config)#network 192.168.15.0 255.255.255.0

Nous venons de créer le réservoir nommé pool-test, ses adresses vont de 192.168.15.1 à 192.168.15.254
Remarques : Le réservoir est nommé pour le rendre unique, par plusieurs réservoirs peuvent coexister sur un serveur DHCP. Le nom de réservoir est sensible à la casse, pool-test et Pool-Test sont 2 réservoirs différents.

Router(dhcp-config)#default-router 192.168.15.254
Router(dhcp-config)#dns-server 83.99.160.5 83.99.160.10 83.99.160.15
Router(dhcp-config)#netbios-name-server 192.168.15.253
Router(dhcp-config)#domain-name toto.domaine.fr
Router(dhcp-config)#lease 3 11 59

Voici les autres paramètres envoyés aux clients DHCP : Leur passerelle par défaut, leur(s) serveur(s) DNS (8 au maximum, adresses séparées par des espaces), un serveur de noms NBNS/WINS, un suffixe DNS et la durée du bail DHCP en jours, heures et minutes (ici 3 jours, 11 heures et 59 minutes). lease infinite permet d'attribuer un bail éternel.

 Router(config)#ip dhcp excluded-address 192.168.15.254 192.168.15.253

Nous venons de retirer 2 adresses du réservoir : en effet nous venons de les attribuer de manière statique à 2 serveurs (la passerelle par défaut et le serveur NBNS/WINS), et pour éviter tout conflit d'adresse IP elles ne doivent pas pouvoir être proposées par le serveur DHCP.

  • Contrôle d'un IOS serveur DHCP :

Pour voir les adresses distribuées :

Router#show ip dhcp binding
IP address      hardware address      lease expiration        type
192.168.15.1    0001.1e55.25df        Mar 02 2008 17:00 PM    Automatic

Pour voir les statistiques complètes du service DHCP :

Router#show ip dhcp server statistics

Pour suivre en temps réel les opérations du server DHCP :

Router#debug ip dhcp server events

IP helper-address : Relais DHCP, DNS, NBNS...

L'un des premiers buts des routeurs est de segmenter les domaines de diffusion générale (Broadcast). Dans le cas de DHCP par exemple c'est génant, cela impose de positionner un serveur DHCP dans chaque segment LAN ou chaque VLAN : C'est cher et cela multiplie le nombre de serveurs à maintenir. La fonctionnalité IP Helper-Address va transformer la requête des clients DHCP émise sous forme de broadcast en unicast dirigée vers un serveur DHCP distant. Cette requête unicast pourra ainsi traverser le ou les routeurs intermédiaires entre le client et son serveur DHCP.

router(config)#interface fastEthernet 0/2
router(config-if)#ip helper-address 192.168.0.200

La commande s'applique sur l'interface succeptible de recevoir les requêtes DHCP broadcast à faire transiter (ici l'interface côté machines clientes).
192.168.0.200 est l'adresse du serveur DHCP vers qui diriger les requêtes DHCP transformées en unicast.
Ip-helper-address.jpg
Par défaut, la commande ip helper-address propage en unicast les broadcast reçus sur les ports UDP de tous les protocoles suivants :
Time (37), Tacacs (49), DNS (53), BootP / DHCP serveur (67), BootP / DHCP client (68), TFTP (69), NetBIOS name server (137), NetBIOS datagram service (138).
Pour limiter toutes ces transmissions, pas forcement souhaitables, et ne laisser passer que les ports autorisés, utiliser la commande no ip forward-protocol sur l'interface concernée en complément de la commande ip helper-address.

router(config-if)#no ip forward-protocol 53

Le transfert des broadcast DNS est désactivé. La commande inverse ip forward-protocol permet de réactiver un port UDP anciennement désactivé ou d'ajouter un nouveau port UDP non prévu dans la liste par défaut :

router(config-if)#ip forward-protocol 202

Le broadcast UDP 202 sera transformé en unicast et dirigé vers le serveur spécifié par la commande ip helper-Address (192.168.0.200 dans notre exemple).

Qualité de service (QoS)

En cas de congestion, réseaux la QoS permet de traiter les paquets entrants et sortants en fonction de règles et de niveaux de priorité établis. On peut ainsi privilégier des applications, des types de paquets et ce de différente manière (totale, partielle, en entrée, en sortie...) Les paquets sont classés en fonctions de règles et marqués dans un champ spécial (DSCP) par le 1er routeur, puis en cas de congestion traités différemment par les autres routeurs traversés en fonction de ce champ DSCP. La définition des applications/protocoles à différencier se fait grâce aux ACL étendues. Exemple:
Nous allons créer 2 ACL étendues, une pour les applications "priorité haute" (la classe D1), une autre "priorité basse" (la classe D3). Les applications non listées (tout le reste) feront partie de la classe intermédiaire "priorité moyenne".
Les termes D1 et D3 sont arbitraires. Les ports choisis dans les ACL ci dessous sont donnés à titre d'exemple.

router(config)#ip access-list extended D1
 router(config-ext-nacl)#permit icmp any any
 router(config-ext-nacl)#permit tcp any any eq www
 router(config-ext-nacl)#permit tcp any eq www any
 router(config-ext-nacl)#permit tcp any any eq 2000
 router(config-ext-nacl)#permit tcp any eq 2000 any
 router(config-ext-nacl)#permit tcp any any eq 443
 router(config-ext-nacl)#permit tcp any eq 443 any
 router(config-ext-nacl)#exit
router(config)#

ICMP, http, https et une application utilisant le port 2000 font partie de l'ACL "D1"

router(config)#ip access-list extended D3
 router(config-ext-nacl)#permit tcp any any eq 199
 router(config-ext-nacl)#permit tcp any eq 199 any
 router(config-ext-nacl)#permit tcp any any eq 35126
 router(config-ext-nacl)#permit tcp any eq 35126 any
 router(config-ext-nacl)#permit tcp any any eq 55555
 router(config-ext-nacl)#permit tcp any eq 55555 any
 router(config-ext-nacl)#exit
router(config)#

Les applications utilisant les ports 199, 35126 et 55555 (choisis ici à titre d'exemple) font partie de l'ACL "D3"

  • Maintenant nous indiquons au routeur que la liste des applications listées dans l'ACL D1 fera partie de la classe P1, et que la liste des applications listées dans l'ACL D3 fera partie de la classe P3. Nous verrons juste après comment sont traitées les applications non listées.
router(config)#class-map match-any P1
 router(config-cmap)#match access-group name D1
 router(config-cmap)#exit
router(config)#class-map match-any P3
 router(config-cmap)#match access-group name D3
router#write
  • Nous allons maintenant dire au routeur des marquer le champ DSCP des paquets d'une valeur particulière (af11, af21, af31) en fonction de la classe (P1, P2, P3) à laquelle ils appartiennent :
router(config)#policy-map ma-QoS  (je nomme cette règle ma-QoS)
 router(config-pmap)class P1   (Je désigne ma classe P1)
  router(config-pmap-c)#set ip dscp af31 (la valeur af31 sera attribuée au champ dscp des paquets de la classe P1)
  router(config-pmap-c)#exit
 router(config-pmap)class P3   (Je désigne ma classe P3)
  router(config-pmap-c)#set ip dscp af11 (la valeur af11 sera attribuée au champ dscp des paquets de la classe P3)
  router(config-pmap-c)#exit
 router(config-pmap)class-default   (Je définis ce qui n'est ni P1, ni P3)
  router(config-pmap-c)#set ip dscp af21 (la valeur af21 sera attribuée au champ dscp des paquets de la classe par défaut)
  router(config-pmap-c)#exit

Nota : Les valeurs des champs DSCP "af31, 21 et 11" sont normalisées.
Dans l'ordre :

  • Création de 2 ACL étendues, D1 et D3, pour différencier des applications ou protocoles.
  • Mise en relation entre 2 classes de service QoS (P1 et P3) et 2 ACL (D1 et D3)
  • Consignes de marquage du champ DSCP des paquets des 2 classes crées, puis des paquets n'appartenant à aucune des 2 classes.
  • Il reste enfin à affecter la policy-map sur une ou des interfaces.

Divers

Protection des fichiers

router_105(config)#secure boot-image
router_105(config)#secure boot-config

Protège le fichier image IOS et le fichier startup-config d'un effacement malencontreux.

A ce sujet la commande d'effacement du fichier de configuration est

router_105#erase [NVRAM:]startup-config

Préciser NVRAM: peut être nécessaire ou pas en fonction du modèle d'équipement et de la version d'IOS.

Processus d'acheminement des paquets au sein d'un routeur

  1. Réception d'un paquet sur une interface.
  2. Vérification de la table de pontage adresseMAC source <-> port et mise à jour de cette table.
  3. Mise à jour du cache ARP adresseMAC source <-> adresseIP source.
  4. Vérification des ACL éventuellement appliquées sur l'interface d'arrivée ; si une ACL est bien appliquée sur cette interface et que le paquet correspond à une de ses conditions, application de la condition (destruction, modification du champ DSCP, désencapsulation IPSec) sinon application de la condition implicite.
  5. Détermination de l'interface de sortie en fonction de la table de routage. Si aucune route n'est possible, destruction du paquet et envoi d'un message ICMP à l'émetteur.
  6. Champ TTL du paquet décrémenté de 1. Si la nouvelle valeur est nulle (0) destruction du paquet et envoi d'un message ICMP à l'émetteur.
  7. Vérification des ACL éventuellement appliquées sur l'interface de sortie ; si une ACL est bien appliquée sur cette interface et que le paquet correspond à une de ses conditions, application de la condition (destruction, modification du champ DSCP, encapsulation IPSec) sinon application de la condition implicite.
  8. Modification de la trame du paquet (remplacement de l'adresse MAC source originale par l'adresse MAC de l'interface de sortie) et transmission sur le support.

Le processus d'acheminement utilise la commutation (pontage), le routage et le filtrage, auxquels il faudra ajouter la translation d'adresse si le NAT est activé et que l'adresse IP source ou destination des paquets satisfait aux règles de translation.

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Outils