This is an old revision of the document!
Table of Contents
Extreme Networks / EXOS
Remarques générales
Par défaut les switchs sont configurés avec 2 VRs (virtuals router), chacun doté d'une table de routage étanche :
- VR-Mgmt, le VR de management avec le port d'admin (Mgmt), dont le vlan est 4095
- VR-Default, celui dans lequel tous les autres ports sont configurés
Pour les versions 16 et antérieures, le SSH est une fonctionnalité optionnelle, installable via un paquet téléchargeable dans le “download center” du site officiel (en saisissant le serial d'un équipement).
Par défaut les résultats de commandes s'affichent page par page ; pour afficher tout le retour en une seule fois (pour supprimer les “Press <SPACE> to continue or <Q> to quit: ~more” (terminal length
chez Cisco)) :
disable clipaging
enable clipaging
Licences
Certaines fonctionnalités sont restreintes à un certain niveau de licence.
Procédure pour changer la licence d'un stack :
# on enlève la restriction de licence sur le slot4 (s'il y en a une) unconfigure stacking license-level slot 4 # pour chaque slot Backup/Standby, on installe une licence telnet slot 2 enable license xxxx-xxxx-xxxx-xxxx-xxxx quit [etc] # puis le master (slot 1) enable licence xxxx-xxxx-xxxx-xxxx-yyyy # on reboot les slots qui avaient une licence limitante reboot slot 4 # vérifier le bon fonctionnement de la pile avec ces nouvelles licences show licenses # au pire reboot stack-topology
Système
Hardware
La commande show system
renvoie beaucoup d'informations en passant la liste de commandes suivante :
show switch # modèle, infos SNMP, heure, uptime show version # version firmware, SN, liste des modules show temperature # température des sondes show power # alimentation show fans # vitesses des ventilateurs show odometers # temps depuis la mise en prod
Commandes avancées :
# voir les détails hardware du switch debug hal show version [ slot X ] Slot 1 Version Information: Linux version: unknown Link date: Built by: Branch : 22.2.1.5 Version: 22.2.1.5 Card type: X460G2-24t-10G4 rev 3 MAC-0: Unknown Device(b541) rev (11) CPU Core: Cavium Octeon II V0.1 CPU Speed: 1000 MHz CPU Bus Speed: 533 MHz CPU Memory Size: 1024 MB Alternate Bootrom Version: 1.0.2.1** (1.0.0.24) Default Bootrom Version: 1.0.2.1** (1.0.0.24) Active Bootrom: default Dillinger Version: 0** (6) # afficher les informations d'un GBIC/SFP debug hal show optic-info slot 1 port 52 Port 52 SFP or SFP+: SFP+ Signal: present TX Fault: no SFP/SFP+ Vendor: Siemon SFP/SFP+ Part Number: 908154-10-01 SFP/SFP+ Serial Number: 1350X-40123 SFP/SFP+ Manufacture Date: 131224 SFP/SFP+ Type: SFP/SFP+ Connector: Copper pigtail Type: 1 meter QSFP+ to SFP+ Fan Out Passive Copper Cable Supported: yes Wavelength: 0
Management
# Afficher et modifier la configuration de l'admin du switch (SSH, TELNET, idle-timeout, etc)
show management configure idletimeout [0-240 min]
Lister les processus
show process # (re)lancer un processus (par ex le SSHd) start process "exsshd" restart process "exsshd"
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) :
configure banner before-login save-to-configuration Unauthorized access to this equipment is prohibited.
Vérification :
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 :
# activer le serveur SSH enable ssh2 [ vr VR-Mgmt ] # configurer le idle-timeout d'une session SSH configure ssh2 idletimeout 240
Vérifications :
show management
Filtrage des accès SSH
Protection de l'accès SSH par ACL (ici nommée protect-ssh)
configure ssh2 access-profile protect-ssh
Auth par clé SSH
Pour authentifier un utilisateur par sa clé SSH :
# enregistrer la clé publique create sshd2 user-key key_toto AAAAB3Nza[..]onL7eow== # l'affecter à un utilisateur configure sshd2 user-key "key_toto" add user toto # Lister les clés configurées sur le switch: show sshd2 user-key
Supervision/Surveillance
top show cpu-monitoring
Gestion des utilisateurs
Créer de nouveaux comptes utilisateurs :
Créer des comptes utilisateurs + mot de passe # autres comptes administrateur : create account admin toto <PWD> # pour les comptes utilisateurs + mot de passe create account user tata <PWD>
Il n'existe que 2 niveaux de privilège, non configurables.
Modifier le mot de passe d'un compte existant :
configure account <utilisateur> <nouveau MDP>
Failsafe account
Le failsafe account est un compte préconfiguré, n'apparaissant pas dans un show conf
, qui permet de se connecter au switch quand on a perdu le mot de passe d'accès au switch (utilisable uniquement via la console ou control fabric par défaut). Son login est “ONE TIME FAILSAFE” par défaut, il affiche un challenge à envoyer au GTAC qui génère un OTP à saisir. Pour le désactiver :
configure failsafe-account deny all
DNS
# 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 :
show dns Number of domain suffixes: 1 Domain Suffix 0: maboite.fr Number of domain servers: 2 Name Server 0: 10.1.1.108 VR-Default Name Server 1: 10.1.1.24 VR-Default
xNTP
On utilise soit NTP soit SNTP (Simple Network Time Protocol).
NTP
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 :
disable ntp configure ntp server delete 10.1.1.108
Vérifications :
show ntp association show ntp sys-info show ntp server show ntp vlan
SNTP
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:
unconfigure sntp-client [ primary | secondary ]
Vérifications
show sntp-client
Pour configurer la timezone (le fuseau horaire) ainsi que le changement d'heure été/d'hiver sur le modèle français :
conf timezone name CET 60 autodst name DST begin every last sunday march ends every last sunday october
SNMP
Supprimer la configuration SNMP par défaut (qui n'apparait pas avec une show conf mais que l'on peut lister avec un show configuration snmp detail
) :
configure snmpv3 delete community private disable snmpv3 default-user
OIDs utiles
# useful OIDs / MIB .1.3.6.1.2.1.1.1.0 description système/version du firmware .1.3.6.1.2.1.1.3.0 uptime du matériel .1.3.6.1.4.1.1916.1.1.1.34.1.10.3 idem .1.3.6.1.4.1.1916.1.1.1.13.0 primary system image .1.3.6.1.4.1.1916.1.1.1.14.0 secondary system image .1.3.6.1.4.1.1916.1.32.1.2.0 utilisation CPU % (sur le master de la stack) .1.3.6.1.4.1.1916.1.32.1.4.1.9 utilisation CPU .1.3.6.1.4.1.1916.1.32.2.2.1.3.X utilisation memory, avec X=num slot ---- .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 .1.3.6.1.4.1.1916.1.32.1.4.1.6.1 utilisation CPU 10s .1.3.6.1.4.1.1916.1.32.1.4.1.7.1 utilisation CPU 30s .1.3.6.1.4.1.1916.1.32.1.4.1.8.1 utilisation CPU 1m .1.3.6.1.4.1.1916.1.32.1.4.1.9.1 utilisation CPU 5m .1.3.6.1.4.1.1916.1.32.1.4.1.10.1 utilisation CPU 30m .1.3.6.1.4.1.1916.1.32.1.4.1.11.1 utilisation CPU 1h .1.3.6.1.4.1.1916.1.32.1.4.1.12.1 max utilisation CPU .1.3.6.1.4.1.1916.1.1.1.40.1 power usage (= "sh power detail | inc 'System Power Usage'" x 10 càd en mW) .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 dot3adAggPortTable/extremeLacpTable : liste des agrégats .1.3.6.1.2.1.47.1.1.1.1.2.1.* liste du matériel (liste les slots si stack ; modules VIM, etc)
Logs / journaux
Affichage des logs
show log messages nvram show log messages memory-buffer
Configuration des logs
# afficher la configuration des logs show configuration ems show log configuration filter "DefaultFilter" # logguer les commandes passées sur le switch enable cli-config-logging # 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:514 vr VR-Default local7 filter DefaultFilter severity Debug-Summary enable log target syslog 10.1.1.24:514 vr VR-Default local7 # modifier le format des messages de log configure log target syslog 10.1.1.24:514 vr VR-Default local7 format timestamp hundredths date yyyy-mm-dd event-name condition priority host-name tag-name # activer l'affichage des logs sur la console enable log display # activer l'affichage des logs sur une session telnet/SSH 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” :
configure log filter DefaultFilter add exclude events STP.InBPDU.Drop strict-match string "STP Domain tag 1"
Firmware
Pour obtenir la version d'EXOS (ici 21.1.1.4) :
show version Switch : 800550-00-05 1531N-01234 Rev 5.0 BootROM: 1.0.2.1 IMG: 21.1.1.4 X460-G2-VIM-2Q-B-1: 800555-00-03 1512N-40846 Rev 3.0 PSU-1 : Internal PSU-1 800515-00-04 1529E-01234 PSU-2 : Internal PSU-2 800515-00-04 1529E-01235 Image : ExtremeXOS version 21.1.1.4 21.1.1.4-patch1-5 by release-manager on Thu Jun 16 14:19:33 EDT 2016 BootROM : 1.0.2.1 Diagnostics : 5.4
Cette commande retourne également la liste des commutateurs de la stack et les modules additionnels, ainsi que leurs serial number respectifs (ici SN=1531N-01234).
MAJ firmware
Envoi du firmware sur la partition secondary du switch :
- via tftp
download image 1.1.1.1 <filename> vr "VR-Default" secondary
- via clé USB
# puis vérifier qu'elle soit reconnue show memorycard # copier le fichier .xos download image memorycard summitX-22.2.1.5.xos secondary Installing to Switch........ Image installed successfully This image will be used only after rebooting the switch!
- via scp
Depuis le commutateur :
scp2 user@host:summitX-22.2.1.5.xos summitX-22.2.1.5.xos install image summitX-22.2.1.5.xos secondary use image secondary [ use configuration secondary ]
Une fois l'image copiée sur le switch, vérifier/modifier l'image sur laquelle on va booter au prochain redémarrage :
show switch | inc "Image Selected" # la modifier si besoin use image partition secondary # puis redémarrer reboot
Commandes UNIX-like
Certaines commandes sont similaires aux UNIX/Linux :
cd cp exit history ls mkdir mv nslookup ping pwd top reboot reboot slot1 # redémarrer le slot1, dans la cas d'un stack reboot time <month> <day> <hour> <min> <sec> # planifier un reboot rm rmdir scp2 ssh2 telnet tftp vi
Debug / tech-support
# snapshot pour le support show tech-support # alternative : enregistrement dans le fichier : /usr/local/tmp/show_tech.log.gz show tech-support all logto file # alternative 2 : les envoyer directement sur un serveur tftp upload tech-support vr "VR-Default" tftp://10.1.1.24 # 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'orienter le debug globalement) 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'historique des commandes passées en CLI show cli journal # voir la table d'adresses MAC debug hal show fdb # tip : trouver l'adresse MAC du switch show switch | inc "System MAC:" # 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.
tech-support collector
Dans la conf usine on s'étonnera de trouver la ligne suivante :
configure tech-support collector 12.38.14.200
Celle-ci ne peut pas être supprimée (!), mais on peut désactiver le “collector” et/ou utiliser un port louche et une IP-source non-routable :
configure tech-support delete collector 12.38.14.200 Error: The default collector 12.38.14.200 cannot be deleted. 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: Disabled
Configuration
Le fichier de configuration est primary.cfg, il est situé dans le dossier par défaut du terminal, à savoir /usr/local/cfg
. Ce dernier contient notamment les fichiers :
- secondary.cfg : le fichier de configuration alternative
- 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/access-list
.pol
Pour lister la configuration :
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/NTP/DHCP relay, etc) show configuration nettools
Sauvegarde
Sauvegarder la configuration
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 :
save configuration secondary
Exporter la configuration
# sauvegarde locale dans le fichier lisible "/usr/local/cfg/config-extr.xsf" save configuration as-script config-extr Do you want to save configuration to script config-extr.xsf? (y/N) Yes # l'envoyer en tftp tftp put 10.1.2.201 vr "VR-Default" config-extr.xsf # on peut lancer la cmd à distance en SSH : ssh user@extr tftp put 10.1.2.201 vr "VR-Default" /usr/local/cfg/config-extr.xsf
# la même chose en une seule ligne de commande et sans l'extension .xsf : upload configuration 10.1.2.201 config-extr vr "VR-Default"
Restauration
On peut injecter une configuration au format “command” (.xsf) sur un nouveau switch, en le chargeant depuis un serveur TFTP :
# Télécharger la sauvegarde tftp get 10.1.1.24 save.xsf Downloading save.xsf to switch... done! # Charger cette conf : load script save # Sauvegarder la nouvelle conf dans le fichier de configuration # par défaut de ce switch (vraisemblablement primary.cfg) : save config y
On peut aussi directement utiliser le fichier récupérer par TFTP comme sa conf par défaut :
# Télécharger la sauvegarde tftp get 10.1.1.24 save.xsf Downloading save.xsf to switch... done! # L'utiliser comme fichier de configuration par défaut 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
factory-reset
Il existe plusieurs façons de déconfigurer un switch, décrites ici : https://gtacknowledge.extremenetworks.com/articles/How_To/Clear-NVRAM-using-EXOS ; dans tous les cas cela nécessitera un reboot du switch.
Déconfigurations non destructrices (ne supprime pas les fichiers de conf en nvram) :
unconfigure switch
réinitialise le switch dans sa configuration par défaut (usine), en conservant son IP de management et ses comptes utilisateurs.unconfigure switch all
réinitialise le switch dans sa configuration par défaut (usine) ; cela supprime son IP de management, le compte de secours (failsafe account) et les paramètres spécifiques (comme la configuration de stacking par ex.). Pour ne supprimer que la configuration en stack, utiliser plutôtunconfigure stacking
.
Déconfigurations destructrices :
unconfigure switch erase all
: supprime les firmwares installés, tous les fichiers de confs ce qui inclus les ACLs et les policies par ex., et le contenu de la mémoire non-volatile. Le switch nécessite une récupération via bootrom pour repartir.unconfigure switch erase nvram
supprime les données dans la mémoire non-volatile ; le switch repartira sur sa partition et configuration “primary”, et perdra ses logs.
A noter que dans tous les cas, lorsqu'un switch démarre sur sa conf usine, il reste inopérant tant que l'assistant de démarrage n'a pas été lancé ; il faut donc s'y connecter au moins une fois en console pour exécuter ou quitter l'assistant, et rendre le switch opérationnel.
Ports / VLANs
Configurer la vitesse/duplex/négociation :
configure port 2 auto off speed 100 duplex full
Créer un VLAN :
create vlan TEST-VISIO
configure vlan TEST-VISIO tag 50
Ajouter un port dedans :
# il faut d'abord retirer le port du précédent vlan s'il est "untagged" configure vlan "Default" delete ports 2 configure vlan "TEST-VISIO" add ports 2 untagged # port trunk (taggué) : on peut utiliser le nom ou le tag du VLAN configure vlan "TEST-VISIO" add ports 48 tagged configure vlan 2 add ports 48 tagged
# Désactiver / activer un port disable port 20 enable port 20 # modifier la description d'un port configure ports 1:14 display-string "desc_courte" configure ports 1:14 description-string "description verbeuse" unconfigure ports 1:14 display-string # pour partitionner un port (pour un 40Gb compatible, qui nécessite un câble spécifique) configure port 1:1 partition # cela va créer 4x port de 10Gb, du 1:1 au 1:4
Commandes de vérification, en vrac :
# afficher les VLANs configurés sur un port (par ex le 2) show port 2 vlan description Untagged Port /Tagged VLAN Name VID VLAN Description -------- -------- -------------------- ---- ------------------------------------ uplk-foo Untagged Default 1 Tagged VLAN2 2 TEST-VISIO 50 # afficher l'état et la conf d'un port 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/réception 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 ]
En cas de congestion (show port congestion
; c'est un compteur egress) on peut :
- augmenter la taille du buffer d'interface (en pourcentage du total disponible pour toutes les interfaces ; par défaut 20%) :
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'ASIC, répartir les congestionnés sur l'ensemble des ASICs disponibles (si c'est un stack, les répartir sur tous les slots)
# afficher l'état et la conf d'un vlan show vlan 2 # interroger le FIB (table d'adresse MAC par port) show fdb bc:30:5b:12:34:56 Mac Vlan Age Flags Port / Virtual Port List -------------------------------------------------------------------------------- bc:30:5b:12:34:56 Default(0001) 0000 dhm 1:14 # alternatives : show fdb ports <port> show fdb vlan <vlan> # interroger la table ARP (association adresse IP <-> MAC) show iparp 10.1.2.201 sh iparp 10.1.2.201 VR Destination Mac Age Static VLAN VID Port VR-Default 10.1.2.201 bc:30:5b:12:34:56 20 NO Default 1 1:14 [..] # alternatives : show iparp bc:30:5b:12:34:56 show iparp ports <port> show iparp vlan <vlan>
Commande de diagnostique bas niveau :
debug vlan show vpifs vl-WIFI 2:29 VLAN: Default, port:2:29, vlanId:1, instance: 50002499, tag: 0, Ingress:0x5, Egress: 0x1, l2 prot priority: 0, cfgSave: TRUE l2Protos (IDs): 0x0 [PIF: type:SLOTPORT linkState:1 phyLinkState:1] uRPF[-]:0, isTrillAppointedForwarder:0 isTrillDesignated:0 clientUsage: 0x10 Egress and Ingres state bit definitions typedef enum ifIngressState_ { IF_STATE_ENABLE_LEARNING= 0x1, IF_STATE_DISABLE_LEARNING = 0x2, IF_STATE_ALLOW_ALL = 0x4, IF_STATE_ALLOW_AUTH_MAC = 0x8, 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]: cnt:0 Addr 2.4.96.00.11.22 src: 0
jumbo frames
Configuration de la MTU :
# sur un port enable jumbo-frame port <all|port_list> # sur un vlan configure ip-mtu <MTU Size (Default 1500)> vlan <VLAN name>
Agrégat
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'agrégat.
# créer l'agrégat avec 3 ports : 1, 2 et 3 en LACP (conseillé) enable sharing 1:1 grouping 1-3 lacp # ajout d'un 4ème port configure sharing 1 add 4 # désactiver l'agrégat : disable sharing 1:1
“Show commandes” :
show sharing Load Sharing Monitor Config Current Agg Min Ld Share Ld Share Agg Link Link Up Master Master Control Active Algorithm Group Mbr State Transitions ================================================================================ 1 LACP 1 L2 1 - R 0 L2 1 - R 0 L2 1 - R 0 L2 1 - R 0 ================================================================================ Link State: A-Active, D-Disabled, R-Ready, NP-Port not present, L-Loopback Minimum Active: (<) Group is down. # active links less than configured minimum Load Sharing Algorithm: (L2) Layer 2 address based, (L3) Layer 3 address based (L3_L4) Layer 3 address and Layer 4 port based (custom) User-selected address-based configuration Custom Algorithm Configuration: ipv4 L3-and-L4, xor Number of load sharing trunks: 1 show lacp [ lag 1 [ detail ] ] Lag Actor Actor Partner Partner Partner Agg Actor Sys-Pri Key MAC Sys-Pri Key Count MAC -------------------------------------------------------------------------------- 1 0 0x03e9 02:04:96:12:34:56 0 0x041c 4 02:04:96:12:34:56 Port list: Member Port Rx Sel Mux Actor Partner Port Priority State Logic State Flags Port -------------------------------------------------------------------------------- 1 0 Current Selected Collect-Dist A-GSCD-- 1052 1 0 Current Selected Collect-Dist A-GSCD-- 2052 1 0 Current Selected Collect-Dist A-GSCD-- 3052 1 0 Current Selected Collect-Dist A-GSCD-- 4052 ================================================================================ show sharing detail show sharing port-based keys show lacp counters # multi-lag = lag multi-chassis show mlag port 10 show mlag peer
Exemple : configurer un sharing sur les ports 20-21 face à un bonding (Linux) en mode=0 (balance-rr) :
enable sharing 20 grouping 20-21 algorithm address-based L2
- ref sur le bonding : https://www.kernel.org/doc/Documentation/networking/bonding.txt
mirroring / monitoring
create mirror toto configure mirror toto add vlan 9 configure mirror to port 1 enable mirror
Exemple de mirrorring 1→many = utilisation d'une loopback obligatoire
enable mirroring to port-list 2:5-2:7 loopback-port 3:1 configure mirroring add port 6:5 ingress
Spanning-tree
En vrac :
# Configuration de base configure stpd s0 priority 16384 configure stpd s0 mode dot1w 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 un port edge # attention cela bloque le port si l'on reçoit un BPDU dessus # les bridges sous Linux peuvent en générer par exemple configure stpd s0 ports link-type edge 1:14 edge-safeguard enable bpdu-restrict
Debug / diagnostique
Lister l'état STP des ports du domaine s0
show stpd s0 ports [..] 1:12 802.1D FORWARDING 20000 eDee-d-S-- 128 800c 40:00:02:04:96:12:11:11 1:13 802.1D FORWARDING 20000 eDee-w-S-- 128 800d 40:00:02:04:96:12:22:22 1:14 802.1D LISTENING 2000 eDappw---- 128 800c 40:00:02:04:96:9b:33:33 # exemple de résultat : PC Linux ponté qui génère des BPDUs en 1:12 # port edge 'normal' en 1:13 # port bloqué en listening en 1:14
Afficher la raison du blocage d'un port :
show stpd s0 ports non-forwarding-reason Port State Reason ------------------------------------------------------------------------------- 1:14 LISTENING Placed in listening state because it is in dispute.
Logguer les événements STP :
# changements de topo STP : configure stpd s0 trap topology-change on # ajouter des msg de log configure log filter "DefaultFilter" add events "STP.State.Topology" configure log filter "DefaultFilter" add events "STP.State.PortState" configure log filter "DefaultFilter" add events "STP.SendClntTopoChgMsg" # vérifier qu'ils sont (I)ncluded = Y dans notre filtre show log configuration filter "DefaultFilter" # pour les msg de type : Debug-(S)ummary, Debug-(V)erbose ou Debug-(D)ata, il faut ajouter cette cmd : enable log debug-mode # voir le nb de msg généré pour un type de log : show log counter "STP.State.Topology"
Sources :
CDP / LLDP
show lldp neighbors
enable cdp ports all
show cdp neigbors
Access-list
Les access-list et policy sont enregistrées dans des fichiers plats .pol dans le dossier /usr/local/cfg
.
Créer une access-list :
- l'éditer (sous vi)
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 : <echap> ; puis :wq
- vérifier la syntaxe :
check policy internet-in
- l'appliquer sur un port ou un vlan (en entrée -in- ou en sortie -out-) :
# 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 "Default" ingress # 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 :
refresh policy internet-in
Créer une ACL dynamique
create access-list dynamic test-acl "protocol icmp;source-address 10.0.20.21/32" "deny"
Examples
ACL pour bloquer l'IPv6
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 "Default" ingress
ACL pour bloquer les BPDUs (source)
edit policy <policy name>.pol entry bpdu { if { ethernet-destination-address 01:80:c2:00:00:00; } then { deny; count bpdu; } }
Vérifications
# 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 "Default" ingress
Sources :
Stacking
Certains modèles sont stackable, jusqu'à 8 par pile. Cela permet de regrouper plusieurs équipements physiques en un équipement logique, administrable avec une seule et même adresse IP. Les ports seront numérotés selon la convention <slot#>:<port#>
(par ex : le port 5 du slot 3 sera le 3:5
). Dans chaque stack, un switch est master (c'est lui qui gère le stack) et au moins un autre est backup (il prendra le relais si le master tombe).
Pré-requis pour monter un stack : tous les switchs doivent avoir :
- la même partition active (primary ou secondary, cf
show switch
) - la même version de firmware (
show version images
)
De plus les switchs élligibles pour devenir master (“master-capable”) doivent avoir le même niveau de licence (show licenses
).
Infos en vrac :
- l'élection se fait uniquement entre “master-capable” ; les non élus passent “Backup”, les autres membres sont “Standby” (cf
show stacking
) ; les switchs non-inclus ou en erreur apparaissent comme “<none>”. - seul le port Mgmt du slot master actif est utilisable
- tous les ports console sont utilisables mais seul celui du master peux modifier la configuration
- le numéro de slot du master apparaît dans le prompt (ex : Slot-2 sw-cc-s1.7 #)
Commandes en vrac :
show 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 configuration # affiche les ports utiliser pour monter le stack sur le switch sourant show stacking-support # Pour configurer le sports utilisés pour monter le stack : # native ce sont les ports des modules additionnel dédiés VIM ; # alternate ce sont des ports classiques convertis en stack-ports configure stacking-support stack-ports all selection [ alternate | native ] # redémarre tous les slots en commençant pas les slaves reboot stack-topology # afficher les firmwares installés sur chaque partition de chaque slot : 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 configure stacking node-address 00:04:96:12:34:56 slot-number 6 # permet d'activer ou désactiver la capacité des sw à être master ou pas configure stacking slot 2 master-capability on|off # # pour démonter un stack : # # reset factory default unconfigure switch disable stacking unconfigure stacking Warning: This command will reset all stacking parameters to factory defaults on the specified node(s). unconfigure stacking-support # re-synchroniser un slot (5 ici) avec le master (cela le fera rebooter) synchronize slot 5 # synchroniser le stack synchronize stacking # forcer une bascule master -> backup (vérifier qu'ils soient sync) run failover
Ajouter un switch dans un stack existant
- vérifier les pré-requis
- même version d'EXOS (
show version
) - même partitions actives
- même niveau de licence (
show licenses
) - si le switch provient d'une précédente pile, déconfigurer d'abord le stacking dessus :
disable stacking
- brancher le nouveau switch avec les câbles de stack, le booter et lui passer ces commande dessus :
configure stacking-support stack-port all selection native enable stacking-support reboot enable stacking reboot # (optionnel) pour renuméroter le slot : configure stacking node-address <mac_node> slot-number <slot#>
- sur le master :
configure stacking slot <slot#> reboot slot <slot#> synchronize slot <slot#>
Vérifications sur le master :
show stacking show slot show slot detail
Sortir un switch d'un stack
- si le protocole de stacking est “alternate” (on peut le vérifier dans la colonne “Select” de la commande
show stacking stack-ports
), passer la commandeunconfigure stacking-support
sur le switch à retirer de la pile. - sur le master, avec <#slot> le numéro de slot à retirer (ou
node-address <mac_du_node>
) :
unconfigure stacking slot <#slot> reboot slot <#slot>
- si le master voit toujours le slot (
show slot
), le flusher en saisissantunconfigure slot <#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'inverse de Ring) :
show stacking stack-ports | grep Topology Stack Topology is a Ring
Liens
-
- et particulièrement : How to create a stack with Summit switches
Divers
Afficher les compteurs des ports de la stack :
show port stack-ports rxerrors no-refresh show port stack-ports txerrors no-refresh
Se connecter à slot (5, dans l'exemple suivant) via un autre slot :
# se connecter sur le premier slot, puis lancer une session telnet interne : telnet slot 5
Modifier l'adresse MAC d'un stack :
configure stacking node-address "00:04:96:00:11:22" mac-address
packet capture
Pour réaliser une capture de paquets (sniff / tcpdump-like)
debug packet capture ports 8 on vlan default cmd-args "-c 100"
(source)
Routage
# 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 "blackhole"/Null0, pour éviter les boucles avec les paquets reçus non gérés # ne repartent par la route par défaut configure iproute add blackhole 192.168.0.0/16
Diagnostique :
# résoudre une IP : rtlookup 8.8.8.8 Ori Destination Gateway Mtr Flags VLAN Duration #s default 10.20.1.2 1 UG---S-um--f- Default 180d:22h:49m:26s
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
# création du VR dédié au BGP create vr "VR-BGP" 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'interco avec le peer create vlan "Vl-BGP" vr VR-BGP configure vlan Vl-BGP description "interco BGP" 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 "lo0" vr VR-BGP enable loopback-mode vlan lo0 configure vlan lo0 ipaddress 10.24.255.1 255.255.255.255 enable ipforwarding vlan lo0
- Configuration BGP
configure bgp AS-number 64512 configure bgp routerid 10.24.255.1 # préfixes annoncés configure bgp add network 10.24.255.1/32 # déclaration du peer create bgp neighbor 10.55.6.92 remote-AS-number 64513 configure bgp neighbor 10.55.6.92 description "peer-BGP" enable bgp neighbor 10.55.6.92 enable bgp
On peux ajouter une protection par mot de passe MD5 :
configure bgp neighbor 10.55.6.92 password encrypted "#$r7jd531s6df4s6f8ze+rENrdw=="
Ainsi qu'une route-map pour contrôler les annonces reçues :
edit policy BGP-in @description "routemap BGP in" # on ne permet que le préfixe 10.24.255.2/32 entry lo0-BGP-den-face { if { nlri 10.24.255.2/32; } 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
Vérifications :
show vr Virtual Number of Number of Flags Router VLANs Ports -------------------------------------------------------------------------------- VR-Default 4 32 bopri-ORS46 VR-BGP 3 3 b-------U46 # (Le flag "b" indique que le BGP est bien activé sur notre VR-BGP) # (en se connectant sur le bon VR !) ping <IP_du_peer> show bgp show bgp neighbor show bgp routes all show bgp routes detail all show iproute origin bgp # afficher les routes reçues/acceptées/rejetées depuis un pair et celles envoyées/supprimées vers un pair show bgp neighbor 10.55.200.92 received-routes all Routes: Destination Peer Next-Hop LPref Weight MED AS-Path ------------------------------------------------------------------------------------------------------ *>i 10.143.6.8/29 10.55.200.92 10.55.200.92 100 1 0 64200 64047 *>i 10.143.8.0/29 10.55.200.92 10.55.200.92 100 1 0 64200 65025 *>i 10.204.255.2/32 10.55.200.92 10.55.200.92 100 1 0 64200 65025 *>i 10.204.255.3/32 10.55.200.92 10.55.200.92 100 1 0 64200 64047 *>i 10.55.200.94/31 10.55.200.92 10.55.200.92 100 1 0 64200 65025 *>? 10.55.200.254/31 10.55.200.92 10.55.200.92 100 1 0 64200 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: Destination Next-Hop LPref Weight MED AS-Path ---------------------------------------------------------------------------------------- >i 10.31.0.24/29 10.55.200.93 0 0 64512 >i 10.204.241.1/32 10.55.200.93 0 0 64512 >i 10.204.255.1/32 10.55.200.93 0 0 64512 show bgp neighbor 10.55.200.92 suppressed-routes all
Suppression de la conf BGP
configure bgp delete network 10.24.255.1/32 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
transmitted-routes
), c'est peut-être qu'il n'est pas connu localement (ou pas avec le bon masque, vérifier avec unshow iproute
) ou qu'il n'est pas permis dans laroute-policy
appliquée en out (pour filtrer nos annonces BGP)
VRRP
# 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
Tips
password recovery
- se connecter en console
- redémarrer le switch
- presser “espace” quand le message suivant apparait : “Press and hold the <spacebar> to enter the bootrom: x”
- on entre en bootROM, la console minimaliste. Saisir :
config none reboot
- au boot, se logger en admin avec un mdp vide
- répondre “No” à toute les sollicitations de l'assistant de conf, puis
vi autoexec.xsf
create account admin toto titi
→ ce fichier, “autoexec.xsf”, sera exécuté automatiquement au prochain boot. Il créera un administrateur “toto”.
- reboot (ne SURTOUT PAS sauvegarder la conf)
- au reboot on se log avec l'utilisateur=toto, mdp=titi
- puis on modifie le mdp du compte admin, on sauvegarde et on reboot
configure account admin <NEW_PWD> save reboot
- au reboot, on se log avec le compte admin ; si ça marche, on n'a plus qu'à supprimer l'utilisateur “toto” et à sauvegarder :
delete account toto save
Bootreplay
~ip-helper DHCP ; permet de router des paquets DHCP vers un serveur sur un autre réseau.
# 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'étude : problème de performance sur un switch.
Pour voir les modules consommant de la mémoire :
debug hal show sys-health-check [..] <Erro:Kern.Card.Error> Slot-6: async queue is growing (900000) type is 704536, customType is 24 <Erro:Kern.Card.Error> Slot-6: async queue is growing (800000) type is 245785, customType is 25
Custom type 24 et 25 sont des suppressions et ajouts dans la FDB (table d'adresses MAC par port).
C'est donc un problème d'adresse mac qui apparait sur différents ports ; pour activer le tracking d'adresses MAC afin de diagnostiquer le flapping :
configure fdb mac-tracking ports all configure log filter "DefaultFilter" add events FDB.MACTracking.MACMove # et éventuellement configure log filter "DefaultFilter" add events FDB.MACTracking.MACAdd configure log filter "DefaultFilter" add events FDB.MACTracking.MACDel
Pour trouver les adresses MAC et les ports, voir les logs :
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 :
enable snmp traps fdb mac-tracking
Une fois trouvée la source du problème (l'adresse MAC qui change de port régulièrement) il faut penser à désactiver le mac tracking car cela consomme des ressources :
configure log filter "DefaultFilter" del events FDB.MACTracking.MACMove
configure fdb mac-tracking delete ports all
Bloqué en "Pending AAA"
Un switch peut être bloqué au boot , avec le message Pending AAA…
affiché sur la console. Plusieurs erreurs peuvent provoquer ce problème, dont notamment un problème de licence :
- soit parce qu'aucun switch de la stack n'est positionné en master-capable. Dans ce cas, saisir comme login : REBOOT AS MASTER-CAPABLE (cf GTAC : Reboot as master-capable).
- 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 :
show stacking configuration [blabla] Node Slot Alternate Alternate MAC Address Cfg Cur Prio Mgmt IP / Mask Gateway Flags Lic *00:04:96:00:00:01 1 1 Auto <none> <none> CcEeMm-Nn -- 00:04:96:00:00:02 2 2 Auto <none> <none> CcEeMm-Nn -- 00:04:96:00:00:03 3 3 Auto <none> <none> CcEeMm-Nn -- 00:04:96:00:00:04 4 4 Auto <none> <none> CcEeMm-Nn Ee
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 :
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'adresse MAC 00:e0:2b:00:00:01, par exemple :
AddrNtfy[2]MAC: 00-E0-2B-00-00-01 moved to port lag.0.1, FID 1#015 AddrNtfy[2]MAC: 00-E0-2B-00-00-01 moved to port tg.2.8, FID 1#015
D'après le GTAC c'est un problème connu lié à l'implémentation du protocole EDP (Extreme Discovery Protocol) sur les switchs EXOS : à l'instar du CDP et LLDP, celui-ci permet de découvrir le réseau et les switchs voisins, mais utilise la même adresse MAC source pour tous les switchs ! Il suffit donc d'avoir plusieurs EXOS sur son réseau pour avoir du flapping avec cette adresse MAC.
Pour résoudre le problème, il faut désactiver le protocole en mousse, activé par défaut sur les EXOS :
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/Enterasys cette fonctionnalité est nommée ip helper address
, chez Extreme (EXOS) c'est bootprelay
.
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' ipforward
(le routage quoi) sur VLANs sus-cités. En gros :
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 Gateway Mtr Flags VLAN Duration #s default 10.20.1.2 1 UG---S-um--f- ico-vers-DHCPd 181d:0h:6m:52s