Procédure MAJ switchs Cisco

Procédure de mise à jour du firmware Cisco IOS sur les switchs Cisco vers une version plus récente ou antérieure. Deux cas de figure : avec son PC pour mettre à jour un switch à proxmité, ou une mise à jour à distance en SSH pour des équipements déployés.

Seront couverts la recherche et la récupération des images avec des recommandations communes aux deux pratiques.

Pour la mise à jour à proximité, sera monté un serveur TFTP simple sur votre PC par lequel le switch récupérera sa nouvelle image. Une fois récupérée, celle-ci se vera vérifiée pour ne pas utiliser une image corrompue par le téléchargement ou par le transport, le firmware sera ensuite installé. S’en suivra la vérification du changement et l’assainissement des anciennes images.

La mise à jour à distance reprend les mêmes principes, hormis qu’elle transferera le firmware par SSH avec SCP.

N’hésitez pas à vous servir de la table des matières en haut, et à cliquer sur les images pour les aggrandir.

Je vous conseille par avance de préférer la version à proximité, bien plus rapide pour le transport de l’image (franchement) si vous en avez la possibilité.

Préparatifs de la mise à jour

Récupération de l’image

Sur le site de recherche de Cisco, vous pouvez retrouver les images téléchargeables de votre équipement en renseignant sa référence.

Fait ici pour des 2960X - https://software.cisco.com/download/find/2960X.

06af6a77073f2b1af7a483841b9bfc9c.png 06af6a77073f2b1af7a483841b9bfc9c.png

Aller sur la référence EXACTE de votre switch puis recherchez l’image souhaitée.

Le firmware est un .bin, si vous rencontrez des .tar c’est pour les installer depuis des interfaces WEB (pas intéressant ici).

Les MD sont les versions stables pour Maintenance Deployment et les ED de Early Deployment pour les versions instables.

À noter que parfois il suffit de renseigner son adresse postale dans son compte pour télécharger une image sans avoir de contrat de license pour l’équipement.

Au même endroit, regardez et conservez l’empreinte MD5 du fichier : on ira la comparer à celle de l’image finale avant de l’installer pour vérifier son authenticité et son intégrité.

953118540f92ce0c5ca47460825378c2.png 953118540f92ce0c5ca47460825378c2.png 95364a077a1545b0d23ca6c7073f6016.png 95364a077a1545b0d23ca6c7073f6016.png

Installation à proximité

Seront nécessaires votre ordinateur, un câble console Cisco à raccorder au switch sur son port console, et un câble réseau pour vous connecter à un port réseau du switch.

Vérification du port COM

Vérifiez le numéro que Windows a donné à votre port série s’il est reconnu.

Dans le gestionnaire de périphériques, recherchez un COMX où X un entier naturel non nul.

af0158ef5d4b70d8bfb3907e4bd658a8.png af0158ef5d4b70d8bfb3907e4bd658a8.png

Ici mon adaptateur USB -> DB9 (RS232) est reconnu comme COM5.

Le port COM change si vous changez l’adaptateur de port USB (par exemple).

Sa configuration n’est pas à changer.
Mais voici quelques informations si vous souhaitez débogger ou en apprendre plus.

Les équipements Cisco utilisent une liaison asynchrone 8N1 avec 8 bits de donnés, pour un débit brut de 9600 bits/s (soit un débit des symboles de 1200 symboles/s). Pas de bit de parité (détection d’erreur), 1 bit d’arrêt pour annoncer la fin d’un symbole, pas de contrôle de flux (0V quand inactif).

3ac79cdae97f343f9bad94a7c871db92.png 3ac79cdae97f343f9bad94a7c871db92.png
c3b7b06f6702ca2df2b6c682869d7f47.png c3b7b06f6702ca2df2b6c682869d7f47.png

Installation d’un serveur TFTP

Pour Trivial FTP, TFTP permet de ne pas avoir à renseigner de mot de passe comparé à un partage FTP normal ou à un SFTP qui font de l’authentification. En TFTP tout le monde est “anonymous”.

L’utilitaire le plus simple trouvé pour monter un serveur TFTP fut l’applicatif de SolarWinds, téléchargeable à ce lien.
https://downloads.solarwinds.com/solarwinds/Release/FreeTool/SolarWinds-TFTP-Server.zip

