informatique:extreme_networks
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
informatique:extreme_networks [2017/04/03 15:12] – pteu | informatique:extreme_networks [2023/03/14 09:07] – [Debug / tech-support] spath-stats.py pteu | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | FIXME | ||
- | |||
======Extreme Networks / EXOS====== | ======Extreme Networks / EXOS====== | ||
Line 7: | Line 5: | ||
Par défaut les switchs sont configurés avec 2 VRs (virtuals router), chacun doté d'une table de routage étanche : | Par défaut les switchs sont configurés avec 2 VRs (virtuals router), chacun doté d'une table de routage étanche : | ||
- | - **VR-Mgmt**, | + | * **VR-Mgmt**, |
- | - **VR-Default**, | + | |
- | Pour les versions 16 et antérieures, | + | Pour les versions 16 et antérieures, |
+ | Par défaut les résultats de commandes s' | ||
+ | <code bash> | ||
+ | disable clipaging | ||
+ | enable clipaging | ||
+ | </ | ||
+ | Depuis les version 30, les commandes précitées, | ||
+ | <code bash> | ||
+ | disable cli paging | ||
+ | enable cli paging | ||
+ | </ | ||
+ | =====Licences===== | ||
- | =====Logs / journaux===== | + | Certaines fonctionnalités sont restreintes à un certain niveau de licence. |
+ | Procédure pour changer la licence d'un stack : | ||
<code bash> | <code bash> | ||
- | show log configuration filter " | + | # on enlève la restriction de licence sur le slot4 (s'il y en a une) |
+ | unconfigure stacking license-level slot 4 | ||
- | # logguer les changements de config | + | # pour chaque slot Backup/ |
- | enable | + | telnet slot 2 |
+ | enable | ||
+ | quit | ||
+ | [etc] | ||
- | # lister toutes les familles de log possible | + | # puis le master (slot 1) |
- | show log components | + | enable licence xxxx-xxxx-xxxx-xxxx-yyyy |
- | # filtrer | + | # on reboot |
- | configure log filter DefaultFilter add events All severity warning | + | reboot slot 4 |
- | # Voir les compteurs | + | # vérifier le bon fonctionnement |
- | <code bash> | + | show licenses |
- | show log counters All include | + | |
- | # configurer un rsyslog | + | # au pire |
- | configure log target syslog 10.1.1.24: | + | reboot stack-topology |
- | enable log target syslog 10.1.1.24: | + | |
</ | </ | ||
=====Système===== | =====Système===== | ||
+ | |||
+ | ====Hardware==== | ||
La commande '' | La commande '' | ||
<code bash> | <code bash> | ||
show switch | show switch | ||
+ | # nb : pour les stacks, c'est l' | ||
+ | # pour obtenir les uptimes individuels de chaque slot : | ||
+ | debug hal show platform cardInfo | i " | ||
+ | |||
show version | show version | ||
show temperature | show temperature | ||
Line 47: | Line 65: | ||
show fans # vitesses des ventilateurs | show fans # vitesses des ventilateurs | ||
show odometers | show odometers | ||
+ | </ | ||
+ | |||
+ | Commandes avancées : | ||
+ | <code bash> | ||
+ | # voir les détails hardware du switch | ||
+ | debug hal show version [ slot X ] | ||
+ | |||
+ | Slot 1 Version Information: | ||
+ | Linux version: | ||
+ | |||
+ | Link date: | ||
+ | Built by: | ||
+ | Branch | ||
+ | Version: | ||
+ | Card type: | ||
+ | MAC-0: | ||
+ | CPU Core: | ||
+ | CPU Speed: | ||
+ | CPU Bus Speed: | ||
+ | CPU Memory Size: 1024 MB | ||
+ | Alternate Bootrom Version: | ||
+ | Default Bootrom Version: | ||
+ | Active Bootrom: | ||
+ | Dillinger Version: | ||
+ | |||
+ | # afficher les informations d'un GBIC/SFP | ||
+ | debug hal show optic-info slot 1 port 52 | ||
+ | |||
+ | Port 52 | ||
+ | SFP or SFP+: SFP+ | ||
+ | Signal: | ||
+ | TX Fault: | ||
+ | SFP/SFP+ Vendor: | ||
+ | SFP/SFP+ Part Number: | ||
+ | SFP/SFP+ Serial Number: | ||
+ | SFP/SFP+ Manufacture Date: 131224 | ||
+ | SFP/SFP+ Type: | ||
+ | Connector: | ||
+ | Type: 1 meter QSFP+ to SFP+ Fan Out Passive Copper Cable | ||
+ | Supported: | ||
+ | Wavelength: | ||
</ | </ | ||
====Management==== | ====Management==== | ||
- | # Afficher la configuration de l' | + | Configurer une adresse IP sur le port de management '' |
+ | <code bash> | ||
+ | configure vlan Mgmt ipaddress 10.0.0.1 255.255.255.0 | ||
+ | |||
+ | # configurer sa route par défaut | ||
+ | configure iproute add default 10.0.0.254 vr VR-Mgmt | ||
+ | </ | ||
+ | Ce port est affecté au vlan Mgmt, lui-même attribué au VR-Mgmt. Cela signifie qu'il est indépendant de la configuration des autres ports et routes du switch, ce qui permet d' | ||
+ | |||
+ | Si on ne veut pas se servir de ce port de Mgmt dédié, on peut tout-à-fait configurer une IP sur un VLAN du VR de prod, par exemple le VLAN " | ||
+ | <code bash> | ||
+ | configure vlan Default ipaddress 10.10.10.1 255.255.255.0 | ||
+ | configure iproute add default 10.10.10.254 | ||
+ | </ | ||
+ | |||
+ | Au passage, pour déconfigurer l' | ||
+ | <code bash> | ||
+ | unconfigure vlan Default ipaddress | ||
+ | </ | ||
+ | |||
+ | Il est possible de positionner une adresse par VLAN si on le souhaite. Si on veut activer le routage entre ces VLANs, il faut activer l' | ||
+ | |||
+ | Afficher | ||
<code bash> | <code bash> | ||
show management | show management | ||
+ | |||
+ | configure idletimeout [0-240 min] | ||
</ | </ | ||
Line 63: | Line 146: | ||
start process " | start process " | ||
restart process " | restart process " | ||
+ | |||
+ | # terminer (kill) un processus | ||
+ | terminate process < | ||
+ | </ | ||
+ | |||
+ | ====Bannière==== | ||
+ | |||
+ | Pour mettre en place une bannière avant et/ou après le login (saisir la commande, puis le texte, et terminer par une ligne vide) : | ||
+ | <code bash> | ||
+ | configure banner before-login save-to-configuration | ||
+ | Unauthorized access to this equipment is prohibited. | ||
+ | |||
+ | </ | ||
+ | |||
+ | Vérification : | ||
+ | <code bash> | ||
+ | show banner | ||
+ | </ | ||
+ | ====SSH==== | ||
+ | |||
+ | Depuis la version 21 d'EXOS les fonctionnalités SSH sont incluses dans le firmware (avant il fallait installer un module additionnel !). | ||
+ | |||
+ | Mise en place : | ||
+ | <code bash> | ||
+ | # activer le serveur SSH | ||
+ | enable ssh2 [ vr VR-Mgmt ] | ||
+ | |||
+ | # configurer le idle-timeout d'une session SSH | ||
+ | configure ssh2 idletimeout 240 | ||
+ | </ | ||
+ | |||
+ | Vérifications : | ||
+ | <code bash> | ||
+ | show ssh2 | ||
+ | show switch management | ||
+ | </ | ||
+ | |||
+ | ===Filtrage des accès SSH=== | ||
+ | |||
+ | Protection de l' | ||
+ | <code bash> | ||
+ | configure ssh2 access-profile protect-ssh | ||
+ | </ | ||
+ | |||
+ | ===Auth par clé SSH=== | ||
+ | |||
+ | Pour authentifier un utilisateur par sa clé SSH : | ||
+ | <code bash> | ||
+ | # enregistrer la clé publique | ||
+ | create sshd2 user-key key_toto AAAAB3Nza[..]onL7eow== | ||
+ | |||
+ | # l' | ||
+ | configure sshd2 user-key " | ||
+ | |||
+ | # Lister les clés configurées sur le switch: | ||
+ | show sshd2 user-key | ||
</ | </ | ||
Line 76: | Line 215: | ||
Créer de nouveaux comptes utilisateurs : | Créer de nouveaux comptes utilisateurs : | ||
<code bash> | <code bash> | ||
- | Créer des comptes utilisateurs + mot de passe | ||
# autres comptes administrateur : | # autres comptes administrateur : | ||
create account admin toto <PWD> | create account admin toto <PWD> | ||
- | pour les comptes utilisateurs + mot de passe | + | # ou " |
- | # create account user tata <PWD> | + | |
+ | # pour les comptes utilisateurs + mot de passe | ||
+ | create account user tata < | ||
+ | |||
+ | # pour les compte d' | ||
+ | create account lawful-intercept < | ||
</ | </ | ||
- | Il n'existe | + | |
+ | Il existe 2 niveaux de privilège | ||
+ | * n' | ||
+ | * n'est pas loggué | ||
+ | * n'est pas désactivable | ||
+ | * est volatile (il doit être recréé à chaque redémarrage) | ||
+ | * permet uniquement de configurer des ACLs dynamiques et des mirroring de ports non sauvegardés dans la conf (ils disparaissent après reboot) | ||
Modifier le mot de passe d'un compte existant : | Modifier le mot de passe d'un compte existant : | ||
<code bash> | <code bash> | ||
- | configure account < | + | configure account < |
+ | <nouveau MDP> | ||
</ | </ | ||
+ | ===Diag=== | ||
+ | |||
+ | Lister les comptes utilisateurs configurés : | ||
+ | <code bash> | ||
+ | show accounts | ||
+ | User Name Access LoginOK | ||
+ | -------------------------------- | ||
+ | | ||
+ | | ||
+ | toto | ||
+ | titi | ||
+ | </ | ||
+ | |||
+ | Lister les utilisateurs connectés actuellement : | ||
+ | <code bash> | ||
+ | show session | ||
+ | # Login Time | ||
+ | ================================================================================ | ||
+ | | ||
+ | *17 Mon Jun 8 10:13:26 2020 titi | ||
+ | </ | ||
===Failsafe account=== | ===Failsafe account=== | ||
- | Le **failsafe account** est un compte préconfiguré, | + | Le **failsafe account** est un compte préconfiguré, |
+ | |||
+ | Pour le désactiver : | ||
<code bash> | <code bash> | ||
configure failsafe-account deny all | configure failsafe-account deny all | ||
Line 99: | Line 272: | ||
cf : https:// | cf : https:// | ||
+ | ====Politique de mots de passe==== | ||
+ | |||
+ | Pour configurer une politique de mot de passe : | ||
+ | <code bash> | ||
+ | SW# configure account all password-policy ? | ||
+ | char-validation | ||
+ | history | ||
+ | lockout-on-login-failures | ||
+ | lockout-time-period | ||
+ | max-age | ||
+ | min-age | ||
+ | min-different-characters | ||
+ | min-length | ||
+ | </ | ||
+ | |||
+ | Le nombre max de mauvais logins est configurable avec la commande : | ||
+ | <code bash> | ||
+ | configure cli max-failed-logins < | ||
+ | </ | ||
+ | |||
+ | Si un compte est verrouillé par suite de trop de tentatives de login incorrectes, | ||
+ | <code bash> | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | Pour le débloquer : '' | ||
+ | <code bash> | ||
+ | < | ||
+ | </ | ||
+ | ====DNS==== | ||
+ | |||
+ | <code bash> | ||
+ | # le premier serveur saisi sera le primaire | ||
+ | configure dns-client add name-server 10.1.1.108 vr VR-Default | ||
+ | configure dns-client add name-server 10.1.1.24 vr VR-Default | ||
+ | configure dns-client add domain-suffix maboite.fr | ||
+ | </ | ||
+ | |||
+ | Vérifications : | ||
+ | <code bash> | ||
+ | show dns | ||
+ | Number of domain suffixes: 1 | ||
+ | Domain Suffix 0: maboite.fr | ||
+ | Number of domain servers: 2 | ||
+ | Name Server 0: 10.1.1.108 | ||
+ | Name Server 1: 10.1.1.24 | ||
+ | </ | ||
+ | |||
+ | ====xNTP==== | ||
+ | |||
+ | On utilise soit NTP soit SNTP (Simple Network Time Protocol). | ||
+ | |||
+ | ===NTP=== | ||
+ | |||
+ | <code bash> | ||
+ | configure ntp server add 10.1.1.108 | ||
+ | configure ntp server add 10.1.1.24 | ||
+ | enable ntp vlan Default | ||
+ | enable ntp | ||
+ | </ | ||
+ | |||
+ | Supprimer la conf NTP : | ||
+ | <code bash> | ||
+ | disable ntp | ||
+ | configure ntp server delete 10.1.1.108 | ||
+ | </ | ||
+ | |||
+ | Vérifications : | ||
+ | <code bash> | ||
+ | show ntp association | ||
+ | show ntp sys-info | ||
+ | show ntp server | ||
+ | show ntp vlan | ||
+ | </ | ||
+ | |||
+ | ===SNTP=== | ||
+ | |||
+ | <code bash> | ||
+ | configure sntp-client primary 10.1.1.108 vr VR-Default | ||
+ | configure sntp-client secondary 10.1.1.24 vr VR-Default | ||
+ | enable sntp-client | ||
+ | </ | ||
+ | |||
+ | Supprimer la conf: | ||
+ | <code bash> | ||
+ | unconfigure sntp-client [ primary | secondary ] | ||
+ | </ | ||
+ | |||
+ | Vérifications | ||
+ | <code bash> | ||
+ | show sntp-client | ||
+ | </ | ||
+ | |||
+ | Pour configurer la timezone (le fuseau horaire) ainsi que le changement d' | ||
+ | <code bash> | ||
+ | conf timezone name CET 60 autodst name DST begin every last sunday march ends every last sunday october | ||
+ | </ | ||
====SNMP==== | ====SNMP==== | ||
- | Supprimer la configuration SNMP par défaut (qui n' | + | Supprimer la configuration SNMP par défaut (qui n' |
<code bash> | <code bash> | ||
configure snmpv3 delete community private | configure snmpv3 delete community private | ||
- | disable snmpv3 default-group | ||
disable snmpv3 default-user | disable snmpv3 default-user | ||
</ | </ | ||
- | ====Commandes UNIX-like==== | + | ===OIDs utiles=== |
- | Certaines commandes sont similaires aux UNIX/Linux : | ||
<code bash> | <code bash> | ||
- | cd | + | # useful OIDs / MIB |
- | cp | + | .1.3.6.1.2.1.1.1.0 description système/ |
- | exit | + | .1.3.6.1.2.1.1.3.0 |
- | history | + | |
- | ls | + | .1.3.6.1.4.1.1916.1.1.1.34.1.10.3 idem |
- | mkdir | + | .1.3.6.1.4.1.1916.1.1.1.13.0 primary system image |
- | mv | + | .1.3.6.1.4.1.1916.1.1.1.14.0 secondary system image |
- | nslookup | + | |
- | ping | + | .1.3.6.1.4.1.1916.1.32.1.2.0 utilisation CPU % (sur le master de la stack) |
- | pwd | + | .1.3.6.1.4.1.1916.1.32.1.4.1.9 utilisation CPU |
- | top | + | .1.3.6.1.4.1.1916.1.32.2.2.1.3.X utilisation memory, avec X=num slot |
- | reboot | + | ---- |
- | reboot slot1 # redémarrer le slot1, dans la cas d'un stack | + | .1.3.6.1.4.1.1916.1.32.1.4.1.5.X utilisation CPU 5s (cf : sh cpu-monitoring) avec X=num slot |
- | reboot time < | + | .1.3.6.1.4.1.1916.1.32.1.4.1.6.1 utilisation CPU 10s |
- | rm | + | .1.3.6.1.4.1.1916.1.32.1.4.1.7.1 utilisation CPU 30s |
- | rmdir | + | .1.3.6.1.4.1.1916.1.32.1.4.1.8.1 utilisation CPU 1m |
- | scp2 | + | .1.3.6.1.4.1.1916.1.32.1.4.1.9.1 utilisation CPU 5m |
- | ssh2 | + | .1.3.6.1.4.1.1916.1.32.1.4.1.10.1 utilisation CPU 30m |
- | telnet | + | .1.3.6.1.4.1.1916.1.32.1.4.1.11.1 utilisation CPU 1h |
- | tftp | + | .1.3.6.1.4.1.1916.1.32.1.4.1.12.1 max utilisation CPU |
- | vi | + | |
+ | .1.3.6.1.4.1.1916.1.1.1.40.1 power usage (= "sh power detail | inc 'System Power Usage'" | ||
+ | .1.3.6.1.4.1.1916.1.1.1.8.0 température | ||
+ | |||
+ | .1.3.6.1.4.1.1916.1.4.14.1.1 packets drops | ||
+ | |||
+ | .1.3.6.1.4.1.1916.1.19.1 | ||
+ | |||
+ | |||
+ | .1.3.6.1.2.1.47.1.1.1.1.2.1.* | ||
</ | </ | ||
+ | |||
+ | ====Logs / journaux==== | ||
+ | |||
+ | Affichage des logs | ||
+ | <code bash> | ||
+ | show log messages nvram | ||
+ | show log messages memory-buffer | ||
+ | </ | ||
+ | |||
+ | Configuration des logs | ||
+ | <code bash> | ||
+ | # afficher la configuration des logs | ||
+ | show configuration ems | ||
+ | |||
+ | show log configuration filter " | ||
+ | |||
+ | # logguer les commandes passées sur le switch | ||
+ | enable cli-config-logging | ||
+ | # nouvelle syntaxe à partir d'EXOS v30 | ||
+ | enable cli config-logging | ||
+ | |||
+ | # Active la "CLI history expansion" | ||
+ | # du rappel de commande de bash : (!motif_rechch: | ||
+ | enable cli history expansion permanent | ||
+ | |||
+ | # lister toutes les familles de log possible | ||
+ | show log components | ||
+ | |||
+ | # filtrer les alertes | ||
+ | configure log filter DefaultFilter add events All severity warning | ||
+ | |||
+ | # Voir les compteurs de log par catégorie | ||
+ | show log counters All include | ||
+ | |||
+ | # ajouter une catégorie | ||
+ | configure log filter DefaultFilter add events Kern.Info | ||
+ | |||
+ | # configurer un rsyslog | ||
+ | configure log target syslog 10.1.1.24: | ||
+ | enable log target syslog 10.1.1.24: | ||
+ | |||
+ | # modifier le format des messages de log | ||
+ | configure log target syslog 10.1.1.24: | ||
+ | |||
+ | # activer l' | ||
+ | enable log display | ||
+ | # activer l' | ||
+ | enable log target session | ||
+ | </ | ||
+ | |||
+ | Pour censurer certains messages de log inévitables et polluant, on peut les exclure des journaux en les filtrant ; par exemple pour exclure les messages de STP contenant "STP Domain tag 1" : | ||
+ | <code bash> | ||
+ | configure log filter DefaultFilter add exclude events STP.InBPDU.Drop strict-match string "STP Domain tag 1" | ||
+ | </ | ||
+ | |||
====Firmware==== | ====Firmware==== | ||
Line 175: | Line 507: | ||
* via scp | * via scp | ||
+ | Depuis le commutateur : | ||
<code bash> | <code bash> | ||
scp2 user@host: | scp2 user@host: | ||
+ | install image summitX-22.2.1.5.xos secondary | ||
+ | use image secondary | ||
+ | [ use configuration secondary ] | ||
</ | </ | ||
- | Une fois l' | + | Une fois l' |
<code bash> | <code bash> | ||
- | use image partition | + | show switch | inc "Image Selected" |
+ | |||
+ | # la modifier si besoin | ||
+ | use image partition | ||
# puis redémarrer | # puis redémarrer | ||
Line 187: | Line 526: | ||
</ | </ | ||
+ | ===Erreurs rencontrées=== | ||
+ | * '' | ||
+ | Se produit au milieu du transfert scp pour télécharger l' | ||
+ | |||
+ | Il faut donc relancer le scp et cela finit par fonctionner ! | ||
+ | |||
+ | * '' | ||
+ | L' | ||
+ | |||
+ | * '' | ||
+ | L' | ||
+ | ====Commandes UNIX-like==== | ||
+ | |||
+ | Certaines commandes sont similaires aux UNIX/Linux : | ||
+ | <code bash> | ||
+ | cd | ||
+ | cp | ||
+ | exit | ||
+ | history | ||
+ | ls | ||
+ | mkdir | ||
+ | mv | ||
+ | nslookup | ||
+ | ping | ||
+ | pwd | ||
+ | top | ||
+ | reboot | ||
+ | | ||
+ | | ||
+ | rm | ||
+ | rmdir | ||
+ | scp2 | ||
+ | ssh2 | ||
+ | telnet | ||
+ | tftp | ||
+ | vi | ||
+ | </ | ||
+ | |||
+ | |||
+ | =====Debug / tech-support===== | ||
+ | |||
+ | <code bash> | ||
+ | # snapshot pour le support | ||
+ | show tech-support | ||
+ | |||
+ | # alternative : enregistrement dans le fichier : / | ||
+ | show tech-support all logto file | ||
+ | # alternative 2 : les envoyer directement sur un serveur tftp | ||
+ | upload tech-support vr " | ||
+ | |||
+ | # tester les ASICs et teste les ports (packet loopback test). Attention cela reboot le switch ! | ||
+ | # normal et extended testent les mêmes fonctions mais le second de façon plus approfondie (il prend 5 min env.). | ||
+ | run diagnostics [ extended | normal ] | ||
+ | # Performs a BERT on the stacking ports and reboots the switch : | ||
+ | run diagnostics stack-port | ||
+ | |||
+ | # voir les modules consommant de la mémoire (permet d' | ||
+ | debug hal show sys-health-check | ||
+ | |||
+ | # augmenter la verbosité de certaines fonctions (XXX=fdb, deviceInfo, linkInfo, portStats, etc...) | ||
+ | debug hal show platform XXX | ||
+ | |||
+ | # autres commandes utiles | ||
+ | show log messages nvram | ||
+ | show log messages memory | ||
+ | show debug system-dump [slot X] | ||
+ | # afficher l' | ||
+ | show cli journal | ||
+ | |||
+ | # voir la table d' | ||
+ | debug hal show fdb | ||
+ | # tip : trouver l' | ||
+ | show switch | inc " | ||
+ | # alternative : | ||
+ | debug hal show fdb | inc CPU | ||
+ | |||
+ | # afficher les compteurs de chaque VLAN | ||
+ | show l2stats | ||
+ | [..] | ||
+ | Bridge interface on VLAN Default: | ||
+ | Total number of packets to CPU = 168659060. | ||
+ | Total number of packets learned = 145377870. | ||
+ | Total number of IGMP control packets snooped = 3979337. | ||
+ | Total number of IGMP data packets switched = 3998431. | ||
+ | Total number of MLD control packets snooped = 0. | ||
+ | Total number of MLD data packets switched = 0. | ||
+ | |||
+ | # alternative à "sh l2stats" | ||
+ | run script spath-stats.py | ||
+ | </ | ||
+ | ====Détecter une boucle==== | ||
+ | |||
+ | Trouver les ports qui génèrent une boucle avec l'ELRP (Extreme Loop Recovery Protocol) (c'est un test unique et non un service en arrière-plan) : | ||
+ | <code bash> | ||
+ | clear l2stats | ||
+ | # après quelques secondes, afficher les compteurs de chaque VLAN | ||
+ | show l2stats | ||
+ | |||
+ | # à effectuer sur le VLAN qui possède le plus de paquets remontés à la CPU | ||
+ | # src: https:// | ||
+ | enable elrp-client | ||
+ | configure elrp-client one-shot < | ||
+ | # après le test | ||
+ | disable elrp-client | ||
+ | </ | ||
+ | |||
+ | ====tech-support collector==== | ||
+ | |||
+ | Dans la conf usine on s' | ||
+ | <code bash> | ||
+ | configure tech-support collector 12.38.14.200 | ||
+ | </ | ||
+ | [[https:// | ||
+ | <code bash> | ||
+ | configure tech-support delete collector 12.38.14.200 | ||
+ | | ||
+ | |||
+ | disable tech-support collector | ||
+ | configure tech-support delete collector 12.38.14.200 tcp-port 1 from 10.0.0.1 | ||
+ | |||
+ | # vérification : | ||
+ | show tech-support collector | grep "Tech Support Collector" | ||
+ | Tech Support Collector: | ||
+ | </ | ||
=====Configuration===== | =====Configuration===== | ||
Line 194: | Line 657: | ||
* **nopassword.cfg** : le fichier de configuration amputée du mot de passe admin, utilisé pour faire un password recovery (voir plus loin) | * **nopassword.cfg** : le fichier de configuration amputée du mot de passe admin, utilisé pour faire un password recovery (voir plus loin) | ||
* par défaut les fichiers de policy/ | * par défaut les fichiers de policy/ | ||
+ | |||
+ | Pour lister la configuration : | ||
+ | <code bash> | ||
+ | show configuration | ||
+ | |||
+ | # En incluant les paramètres par défaut (non affichés sinon) | ||
+ | show configuration detail | ||
+ | |||
+ | # Afficher un paragraphe de configuration (ici le spanning-tree) | ||
+ | show configuration stp | ||
+ | |||
+ | # Utiliser un filtre de famille de fonctionnalités (ici la partie DNS/ | ||
+ | show configuration nettools | ||
+ | </ | ||
+ | |||
====Sauvegarde==== | ====Sauvegarde==== | ||
+ | Sauvegarder la configuration | ||
+ | <code bash> | ||
+ | save configuration | ||
+ | Do you want to save configuration to primary.cfg and overwrite it? (y/N) Yes | ||
+ | </ | ||
+ | |||
+ | Sauvegarder la config courante dans la config secondaire : | ||
+ | <code bash> | ||
+ | save configuration secondary | ||
+ | </ | ||
+ | |||
+ | Exporter la configuration | ||
<code bash> | <code bash> | ||
# sauvegarde locale dans le fichier lisible "/ | # sauvegarde locale dans le fichier lisible "/ | ||
Line 213: | Line 703: | ||
</ | </ | ||
- | ====factory-reset==== | + | ====Restauration==== |
+ | On peut injecter une configuration au format " | ||
<code bash> | <code bash> | ||
- | # reset tout sauf les comptes admin, | + | # Télécharger |
- | unconfigure switch [all] | + | tftp get 10.1.1.24 save.xsf |
+ | | ||
+ | |||
+ | # Charger cette conf : | ||
+ | load script save | ||
+ | |||
+ | # Sauvegarder | ||
+ | # par défaut de ce switch | ||
+ | save config | ||
+ | y | ||
</ | </ | ||
+ | |||
+ | On peut aussi directement utiliser le fichier récupérer par TFTP comme sa conf par défaut : | ||
+ | <code bash> | ||
+ | # Télécharger la sauvegarde | ||
+ | tftp get 10.1.1.24 save.xsf | ||
+ | | ||
+ | |||
+ | # L' | ||
+ | use configuration save.xsf | ||
+ | |||
+ | # redémarrer sans sauver la config | ||
+ | # (pour ne pas écrire la primary courante sur la save fraichement restaurée) | ||
+ | reboot | ||
+ | n | ||
+ | </ | ||
+ | |||
+ | src : https:// | ||
+ | ====factory-reset==== | ||
+ | |||
+ | Il existe plusieurs façons de déconfigurer un switch, décrites ici : https:// | ||
+ | |||
+ | __Déconfigurations non destructrices (ne supprime pas les fichiers de conf en nvram) :__ | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | __Déconfigurations destructrices :__ | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | A noter que dans tous les cas, lorsqu' | ||
+ | </ | ||
=====Ports / VLANs===== | =====Ports / VLANs===== | ||
- | Créer un VLAN | + | Configurer la vitesse/ |
+ | <code bash> | ||
+ | configure port 2 auto off speed 100 duplex full | ||
+ | </ | ||
+ | |||
+ | Créer un VLAN : | ||
<code bash> | <code bash> | ||
create vlan TEST-VISIO | create vlan TEST-VISIO | ||
Line 247: | Line 784: | ||
configure ports 1:14 display-string " | configure ports 1:14 display-string " | ||
configure ports 1:14 description-string " | configure ports 1:14 description-string " | ||
+ | unconfigure ports 1:14 display-string | ||
# pour partitionner un port (pour un 40Gb compatible, qui nécessite un câble spécifique) | # pour partitionner un port (pour un 40Gb compatible, qui nécessite un câble spécifique) | ||
Line 267: | Line 805: | ||
show port 2 information [ detail ] | show port 2 information [ detail ] | ||
+ | # afficher les compteurs instantanés ou totaux : | ||
+ | show port 2 utilization [ bandwidth | packets | bytes ] | ||
+ | show port 2 statistics | ||
+ | |||
+ | # afficher les infos de santé du port/du lien : | ||
+ | show port 2 [ anomaly | buffer | collisions | congestion ] | ||
+ | |||
+ | # afficher les erreurs en émission/ | ||
+ | show port 2 [ rxerrors | txerrors ] | ||
+ | |||
+ | # afficher les informations de contrôle de flux (RX/TX pause packets) | ||
+ | show port 2 flow-control [ rx-pauses | tx-pauses ] | ||
+ | |||
+ | # afficher les informations concernant le convertisseur (GBIC/SFP) branché sur le port | ||
+ | sh port 2 transceiver information [ detail ] | ||
+ | </ | ||
+ | |||
+ | Pour effacer les compteurs : | ||
+ | <code bash> | ||
+ | clear counters ports | ||
+ | </ | ||
+ | |||
+ | En cas de congestion ('' | ||
+ | * augmenter la taille du buffer d' | ||
+ | <code bash> | ||
+ | show port 1 buffer | ||
+ | Packet Buffer Allocation for ports in range 1-54 | ||
+ | Total Packet Buffer Size: 4046848 bytes, Not Overcommitted | ||
+ | Total Shared Buffer Size: 3674112 | ||
+ | Port 1 Max Shared Buffer Usage: 734656 bytes (20%) | ||
+ | QP1: Reserved Buffer: 3328 bytes | ||
+ | QP8: Reserved Buffer: 3328 bytes | ||
+ | |||
+ | configure port 1 shared-packet-buffer 100 | ||
+ | </ | ||
+ | * baisser le pourcentage du buffer partagé sur les autres interfaces | ||
+ | * si plusieurs ports provoquent la congestion au niveau de l' | ||
+ | |||
+ | Local fault/ | ||
+ | Quand un port passe DOWN il affiche dans les logs la raison '' | ||
+ | * une **local fault** est détectée par le switch lui-même, souvent dû à trop d' | ||
+ | * **remote fault** est une erreur détectée et signalée par le switch d'en face | ||
+ | |||
+ | |||
+ | <code bash> | ||
# afficher l' | # afficher l' | ||
show vlan 2 | show vlan 2 | ||
Line 283: | Line 866: | ||
sh iparp 10.1.2.201 | sh iparp 10.1.2.201 | ||
VR Destination | VR Destination | ||
- | VR-Default | + | VR-Default |
[..] | [..] | ||
# alternatives : | # alternatives : | ||
Line 291: | Line 874: | ||
</ | </ | ||
+ | [[https:// | ||
+ | <code bash> | ||
+ | debug vlan show vpifs vl-WIFI 2:29 | ||
+ | VLAN: Default, port:2:29, vlanId:1, instance: 50002499, tag: 0, | ||
+ | Ingress: | ||
+ | l2Protos (IDs): 0x0 [PIF: type: | ||
+ | uRPF[-]:0, isTrillAppointedForwarder: | ||
+ | clientUsage: | ||
+ | |||
+ | Egress and Ingres state bit definitions | ||
+ | typedef enum ifIngressState_ { | ||
+ | IF_STATE_ENABLE_LEARNING= | ||
+ | IF_STATE_DISABLE_LEARNING = 0x2, | ||
+ | | ||
+ | | ||
+ | IF_STATE_SLOWPATH_PROCESSING = 0x10, | ||
+ | IF_STATE_IN_BLOCK_ALL = 0x20, | ||
+ | IF_STATE_IN_BLOCK_DATA = 0x40, | ||
+ | IF_STATE_INVALID = 0xffffffff, | ||
+ | } ifIngressState_t; | ||
+ | typedef enum ifEgressState_ { | ||
+ | IF_STATE_FORWARDING = 0x1, | ||
+ | IF_STATE_EG_BLOCK_ALL = 0x2, | ||
+ | IF_STATE_BLOCK_FLOODING = 0x4, | ||
+ | IF_STATE_EG_BLOCK_DATA = 0x8, | ||
+ | IF_STATE_BLOCK_BROAD_CAST = 0x10, | ||
+ | } ifEgressState_t; | ||
+ | Layer 2 protocols , ids and their priorities(lower values have higher precedence | ||
+ | Protocol: SRP , ID: 0x1, Priority: 8001 | ||
+ | Protocol: netLogin , ID: 0x2, Priority: 10001 | ||
+ | Protocol: VRRP , ID: 0x4, Priority: 40001 | ||
+ | Protocol: ESRP , ID: 0x8, Priority: 30001 | ||
+ | Protocol: ELSM , ID: 0x10, Priority: 7001 | ||
+ | Protocol: ETHOAM , ID: 0x20, Priority: 6001 | ||
+ | Protocol: brm , ID: 0x40, Priority: 50001 | ||
+ | Protocol: stp , ID: 0x80, Priority: 9001 | ||
+ | Protocol: ERPS , ID: 0x100, Priority: 10050 | ||
+ | Protocol: EAPS , ID: 0x200, Priority: 20001 | ||
+ | gMacTree[0]: | ||
+ | </ | ||
====jumbo frames==== | ====jumbo frames==== | ||
Line 303: | Line 926: | ||
====Agrégat==== | ====Agrégat==== | ||
- | Créer un agrégat permet de regrouper plusieurs ports physique pour un créer un logique. | + | Créer un **agrégat** permet de regrouper plusieurs ports physique pour un créer un logique. Le premier port (ordre croissant) devient le **master port**, c'est lui qui porte la configuration de l' |
<code bash> | <code bash> | ||
- | # agrégat | + | # créer l'agrégat |
- | configure | + | enable |
- | # => créer l'agrégat | + | |
+ | # ajout d'un 4ème port | ||
+ | configure sharing | ||
# désactiver l' | # désactiver l' | ||
Line 321: | Line 946: | ||
Master | Master | ||
================================================================================ | ================================================================================ | ||
- | 1:1 | + | |
- | | + | |
- | | + | |
- | | + | |
================================================================================ | ================================================================================ | ||
Link State: A-Active, D-Disabled, R-Ready, NP-Port not present, L-Loopback | Link State: A-Active, D-Disabled, R-Ready, NP-Port not present, L-Loopback | ||
Line 338: | Line 963: | ||
Sys-Pri | Sys-Pri | ||
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
- | 1:1 0 0x03e9 02: | + | 1 |
Port list: | Port list: | ||
Line 345: | Line 970: | ||
Port | Port | ||
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
- | 1:1 | + | 1 0 |
- | 1:2 | + | 1 0 |
- | 1:3 | + | 1 0 |
- | 1:4 | + | 1 0 |
================================================================================ | ================================================================================ | ||
Line 382: | Line 1007: | ||
</ | </ | ||
+ | ====mac-locking==== | ||
+ | Le contrôle d' | ||
+ | |||
+ | Exemple rapide de mise en place : | ||
+ | <code bash> | ||
+ | # activation du mac-locking sur tous les ports " | ||
+ | enable mac-locking ports 1-47 | ||
+ | # configuration de l'' | ||
+ | # nb: pas d'' | ||
+ | configure mac-locking ports 1-47 first-arrival limit-learning 1 | ||
+ | # activation du mac-locking | ||
+ | enable mac-locking | ||
+ | |||
+ | # [ phase d'' | ||
+ | |||
+ | # vérifs | ||
+ | show mac-locking stations ports 1-47 | ||
+ | # on limite le nombre d'' | ||
+ | configure mac-locking ports 1-47 static limit-learning 1 | ||
+ | # copie des MAC apprises en static | ||
+ | configure mac-locking ports 1-47 first-arrival move-to-static | ||
+ | # vérifs | ||
+ | show mac-locking ports 1-47 | ||
+ | show mac-locking stations ports 1-47 | ||
+ | # configurer les actions si dépassement de seuil (violation) | ||
+ | configure mac-locking ports 1-47 learn-limit-action disable-port | ||
+ | </ | ||
+ | |||
+ | Vérifications | ||
+ | <code bash> | ||
+ | show mac-locking ports 1-47 | ||
+ | show mac-locking stations ports 1-47 | ||
+ | |||
+ | # ajouter ou supprimer une MAC d'' | ||
+ | configure mac-locking ports 47 static [add | enable | disable] @MAC | ||
+ | </ | ||
=====Spanning-tree===== | =====Spanning-tree===== | ||
En vrac : | En vrac : | ||
<code bash> | <code bash> | ||
- | disable stpd s0 | + | # Configuration de base |
- | enable stpd s0 | + | |
configure stpd s0 priority 16384 | configure stpd s0 priority 16384 | ||
configure stpd s0 mode dot1w | configure stpd s0 mode dot1w | ||
- | enable stpd s0 | ||
- | sh stpd s0 ports | ||
- | |||
configure stpd s0 add vlan Default ports 5:1 dot1d | emistp | pvst-plus | configure stpd s0 add vlan Default ports 5:1 dot1d | emistp | pvst-plus | ||
+ | # (dés)activation du domaine s0 | ||
+ | disable stpd s0 | ||
+ | enable stpd s0 | ||
- | # configurer | + | # Configurer |
# attention cela bloque le port si l'on reçoit un BPDU dessus | # attention cela bloque le port si l'on reçoit un BPDU dessus | ||
# les bridges sous Linux peuvent en générer par exemple | # les bridges sous Linux peuvent en générer par exemple | ||
Line 402: | Line 1062: | ||
</ | </ | ||
- | Debug | + | ====Fast convergence==== |
+ | |||
+ | Lors d'un changement de topology (TC), le switch vide sa table ARP ("// | ||
+ | <code bash> | ||
+ | configure iparp fast-convergence on | ||
+ | |||
+ | show iparp | grep Convergence | ||
+ | Fast Convergence : On | ||
+ | </ | ||
+ | |||
+ | ====Debug / diagnostique==== | ||
+ | |||
+ | Lister l' | ||
<code bash> | <code bash> | ||
- | # lister l' | ||
show stpd s0 ports | show stpd s0 ports | ||
[..] | [..] | ||
- | 1:12 | + | 1:12 |
- | 1:13 | + | 1:13 |
- | # exemple de résultat : PC Linux ponté qui génère des BPDU en 1:12 | + | 1:14 |
- | # et port edge ' | + | # exemple de résultat : PC Linux ponté qui génère des BPDUs en 1:12 |
+ | # | ||
+ | # port bloqué en listening en 1:14 | ||
+ | </ | ||
- | # | + | Afficher la raison du blocage d'un port : |
- | # logs | + | <code bash> |
- | # | + | show stpd s0 ports non-forwarding-reason |
- | # logguer | + | Port State |
+ | ------------------------------------------------------------------------------- | ||
+ | 1:14 LISTENING | ||
+ | </ | ||
+ | |||
+ | Logguer | ||
+ | <code bash> | ||
+ | # changements de topo STP : | ||
+ | configure stpd s0 trap topology-change on | ||
configure stpd s0 trap topology-change edge-ports on | configure stpd s0 trap topology-change edge-ports on | ||
+ | configure stpd s0 trap new-root on | ||
# ajouter des msg de log | # ajouter des msg de log | ||
Line 430: | Line 1113: | ||
</ | </ | ||
- | sources | + | Sources |
* https:// | * https:// | ||
* http:// | * http:// | ||
Line 446: | Line 1129: | ||
- | =====Stack===== | + | =====Access-list===== |
- | Certains modèles sont stackable, jusqu' | + | Les access-list et policy sont enregistrées dans des fichiers plats **.pol** dans le dossier ''/ |
+ | |||
+ | Créer une access-list : | ||
+ | * l' | ||
+ | <code bash> | ||
+ | edit policy internet-in | ||
+ | entry RFC1918_1 { | ||
+ | if match all { source-address 10.0.0.0/8 ;} | ||
+ | then { count rfc1918 ; deny ;} | ||
+ | } | ||
+ | </ | ||
+ | Pour enregistrer le fichier : < | ||
+ | * vérifier la syntaxe : | ||
+ | <code bash> | ||
+ | check policy internet-in | ||
+ | </ | ||
+ | * l' | ||
+ | <code bash> | ||
+ | # appliquer une acl sur un port | ||
+ | configure access-list internet-in port 32 ingress | ||
+ | |||
+ | # appliquer une acl sur un vlan | ||
+ | configure access-list internet-in vlan " | ||
+ | |||
+ | # appliquer une acl sur ttes les itf | ||
+ | configure access-list internet-in any [ ingress | egress ] | ||
+ | |||
+ | # pour supprimer une access-list d'un port: | ||
+ | # (le fichier .pol n'est pas supprimé) | ||
+ | unconfigure access-list internet-in ingress | ||
+ | </ | ||
+ | |||
+ | Si on modifie une access-list déjà appliquée sur un port, il faut la réappliquer : | ||
+ | <code bash> | ||
+ | check policy internet-in | ||
+ | refresh policy internet-in | ||
+ | </ | ||
+ | |||
+ | ====Créer une ACL dynamique==== | ||
+ | |||
+ | <code bash> | ||
+ | create access-list dynamic test-acl " | ||
+ | </ | ||
+ | |||
+ | ====Examples==== | ||
+ | |||
+ | ACL pour bloquer l' | ||
+ | <code bash> | ||
+ | edit policy block-ipv6 | ||
+ | @description "ACL pour bloquer l'IPv6 et compter les paquets matchés" | ||
+ | # 20170323 v1 | ||
+ | # 20170324 v1.1 retouche | ||
+ | entry ipv6 { | ||
+ | if { | ||
+ | protocol ipv6; | ||
+ | } then { | ||
+ | deny; | ||
+ | count c_block-ipv6; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | configure access-list block-ipv6 vlan " | ||
+ | </ | ||
+ | |||
+ | ACL pour bloquer les BPDUs ([[https:// | ||
+ | <code bash> | ||
+ | edit policy <policy name> | ||
+ | entry bpdu { | ||
+ | if { ethernet-destination-address 01: | ||
+ | then { deny; | ||
+ | count bpdu; } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ====Vérifications==== | ||
+ | |||
+ | <code bash> | ||
+ | # Filtrer les lignes de configuration: | ||
+ | show configuration acl | ||
+ | show configuration policy | ||
+ | |||
+ | # afficher les policys configurées | ||
+ | show policy detail | ||
+ | |||
+ | # afficher les compteurs d'une policy (si elle compte les paquets | ||
+ | show access-list counter vlan " | ||
+ | </ | ||
+ | |||
+ | Sources : | ||
+ | * https:// | ||
+ | * http:// | ||
+ | |||
+ | |||
+ | =====Stacking===== | ||
+ | |||
+ | Certains modèles sont stackable, jusqu' | ||
+ | |||
+ | Pré-requis pour monter un stack : tous les switchs doivent avoir : | ||
+ | * la même partition active (primary ou secondary, cf '' | ||
+ | * la même version de firmware ('' | ||
+ | De plus les switchs élligibles pour devenir master (" | ||
Infos en vrac : | Infos en vrac : | ||
- | | + | * l' |
- | | + | * seul le port Mgmt du slot master |
- | * les master-capable doivent avoir le même niveau de licence | + | * tous les ports console sont utilisables |
- | * seul le port Mgmt du slot master est utilisable | + | |
- | * tous les ports console sont utilisable | + | |
* le numéro de slot du master apparaît dans le prompt (ex : **Slot-2 sw-cc-s1.7 #**) | * le numéro de slot du master apparaît dans le prompt (ex : **Slot-2 sw-cc-s1.7 #**) | ||
+ | |||
+ | |||
+ | ====Créer une pile==== | ||
+ | |||
+ | refs: [[https:// | ||
+ | |||
+ | Depuis une conf usine, se logguer sur le port CONsole en " | ||
+ | |||
+ | Vérifier les prérequis : la version, la partition active et la licence doivent être les même sur chaque switch : | ||
+ | <code bash> | ||
+ | show licenses | ||
+ | show version images | ||
+ | show sys | grep Selected | ||
+ | </ | ||
+ | |||
+ | Éteindre les switchs et brancher leurs interfaces de stack (ports 40G éventuellement disponibles via l' | ||
+ | <code bash> | ||
+ | -- slot 1(1) | ||
+ | / | ||
+ | | ||
+ | | ||
+ | \--------------------------------/ | ||
+ | </ | ||
+ | Ceci afin d' | ||
+ | |||
+ | Démarrer chaque switch et activer le stacking ; puis redémarrer : | ||
+ | <code bash> | ||
+ | enable stacking-support | ||
+ | reboot | ||
+ | </ | ||
+ | |||
+ | Vérification : une fois tous les slots redémarrés, | ||
+ | |||
+ | Sur le master uniquement, lancer l' | ||
+ | <code bash> | ||
+ | enable stacking | ||
+ | |||
+ | Execute " | ||
+ | Executing " | ||
+ | For every node in the 4-node stack, this command will: | ||
+ | - enable stacking | ||
+ | - configure a stack MAC address | ||
+ | - choose and configure a slot number (this node will be assigned to slot 1) | ||
+ | - configure redundancy to minimal (slot 1 will be the master node) | ||
+ | - configure the stacking protocol to enhanced | ||
+ | Upon completion, the stack will automatically be rebooted into the new configuration. | ||
+ | Warning: If stacking is already configured, this command will alter that configuration. | ||
+ | Do you wish to proceed? (y/N)Y | ||
+ | </ | ||
+ | |||
+ | Après un reboot automatique des tous les slots, on doit maintenant les retrouver avec la commande : | ||
+ | <code bash> | ||
+ | show stacking | ||
+ | Stack Topology is a Ring | ||
+ | Active Topology is a Ring | ||
+ | Node MAC Address | ||
+ | ------------------ | ||
+ | *00: | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
Commandes en vrac : | Commandes en vrac : | ||
Line 463: | Line 1306: | ||
# affiche la topologie (daisy-chain ou ring), les @ MAC, numéros de slot et les rôles de chaque slot | # affiche la topologie (daisy-chain ou ring), les @ MAC, numéros de slot et les rôles de chaque slot | ||
- | show stacking | + | show stacking |
+ | show stacking | ||
# affiche les ports utiliser pour monter le stack sur le switch sourant | # affiche les ports utiliser pour monter le stack sur le switch sourant | ||
Line 478: | Line 1322: | ||
show version images | show version images | ||
- | # | ||
- | # monter une pile : | ||
- | # | ||
- | # sur tous les switchs | ||
- | enable stacking-support | ||
- | # sur le master uniquement | ||
- | enable stacking | ||
- | configure stacking easy-setup | ||
- | configure stacking slot-number automatic | ||
- | configure stacking priority | ||
# pour re-numéroter le slot 5 (34:56) en 6 | # pour re-numéroter le slot 5 (34:56) en 6 | ||
configure stacking node-address 00: | configure stacking node-address 00: | ||
- | # permet d' | + | # permet d' |
configure stacking slot 2 master-capability on|off | configure stacking slot 2 master-capability on|off | ||
Line 511: | Line 1345: | ||
# forcer une bascule master -> backup (vérifier qu'ils soient sync) | # forcer une bascule master -> backup (vérifier qu'ils soient sync) | ||
run failover | run failover | ||
+ | |||
+ | # afficher les infos sur les nodes | ||
+ | show node detail | ||
+ | Node Slot-1 information: | ||
+ | Node State: | ||
+ | Node Priority: 0 | ||
+ | Sw Health: | ||
+ | Hw Health: | ||
+ | |||
+ | Node Slot-2 information: | ||
+ | Node State: | ||
+ | Node Priority: 0 | ||
+ | Sw Health: | ||
+ | Hw Health: | ||
+ | |||
+ | # afficher les infos sur les liens de stacking ; ici 4 liens 40G pour le stacking mode V320 | ||
+ | debug hal show stacking ports | ||
+ | Stack Port Bundles | ||
+ | ------------------ | ||
+ | SPB 1: Type 5(80G), Status UP | ||
+ | Member [0, | ||
+ | Member [0, | ||
+ | SPB 2: Type 5(80G), Status UP | ||
+ | Member [0, | ||
+ | Member [0, | ||
+ | </ | ||
+ | |||
+ | ====Ajouter un switch dans un stack existant==== | ||
+ | |||
+ | * vérifier les pré-requis | ||
+ | * même version d'EXOS ('' | ||
+ | * même partitions actives | ||
+ | * même niveau de licence ('' | ||
+ | * si le switch provient d'une précédente pile, déconfigurer d' | ||
+ | * qu'il possède des interfaces pour le stacker (QSFP+), comme une carte VIM par exemple ('' | ||
+ | * activer le support du stacking : vérifier '' | ||
+ | * brancher le nouveau switch avec les câbles de stack, le booter et lui passer ces commandes dessus : | ||
+ | <code bash> | ||
+ | configure stacking-support stack-port all selection native | ||
+ | enable stacking | ||
+ | reboot | ||
+ | # (optionnel) pour renuméroter le slot : | ||
+ | configure stacking node-address < | ||
+ | </ | ||
+ | * sur le master : | ||
+ | <code bash> | ||
+ | configure stacking slot < | ||
+ | reboot slot < | ||
+ | synchronize slot < | ||
+ | </ | ||
+ | |||
+ | Vérifications sur le master : | ||
+ | <code bash> | ||
+ | show stacking | ||
+ | show slot | ||
+ | show slot detail | ||
+ | </ | ||
+ | ====Sortir un switch d'un stack==== | ||
+ | |||
+ | * si le protocole de stacking est " | ||
+ | * sur le master, avec <# | ||
+ | <code bash> | ||
+ | unconfigure stacking slot <# | ||
+ | reboot slot <# | ||
+ | </ | ||
+ | * si le master voit toujours le slot ('' | ||
+ | * après le reboot du switch, on peut le débrancher de la stack, en vérifiant que cela ne la scinde pas en deux (c'est le cas si le switch est branché en milieu de pile et que celle-si est en série (Daisy chain ; à l' | ||
+ | <code bash> | ||
+ | show stacking stack-ports | grep Topology | ||
+ | Stack Topology is a Ring | ||
+ | </ | ||
+ | |||
+ | ====Synchroniser les images d'un slot==== | ||
+ | |||
+ | Il peut arriver qu'une stack monte avec une image active sur des partitions différentes entre plusieurs slots ; par exemple : | ||
+ | <code bash> | ||
+ | show switch | ||
+ | [..] | ||
+ | Slot: | ||
+ | ------------------------ | ||
+ | Current State: | ||
+ | |||
+ | Image Selected: | ||
+ | Image Booted: | ||
+ | Primary ver: 30.7.1.1 | ||
+ | patch1-23 | ||
+ | Secondary ver: 30.2.1.8 | ||
+ | | ||
+ | </ | ||
+ | |||
+ | On voit que la version 30.7.1.1 est installé sur des partitions différentes : primaru sur le slot1 et secondary sur le slot 2. Cela fonctionne, mais les montées de versions génèrent une erreur : '' | ||
+ | <code bash> | ||
+ | install image inactive slot 2 | ||
+ | This will overwrite the image installed on the secondary partition with the image installed on the primary partition. | ||
+ | Do you want to proceed? (y/N) Yes | ||
+ | | ||
+ | Image installed to the secondary partition successfully. | ||
+ | </ | ||
+ | |||
+ | Puis définir cette partition comme active : | ||
+ | <code bash> | ||
+ | use image primary slot 2 | ||
+ | |||
+ | # vérification: | ||
+ | show slot 2 detail | grep ary | ||
+ | Image Selected: | ||
+ | Image Booted: | ||
+ | | ||
+ | | ||
+ | |||
+ | # Puis, rebooter: | ||
+ | reboot | ||
+ | |||
+ | # après reboot: | ||
+ | show switch | ||
+ | [..] | ||
+ | Slot: | ||
+ | ------------------------ | ||
+ | Current State: | ||
+ | |||
+ | Image Selected: | ||
+ | Image Booted: | ||
+ | Primary ver: 30.7.1.1 | ||
+ | patch1-23 | ||
+ | Secondary ver: 30.2.1.8 | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ====Liens==== | ||
+ | * [[https:// | ||
+ | * et particulièrement : [[https:// | ||
+ | ====Divers==== | ||
+ | |||
+ | Afficher les compteurs des ports de la stack : | ||
+ | <code bash> | ||
+ | show port stack-ports rxerrors no-refresh | ||
+ | show port stack-ports txerrors no-refresh | ||
+ | </ | ||
+ | |||
+ | Se connecter à slot (5, dans l' | ||
+ | <code bash> | ||
+ | # se connecter sur le premier slot, puis lancer une session telnet interne : | ||
+ | telnet slot 5 | ||
+ | </ | ||
+ | |||
+ | Modifier l' | ||
+ | <code bash> | ||
+ | configure stacking node-address " | ||
+ | </ | ||
+ | |||
+ | =====packet capture===== | ||
+ | |||
+ | Pour réaliser une capture de paquets (sniff / tcpdump-like) | ||
+ | <code bash> | ||
+ | debug packet capture ports 8 on vlan default cmd-args "-c 100" | ||
+ | </ | ||
+ | |||
+ | ([[https:// | ||
+ | |||
+ | |||
+ | =====Routage===== | ||
+ | |||
+ | <code bash> | ||
+ | # Afficher la configuration IP : | ||
+ | show ipconfig | ||
+ | |||
+ | # Déclarer une route statique | ||
+ | config iproute add 10.1.8.x/24 10.1.10.1 | ||
+ | |||
+ | # Déclarer la route par défaut | ||
+ | config iproute add default 10.1.1.1 | ||
+ | |||
+ | # Activer le routage de VLAN | ||
+ | # NB : il faut activer le routage sur le VLAN ingress et egress (source et destination) : | ||
+ | # ou ne pas préciser de VLAN pour tous les router | ||
+ | enable ipforwarding [ vlan ingress ] | ||
+ | enable ipforwarding [ vlan egress ] | ||
+ | |||
+ | # Déclarer un " | ||
+ | # ne repartent par la route par défaut | ||
+ | configure iproute add blackhole 192.168.0.0/ | ||
+ | </ | ||
+ | |||
+ | Diagnostique : | ||
+ | <code bash> | ||
+ | # résoudre une IP : | ||
+ | rtlookup 8.8.8.8 | ||
+ | Ori Destination | ||
+ | #s | ||
+ | </ | ||
+ | ====BGP==== | ||
+ | |||
+ | Le BGP n'est activé qu'à partir d'une licence **Core**. | ||
+ | |||
+ | Exemple de configuration BGP simple et exhaustive : | ||
+ | * pré-requis : création des interfaces vlans sous-jascentes avec au moins un port attribué, activation du routage | ||
+ | <code bash> | ||
+ | # création du VR dédié au BGP | ||
+ | create vr " | ||
+ | configure vr VR-Default del ports 15 | ||
+ | configure vr VR-BGP add ports 15 | ||
+ | # activation du BGP sur le VR-BGP | ||
+ | configure vr VR-BGP add protocol bgp | ||
+ | |||
+ | # on entre sur le VR pour le reste de la conf | ||
+ | vr VR-BGP | ||
+ | |||
+ | # création du VLAN d' | ||
+ | create vlan " | ||
+ | configure vlan Vl-BGP description " | ||
+ | configure vlan Vl-BGP tag 6 | ||
+ | configure vlan Vl-BGP add ports 15 untagged | ||
+ | configure vlan Vl-BGP ipaddress 10.55.6.93 255.255.255.254 | ||
+ | enable ipforwarding vlan Vl-BGP | ||
+ | |||
+ | # création d'une interface de loopback | ||
+ | create vlan " | ||
+ | enable loopback-mode vlan lo0 | ||
+ | configure vlan lo0 ipaddress 10.24.255.1 255.255.255.255 | ||
+ | enable ipforwarding vlan lo0 | ||
+ | </ | ||
+ | |||
+ | * Configuration BGP | ||
+ | <code bash> | ||
+ | configure bgp AS-number 64512 | ||
+ | configure bgp routerid 10.24.255.1 | ||
+ | # préfixes annoncés | ||
+ | configure bgp add network 10.24.255.1/ | ||
+ | # déclaration du peer | ||
+ | create bgp neighbor 10.55.6.92 remote-AS-number 64513 | ||
+ | configure bgp neighbor 10.55.6.92 description " | ||
+ | enable bgp neighbor 10.55.6.92 | ||
+ | enable bgp | ||
+ | </ | ||
+ | |||
+ | On peux ajouter une protection par mot de passe MD5 : | ||
+ | <code bash> | ||
+ | configure bgp neighbor 10.55.6.92 password encrypted "# | ||
+ | </ | ||
+ | |||
+ | Ainsi qu'une route-map pour contrôler les annonces reçues : | ||
+ | <code bash> | ||
+ | edit policy BGP-in | ||
+ | | ||
+ | # on ne permet que le préfixe 10.24.255.2/ | ||
+ | entry lo0-BGP-den-face { | ||
+ | if { nlri 10.24.255.2/ | ||
+ | then { permit; } | ||
+ | } | ||
+ | entry deny_all { | ||
+ | if { nlri 0.0.0.0/0; } | ||
+ | then { deny; } | ||
+ | } | ||
+ | |||
+ | # application de la routemap | ||
+ | configure bgp neighbor 10.55.6.92 route-policy in BGP-in | ||
+ | </ | ||
+ | |||
+ | Après la MAJ d'une policy, pour qu' | ||
+ | <code bash> | ||
+ | check policy BGP-in.pol | ||
+ | refresh policy BGP-in | ||
+ | configure bgp soft-reconfiguration | ||
+ | </ | ||
+ | |||
+ | Vérifications : | ||
+ | <code bash> | ||
+ | show vr | ||
+ | Virtual | ||
+ | Router | ||
+ | -------------------------------------------------------------------------------- | ||
+ | VR-Default | ||
+ | VR-BGP | ||
+ | # (Le flag " | ||
+ | |||
+ | # (en se connectant sur le bon VR !) | ||
+ | ping < | ||
+ | show bgp | ||
+ | show bgp neighbor | ||
+ | show bgp routes all | ||
+ | show bgp routes detail all | ||
+ | |||
+ | show iproute origin bgp | ||
+ | |||
+ | # afficher les routes reçues/ | ||
+ | show bgp neighbor 10.55.200.92 received-routes all | ||
+ | Routes: | ||
+ | | ||
+ | ------------------------------------------------------------------------------------------------------ | ||
+ | *> | ||
+ | *> | ||
+ | *> | ||
+ | *> | ||
+ | *> | ||
+ | *>? | ||
+ | |||
+ | show bgp neighbor 10.55.200.92 accepted-routes all | ||
+ | show bgp neighbor 10.55.200.92 rejected-routes all | ||
+ | ! | ||
+ | show bgp neighbor 10.55.200.92 transmitted-routes all | ||
+ | Advertised Routes: | ||
+ | | ||
+ | ---------------------------------------------------------------------------------------- | ||
+ | > | ||
+ | > | ||
+ | > | ||
+ | |||
+ | show bgp neighbor 10.55.200.92 suppressed-routes all | ||
+ | </ | ||
+ | |||
+ | ===Suppression de la conf BGP=== | ||
+ | |||
+ | <code bash> | ||
+ | configure bgp delete network 10.24.255.1/ | ||
+ | delete bgp neighbor 10.55.6.92 | ||
+ | # mais surtout : | ||
+ | configure bgp router-id 0.0.0.0 | ||
+ | configure bgp AS-number 0 | ||
+ | </ | ||
+ | |||
+ | ===Tips=== | ||
+ | |||
+ | * si un préfixe est déclaré en BGP mais pas transmis (cf '' | ||
+ | ====VRRP==== | ||
+ | |||
+ | <code bash> | ||
+ | # Configure VRRP | ||
+ | create vrrp Data vrid 1 | ||
+ | config vrrp Data vrid 1 add 10.1.10.1 | ||
+ | create vrrp vlan Voice vrid 2 | ||
+ | config vrrp Voice vrid 2 add 2 10.1.20.1 | ||
+ | enable vrrp | ||
+ | |||
+ | show vrrp | ||
</ | </ | ||
Line 549: | Line 1717: | ||
</ | </ | ||
+ | ====Bootreplay==== | ||
+ | |||
+ | ~ip-helper DHCP ; permet de router des paquets DHCP vers un serveur sur un autre réseau. | ||
+ | |||
+ | <code bash> | ||
+ | # enable bootprelay for every VLAN | ||
+ | enable bootprelay | ||
+ | # or just for the upstream and downstream VLANs | ||
+ | enable bootprelay vlan data | ||
+ | enable bootprelay vlan backbone | ||
+ | # either way, add the IP address of the DHCP server | ||
+ | config bootprelay add 10.1.30.254 | ||
+ | # To disable BOOTP relay on one or more VLANs, use the following command: | ||
+ | disable bootprelay vlan data | ||
+ | # To see the bootprelay configuration and statistics | ||
+ | show bootprelay | ||
+ | </ | ||
+ | |||
+ | ====MAC-tracking==== | ||
+ | |||
+ | Cas d' | ||
+ | |||
+ | Pour voir les modules consommant de la mémoire : | ||
+ | <code bash> | ||
+ | debug hal show sys-health-check | ||
+ | [..] | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | //Custom type 24 et 25// sont des suppressions et ajouts dans la FDB (table d' | ||
+ | |||
+ | C'est donc un problème d' | ||
+ | <code bash> | ||
+ | configure fdb mac-tracking ports all | ||
+ | configure log filter " | ||
+ | |||
+ | # et éventuellement | ||
+ | configure log filter " | ||
+ | configure log filter " | ||
+ | </ | ||
+ | |||
+ | Pour trouver les adresses MAC et les ports, voir les logs : | ||
+ | <code bash> | ||
+ | show log messages memory-buffer | ||
+ | </ | ||
+ | |||
+ | Pour info, on peut aussi activer les TRAP SNMP (mais attention au flood !) pour récupérer les infos sur un serveur externe : | ||
+ | <code bash> | ||
+ | enable snmp traps fdb mac-tracking | ||
+ | </ | ||
+ | |||
+ | Une fois trouvée la source du problème (l' | ||
+ | <code bash> | ||
+ | configure log filter " | ||
+ | configure fdb mac-tracking delete ports all | ||
+ | </ | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | ====Bloqué en " | ||
+ | |||
+ | Un switch peut être bloqué au boot , avec le message '' | ||
+ | * soit parce qu' | ||
+ | * soit parce que le switch est master-capable et possède une licence inférieure aux autres switchs master-capable de la stack : dans le cas suivant il s'agit du slot 4 : | ||
+ | <code bash> | ||
+ | show stacking configuration | ||
+ | [blabla] | ||
+ | Node | ||
+ | MAC Address | ||
+ | *00: | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | Dans la commande suivante on voit que le dernier switch (slot 4) possède une licence **Edge** alors que les autres n'en ont pas (et, de fait, bénéficient d'une **Adv. Edge** supérieure). Pour corriger cela il faut supprimer le licence du slot 4 : | ||
+ | <code bash> | ||
+ | unconfigure stacking license-level slot 4 | ||
+ | reboot slot 4 | ||
+ | </ | ||
+ | |||
+ | ====MAC 00-E0-2B-00-00-01 moved==== | ||
+ | |||
+ | Sur certains switch il est possible de surveiller et remonter les adresses MAC changeant de port, c'est le cas des châssis S4 par exemple. Cela permet de mettre en lumière des problèmes les problèmes de configuration sur le réseau (STP, agrégats, etc...). | ||
+ | |||
+ | Dans le cas de l' | ||
+ | <code bash> | ||
+ | AddrNtfy[2]MAC: | ||
+ | AddrNtfy[2]MAC: | ||
+ | </ | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Pour résoudre le problème, il faut désactiver le protocole en mousse, activé par défaut sur les EXOS : | ||
+ | <code bash> | ||
+ | disable edp port all | ||
+ | </ | ||
+ | |||
+ | ====BOOTPrelay==== | ||
+ | |||
+ | Comme chez Cisco & consorts, il est possible de relayer les paquets broadcastés sur un réseau (VLAN) vers une adresse IP unicast située sur un autre réseau (VLAN). C'est nécessaire en DHCP/BOOTP par exemple, si le serveur DHCPd est centralisé et adresse plusieurs réseaux clients. Chez Cisco/ | ||
+ | <code bash> | ||
+ | configure bootprelay add 10.0.0.1 [ vr VR-Default ] | ||
+ | enable bootprelay ipv4 vlan LAN-clients | ||
+ | enable bootprelay ipv4 vlan ico-vers-DHCPd | ||
+ | </ | ||
+ | NB : à noter qu'il faut activer le bootprelay à la fois que le VLAN ingress (côté clients) et egress (côté serveur DHCP), même si le serveur DHCP n'est adressé dans un VLAN directement connecté sur ce routeur. | ||
+ | NB2 : bien sûr puisque cela implique du routage, cela n'est possible qu'en activant l' '' | ||
+ | <code bash> | ||
+ | enable ipforwarding vlan LAN-clients | ||
+ | enable ipforwarding vlan ico-vers-DHCPd | ||
+ | |||
+ | # le serveur DHCPd doit être joignable également | ||
+ | rtlookup 10.0.0.1 | ||
+ | Ori Destination | ||
+ | #s | ||
+ | </ | ||
+ | |||
+ | ====Conduit error==== | ||
+ | |||
+ | Lorsqu' | ||
+ | <code bash> | ||
+ | show ports stack-ports txerrors no-refresh | ||
+ | Port Tx Error Monitor | ||
+ | Port Link Tx Tx Tx Tx | ||
+ | State | ||
+ | ================================================================================ | ||
+ | 1:1 | ||
+ | 1:2 | ||
+ | 2:1 | ||
+ | 2:2 | ||
+ | ================================================================================ | ||
+ | ! | ||
+ | show ports stack-ports rxerrors no-refresh | ||
+ | Port Rx Error Monitor | ||
+ | Port Link | ||
+ | State Crc Over Under | ||
+ | ================================================================================ | ||
+ | 1:1 | ||
+ | 1:2 | ||
+ | 2:1 | ||
+ | 2:2 | ||
+ | ================================================================================ | ||
+ | Link State: A-Active, R-Ready, NP-Port Not Present L-Loopback | ||
+ | </ | ||
+ | Ici, tout va bien. | ||
+ | |||
+ | src: [[https:// | ||
+ | =====Ressources===== | ||
+ | |||
+ | * [[https:// | ||
informatique/extreme_networks.txt · Last modified: 2023/12/21 15:11 by pteu