Une fois décompressé, vous pouvez lancer l’exécutable SolarWinds-TFTP-Server.msi pour installer le serveur TFTP.

Son installation est vraiment simple et va droit au but, pas d’argument à renseigner ou d’option à changer, à en voir par l’installation suivante.

9e70972a6aeef2b221eff0e117dccb34.png 9e70972a6aeef2b221eff0e117dccb34.png
e9a3f26d280767853f4fc25eae1f3582.png e9a3f26d280767853f4fc25eae1f3582.png
e33d7c504170ba080de1a8485db18c15.png e33d7c504170ba080de1a8485db18c15.png
eaa6f4c407e8dec122d6b697f2ae0600.png eaa6f4c407e8dec122d6b697f2ae0600.png
2c5ad86c3c696ece48f5229148f46200.png 2c5ad86c3c696ece48f5229148f46200.png

Vous pouvez lancer l’application pour la première fois, elle s’appelle TFTP Server.

77c7e05d361d8eee2e4c732a014f3b9b.png 77c7e05d361d8eee2e4c732a014f3b9b.png

Je fais un rapide tour de l’interface.

La fenêtre que vous voyez sont vos logs qui vont s’actualiser, en bas à gauche la racine de votre dossier TFTP partagé sur le réseau (à retenir, tout ce qui est mis dans C:\TFTP-Root sera partagé).

Any la connexion est ouverte sur toutes vos interfaces et enfin à sa droite son état de fonctionnement.

Par défaut, n’importe qui peut écrire et lire des informations sur votre serveur TFTP. Il est aussi ouvert sur toutes vos interfaces.

1cd719913c4f832f0fe19f39a9576234.png 1cd719913c4f832f0fe19f39a9576234.png

Mettez donc l’image téléchargée dans votre répertoire C:\TFTP-Root pour que le switch puisse venir la chercher plus tard.

Ouverture du port 69 UDP

Le port serveur 69 en UDP est réservé pour TFTP, il faut cependant l’ouvrir une première fois sur le pare-feu Windows pour autoriser les connexions entrantes sur votre machine.

Si une pop-up pour une autorisation avec le pare-feu Windows apparait, c’est pour rajouter cette règle d’ouverture.

d4620d2c82b731d95334d32b6f603115.png d4620d2c82b731d95334d32b6f603115.png
03c0c29cc65d1a86bc898919733d3ee3.png 03c0c29cc65d1a86bc898919733d3ee3.png
9c9143d96468416d01af55d045a9fdfc.png 9c9143d96468416d01af55d045a9fdfc.png
7bb1bcd18cf8f1ded8ab9d475ed8c4ca.png 7bb1bcd18cf8f1ded8ab9d475ed8c4ca.png
7b7c750d70202e33973ad1785b42f444.png 7b7c750d70202e33973ad1785b42f444.png
c106f095ce0e022c139832b1cd9dc206.png c106f095ce0e022c139832b1cd9dc206.png
a0a4b1ecf9c44776b36fa9f2410e5d0b.png a0a4b1ecf9c44776b36fa9f2410e5d0b.png

Connexion en port console

Ouvrir Putty avec le câble console branché au switch.

fcb54815d26aa850ed33dbc3c430ba07.png fcb54815d26aa850ed33dbc3c430ba07.png

Renseignez Serial avec le port COM vu dans le gestionnaire de périphériques (ici COM4). Puis Open.

f7ca8802f7ebf1e136fa7f8524e0034e.png f7ca8802f7ebf1e136fa7f8524e0034e.png

La page est vierge, appuyez une fois sur Entrer pour initier la communication.

05b45c81f9bc4d17dfbeedd86d7ba5e7.png 05b45c81f9bc4d17dfbeedd86d7ba5e7.png

Placez-vous toujours en mode utilisateur privilégié en renseignant la commande enable (lorsque vous voyez un chevron >).

3266334909c95c5e6c573f04a762c1e0.png 3266334909c95c5e6c573f04a762c1e0.png

Configuration IP

Le switch aura besoin de communiquer avec le serveur TFTP par son adresse IP, ils seront sur le même réseau (pas obligatoire, mais pourquoi se compliquer la vie quand nous sommes à côté…).

Pour se faire, vous devez configurer le port du switch sur lequel votre PC sera branché en réseau : il sera mis mode accès s’il ne l’est pas (switch sorti du carton notamment…).

Sera ensuite configuré une adresse IP sur le VLAN 1 (VLAN de tous les ports par défaut, à changer si vous en avez envie…) pour communiquer avec le switch par cette adresse IP.

Les adresses doivent être sur la même plage IP du PC au switch.

Je résume, vous aurez un port de votre switch en mode access sur le VLAN 1, VLAN qui aura une adresse IP pour communiquer avec votre PC. Sur ce port sera branché votre PC qui sera configuré dans la même plage IP pour que les deux puissent communiquer.

Ici le switch sera contactable en 10.0.0.1/24 et votre PC avec le serveur TFTP en 10.0.0.2/24.

Voici la configuration du switch à partir du mode utilisateur privilégié pour mettre le port du switch sur lequel est branché votre PC en mode access et pour y attribuer une adresse IP au VLAN qui y transite.

configure terminal

! le nom des interfaces peuvent changer, vous pouvez les voir avec show ip interface brief en utilisateur privilegie

interface g1/0/1
switchport mode access
exit

interface vlan 1
ip address 10.0.0.1 255.255.255.0
no shutdown
end

Si le switch a déjà été configuré auparavant et que vous ne savez pas sur quel VLAN est le port sur lequel le PC est branché, vous pouvez faire depuis le mode utilisateur privilégié la commande show vlan brief pour voir l’affiliation de tous les ports à quel VLAN.

Sur votre PC pour configurer l’adresse IP.

97d24c07d4dd790dbb0a0801940df044.png 97d24c07d4dd790dbb0a0801940df044.png
6a21d77b9405b4380380db02b41b9c0f.png 6a21d77b9405b4380380db02b41b9c0f.png
0f63e8fb724666b6917799864e754f14.png 0f63e8fb724666b6917799864e754f14.png
a049ab7321bf157ec9e3bbc11172c5d5.png a049ab7321bf157ec9e3bbc11172c5d5.png

Le switch sera contactable en 10.0.0.1 et votre serveur TFTP par le switch en 10.0.0.2.

Vous pouvez vérifier leur communication par un ping (du PC vers le switch, l’inverse a des chances de ne pas fonctionner par le pare-feu Windows).

Attendre la fin des séances de pings à chaque fois, le premier ne passe pas toujours (ne vous basez pas sur celui-là si vous allez vite)

ping 10.0.0.1 8b1993ada0d2bb7f162721a48982aea7.png 8b1993ada0d2bb7f162721a48982aea7.png

17a093359f6345e5235e710bb17cad34.png 17a093359f6345e5235e710bb17cad34.png

État des lieux et sauvegarde préventive

Vous pouvez regarder la version de Cisco IOS en route en renseignant la commande show version en mode utilisateur privilégié.

253ebdc431ce84c69b2e86e1ca90ba13.png 253ebdc431ce84c69b2e86e1ca90ba13.png

Ici il est en version 15.2(7)E7 en utilisant l’image c2960x-universalk9-mz.152-7.E7.bin.

Vous pouvez aussi en profiter pour regarder si vous avez téléchargé le bon firmware pour votre modèle de switch, toujours dans show version.

6f7fbf51084a559c0146df35494c022d.png 6f7fbf51084a559c0146df35494c022d.png

Avec un récapitulatif à la fin.

77002e168e3b5a3f9435c2e14a705fcb.png 77002e168e3b5a3f9435c2e14a705fcb.png

Pour sauvegarder la configuration actuelle de votre switch avant les changements, vous pouvez demander à votre switch d’enregistrer sa configuration actuelle sur le serveur TFTP de votre PC.

les valeurs entre crochets sont celles qui sont utilisées par défaut si aucunes ne sont renseignées, j’appuie donc sur entrer pour les utiliser

Pour sauvegarder la configuration en route sous le fichier running-config sur le serveur TFTP avec la commande copy running-config tftp://10.0.0.2/running-config.

f914d28ce36eca4d35e31522cc854c1b.png f914d28ce36eca4d35e31522cc854c1b.png

Si vous avez des VLANs sur votre switch, vous pouvez les sauvegarder avec la commande copy flash:vlan.dat tftp://10.0.0.2/vlan.dat pour les récupérer ensuite si besoin.

Vous pourrez ensuite restaurer les fichiers en les reprennant du serveur TFTP comme suivant avec copy tftp://10.0.0.2/running-config running-config.

4c36ea83fc99d6bb78adcc66f46d53d0.png 4c36ea83fc99d6bb78adcc66f46d53d0.png

Pareil pour les VLANs avec le fichier vlan.dat avec la commande copy tftp://10.0.0.2/vlan.dat flash:vlan.dat.

je vous épargne la capture…

Pour sauvegarder un dossier si vous savez que vous devez en sauvegarder un, vous pouvez le compresser pour l’envoyer sur le serveur TFTP.

Ici fait pour le dossier c2960x-universalk9-mz.152-2.E6.

archive tar /create tftp://192.168.74.7/c2960x-universalk9-mz.152-2.E6 flash:/c2960x-universalk9-mz.152-2.E6

pas de capture, mais totalement fonctionnel et essayé

Mise à jour du firmware

Votre switch démarre sur son stockage flash, en recherchant une image indiquée.

Faites un show boot pour regarder sur quelle image votre switch est/démarre avant de faire des modifications.

Le switch utilise ici le firmware c2960x-universalk9-mz.152-7.E4.bin.

47f61acc713ca8a647ca757085bd0635.png 47f61acc713ca8a647ca757085bd0635.png

On peut aussi la voir dans le stockage flash: à côté des autres fichiers ou dossiers, mémoire comme un disque que le switch utilise notamment pour booter, enregistrer des fichiers… dir flash:

6aefc4fe6c0be650a0dcff6bdd676694.png 6aefc4fe6c0be650a0dcff6bdd676694.png

Vous pouvez par ailleurs voir la quantité d’espace restante sur votre mémoire flash:. Vous pouvez la comparer à la taille de votre image récupérée du site de Cisco pour savoir si celle-ci pourra être transférée (erreur auquel cas).

La procédure de suppression de fichier est couvert plus bas, un delete <nom_du_fichier> ou delete /recursive <nom_du_dossier> pour gagner de l’espace peut être utilisé.

Récupérez sur le serveur TFTP l’image que vous aviez téléchargée, ici son nom c2960x-universalk9-mz.152-7.E7.bin mise dans C:\TFTP-Root.

copy tftp://10.0.0.2/c2960x-universalk9-mz.152-7.E7.bin flash: fbed0f5d7df350d44a83811e94c7d759.png fbed0f5d7df350d44a83811e94c7d759.png

Vous pouvez la voir en refaisant dir flash: comme fait juste au dessus.

Optionnel, mais vous pouvez vérifier l’empreinte de votre image savoir si elle a été corrompue pendant le transport, vérolée pour éviter de vous faire injecter une image non officielle de Cisco…

Vous devez pour cela vous reservir de l’empreinte MD5 trouvée sur le site de téléchargement de Cisco et la comparer à celle actuellement sur votre switch pour vérifier leur concordance.

Vérification de l’empreinte MD5 de l’image c2960x-universalk9-mz.152-7.E7.bin.

verify /md5 c2960x-universalk9-mz.152-7.E7.bin
3493d6e6bd2d262841e042c5b148f723.png 3493d6e6bd2d262841e042c5b148f723.png

L’empreinte trouvée est 1b3781db619dcce6a2677628acc15439.

On avait bien la même sur le site de Cisco.

900457fe33840d957f09ab81936eaced.png 900457fe33840d957f09ab81936eaced.png

On retrouve bien 1b3781db619dcce6a2677628acc15439 des deux côtés, l’image est correcte (authentique + intègre).

On peut maintenant indiquer au switch de booter sur cette nouvelle image au lieu de l’ancienne.

lorsque la commande est plus grande que la fenêtre, le $ signifie qu’il reste des caractères plus loin au début de la ligne (comme ici ou la commande est très longue)

Demande au switch de booter sur la nouvelle image transférée c2960x-universalk9-mz.152-7.E7.bin.

Pour rappel, sur les switchs les plus anciens, retirer switch all.

configure terminal
boot system switch all flash:c2960x-universalk9-mz.152-7.E7.bin
445fac02eca995457760e9df33925774.png 445fac02eca995457760e9df33925774.png

Sur certains switchs avec des versions de Cisco IOS plus anciennes, il n’y a pas besoin de l’option switch all (elle vous retournera une erreur)

La commande devient donc : boot system flash:c2960x-universalk9-mz.152-7.E7.bin (dans configure terminal toujours).

On peut désormais voir que le switch démarrera dorénavant sur la nouvelle image, avec la même commande show boot que tout à l’heure.

df01fb2c44f7e05d879cdd28c5d312a2.png df01fb2c44f7e05d879cdd28c5d312a2.png

Le switch démarrera bien sur la nouvelle image.

N’oubliez surtout pas d’enregistrer votre configuration, avec un write ou un copy running-config startup-config pour qu’elles soient prises en compte au prochain démarrage; ça y va de soit pour le changement de l’image sur laquelle le switch va démarrer la prochaine fois.

0380569a7090155c7f5c6b5a38be1312.png 0380569a7090155c7f5c6b5a38be1312.png

Puis faire un reload pour redémarrer, le redémarrage sera un peu spécial car le switch intégrera la nouvelle image.

Vous pouvez ensuite vérifier à son redémarrage qu’il ait bien intégré l’image dans un show version.

aff394b77f6d9e76468eeb394c2eb58e.png aff394b77f6d9e76468eeb394c2eb58e.png

Avec SSH

Activation du service SCP

La configuration SSH est déjà active et fonctionnelle sur le switch. Avec 192.168.74.21 l’adresse IP du switch contactable.

c26c5f3880ec6c3a958d5b932f9f5255.png c26c5f3880ec6c3a958d5b932f9f5255.png

Des modifications restent à faire, comme activer le serveur SCP pour transférer des fichier via SSH sur le switch.

configure terminal
ip scp server enable 6a2c395450866a472f75b687e9abba0c.png 6a2c395450866a472f75b687e9abba0c.png

Modification du timeout des lignes

Si les switchs utilisés n’ont pas de module crypto (comme c’est le cas pour les 2960x), le transfert de fichiers ou les manipulaitons lourdes vont être extrêmement longs. En raison de l’utilisation tout du long de tâches demandant de la cryptographie (en SSH, HTTPS…) que le processeur aura du mal à prendre tout seul sans aide.

En prenant aussi en considération que SSH est en TCP, à contrario de TFTP et FTP qui sont en UDP. Ce qui augmente la taille de l’encapsulation donc diminue le débit net, en plus de la diminution engendrée par la gestion des sessions en TCP (syn, synack, ack…), et j’en passe…

Une image Cisco IOS peut prendre alors plusieurs dixaines de minutes à se transférer sur d’anciens switchs n’ayant pas de module crypto en SSH.

Sauf que le timeout par défaut des lignes de connexion à virtuelles est de 10 minutes, observable ici avec la commande show terminal.

8ebc07e19e0ef2e0698b849afe040b1c.png 8ebc07e19e0ef2e0698b849afe040b1c.png

Il est possible que vous soyez déconnectés à la fin de votre transfert ou même avant.

Modifier le temps des sessions pour les connexions SSH, ici fait pour 1 heure (60 minutes et 0 secondes) au lieu de 10 minutes.

il est aussi possible de les désactiver le timeout sur les lignes si c’est temporaire avec la commande no exec-timeout MAIS NE SURTOUT PAS UTILISER no exec SINON VOUS ALLEZ VOUS DÉCONNECTER ET NE PLUS POUVOIR REVENIR

configure terminal
line vty 0 15
exec-timeout 60 0 53dc83fb567acdefc76d333a9661f3cb.png 53dc83fb567acdefc76d333a9661f3cb.png

En refaisant la commande show terminal vous devriez voir la valeur précédemment entourée changée.

Suite à quoi, les prochaines connexions auront un temps d’inactivité possible augmenté à 60 minutes.

Transfert de l’image avec SCP

Vous pouvez maintenant transférer votre image avec SCP au switch (ici fait avec l’image c2960x-universalk9-mz.152-7.E7.bin).

scp c2960x-universalk9-mz.152-7.E7.bin <utilisateur_sur_switch>@192.168.74.21:flash 7810fce834183e6419e2f86da663a219.png 7810fce834183e6419e2f86da663a219.png

La suite des événements se déroule pareillement au changement de version par câble console, je les répète rapidement ici.

Votre image est désormais bien dans votre stockage flash:, on peut la voir à côté des autres fichiers et dossiers avec la commande dir flash:.

4a6c0be8ab946e10b2c24ebb8c0de2e8.png 4a6c0be8ab946e10b2c24ebb8c0de2e8.png

Ici pour vérifier l’intégriter de l’image et sa concordance au site officiel de Cisco, avec l’empreinte MD5 conservée.

verify /md5 c2960x-universalk9-mz.152-7.E7.bin 13d7cc693be0667deb924456938c3cac.png 13d7cc693be0667deb924456938c3cac.png 38c68d8bd0b2a5b6780589ea1885fdf5.png 38c68d8bd0b2a5b6780589ea1885fdf5.png

Prise en compte du nouveau firmware

On peut désormais changer l’image sur lequel le switch démarrera. Le $ voulant dire que vous n’êtes pas au début de la ligne, la fenêtre étant trop courte.

Ici pour l’image c2960x-universalk9-mz.152-7.E7.bin.

configure terminal
boot system switch all flash:c2960x-universalk9-mz.152-7.E7.bin f9b6fadc97a71cff0a772af243c2fe66.png f9b6fadc97a71cff0a772af243c2fe66.png

Vérification que le switch démarrera bien sur la nouvelle image en affichant son image de boot avec show boot.

de36de8f7bf19ac5f1f538d1bcbbcda1.png de36de8f7bf19ac5f1f538d1bcbbcda1.png

Prise en compte des modifications aussi au prochain redémarrage (y compris le changement d’image au démarrage…) avec un write.

3f4997532a6454d605718285a0af76e1.png 3f4997532a6454d605718285a0af76e1.png

Redémarrage du switch sur la nouvelle image, redémarrer avec reload.

1acc18460b016352d52307dbcc7f197b.png 1acc18460b016352d52307dbcc7f197b.png

Une fois terminé et le switch redémarré, on peut voir qu’il a bien monté en version ici avec show version.

e9474daa3c1437373d3e00ee8cf78712.png e9474daa3c1437373d3e00ee8cf78712.png

Assainissement des anciennes images

Après la mise à jour du firmware et la vérification de la prise en compte; il reste les anciennes images dans la mémoire flash: qui nous poseront problème pour les prochaines mises à jour (espace insuffisant…).

Vous pouvez toutes les lister en affichant les fichiers avec l’extension .bin (extension des images) comme suivant : dir flash:*.bin.

c147875a3e7a269b1a75467732cfd2ff.png c147875a3e7a269b1a75467732cfd2ff.png

Pour en supprimer une, renseigner l’image avec la commande delete devant.

Faites attention que ce ne soit pas votre image de boot de votre show boot

delete flash:c2960x-universalk9-mz.152-7.E4.bin 79965a415a677159a0f9d3fc2a00139c.png 79965a415a677159a0f9d3fc2a00139c.png

Pour un dossier, ici avec c2960x-universalk9-mz.152-2.E6 il faut rajouter l’option /recursive, mais on nous demande une confirmation chaque fichier présents… (50 fichiers, 50 confirmations…) : delete /recursive c2960x-universalk9-mz.152-2.E6.

e218880d8b3b8899bed483539b9f0dbc.png e218880d8b3b8899bed483539b9f0dbc.png

Pour éviter les confirmations, on peut ajouter en plus l’option /force : delete /recursive /force c2960x-universalk9-mz.152-2.E6.

add3001136549d3278d05f1a3b1aeba6.png add3001136549d3278d05f1a3b1aeba6.png

Troubleshoot guide

  1. branchements ou matériel
  2. PING -> conf switch (ping lui-même? port down, pas bon vlan) ou conf IP PC
  3. conf PUTTY
  4. conf TFTP

Alexis Déhu