User Tools

Site Tools


informatique:extreme_networks

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:extreme_networks [2017/04/03 15:12] pteuinformatique:extreme_networks [2023/12/21 15:11] (current) – [Firmware] version recommandée pteu
Line 1: Line 1:
-FIXME 
- 
 ======Extreme Networks / EXOS====== ======Extreme Networks / EXOS======
  
Line 6: Line 4:
 =====Remarques générales===== =====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 : +Par défaut les switchs sont configurés avec 2 VRs (virtual router), chacun possédant une table de routage étanche : 
-**VR-Mgmt**, le VR de management avec le port d'admin (Mgmt), dont le vlan est 4095 +  **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+  **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 éqipement).+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 0'' chez Cisco)) :
 +<code bash>
 +disable cli paging
 +enable cli paging
  
-=====Logs journaux=====+# pour les versions EXOS antérieures à 30: 
 +disable clipaging 
 +enable clipaging 
 +</code>
  
 +=====Licences=====
 +
 +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 "DefaultFilter" +# 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/Standby, on installe une licence 
-enable cli-config-logging+telnet slot 2 
 +enable license xxxx-xxxx-xxxx-xxxx-xxxx 
 +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 les alertes +on reboot les slots qui avaient une licence limitante 
-configure log filter DefaultFilter add events All severity warning+reboot slot 4
  
-Voir les compteurs de log par catégorie +vérifier le bon fonctionnement de la pile avec ces nouvelles licences 
-<code bash> +show licenses
-show log counters All include+
  
-configurer un rsyslog +au pire 
-configure log target syslog 10.1.1.24:514 vr VR-Default local7 filter DefaultFilter severity Debug-Summary +reboot stack-topology
-enable log target syslog 10.1.1.24:514 vr VR-Default local7+
 </code> </code>
  
  
 =====Système===== =====Système=====
 +
 +====Hardware====
  
 La commande ''show system'' renvoie beaucoup d'informations en passant la liste de commandes suivante : La commande ''show system'' renvoie beaucoup d'informations en passant la liste de commandes suivante :
 <code bash> <code bash>
 show switch          # modèle, infos SNMP, heure, uptime show switch          # modèle, infos SNMP, heure, uptime
 +# nb : pour les stacks, c'est l'uptime système qui est remonté ;
 +# pour obtenir les uptimes individuels de chaque slot :
 +debug hal show platform cardInfo | i "Slot:|PowerOn"
 +
 show version         # version firmware, SN, liste des modules show version         # version firmware, SN, liste des modules
 show temperature     # température des sondes show temperature     # température des sondes
Line 47: Line 65:
 show fans            # vitesses des ventilateurs show fans            # vitesses des ventilateurs
 show odometers       # temps depuis la mise en prod show odometers       # temps depuis la mise en prod
 +</code>
 +
 +Commandes avancées :
 +<code bash>
 +# 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
 </code> </code>
  
 ====Management==== ====Management====
  
-# Afficher la configuration de l'admin du switch (SSH, TELNET, idle-timeout, etc)+Configurer une adresse IP sur le port de management ''Mgmt'' (situé physiquement au dessus du port Console:
 <code bash> <code bash>
-show management+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 
 +</code> 
 +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'avoir un accès indépendant pour plus de sécurité. Ce port de mgmt n'est [[https://extreme-networks.my.site.com/ExtrArticleDetail?an=000059306|pas reconfigurable et ne peut pas être supprimé du VLAN 4095 de management]]. Par défaut tous les autres ports sont positionnés dans le VR-Default. 
 + 
 +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 "Default"
 +<code bash> 
 +configure vlan Default ipaddress 10.10.10.1 255.255.255.0 
 +configure iproute add default 10.10.10.254 
 +</code> 
 + 
 +Au passage, pour déconfigurer l'adresse (il faut soit être connecté en console, soit une autre interco pour ne pas perdre la main) : 
 +<code bash>  
 +unconfigure vlan Default ipaddress  
 +</code> 
 + 
 +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' ''ipforwarding'' dessus (cf [[informatique:extreme_networks#Routage|routage]]) 
 + 
 +Afficher et modifier la configuration de l'admin du switch (SSH, TELNET, idle-timeout, etc) 
 +<code bash> 
 +show switch management 
 + 
 +CLI idle timeout                 : Enabled (60 minutes) 
 +CLI max number of login attempts : 3 
 +CLI max number of sessions       : 8 
 +CLI paging                       : Enabled 
 +CLI space-completion             : Disabled (this session only) 
 +CLI configuration logging        : Enabled (without expansion) 
 +CLI journal size                 : 100 
 +CLI password prompting only      : Disabled 
 +CLI display moved-keywords       : Hidden 
 +CLI moved-keywords hidden release: 31.7 
 +CLI RADIUS cmd authorize tokens  : 2 
 +CLI scripting                    : Disabled (this session only) 
 +CLI scripting error mode         : Ignore-Error (this session only) 
 +CLI script search path           : ".:/usr/local/cfg" (this session only) 
 +CLI persistent mode              : Persistent (this session only) 
 +CLI prompting                    : Enabled (this session only) 
 +CLI screen size                  : 68 Lines 135 Columns (this session only) 
 +CLI refresh                      : Enabled 
 +CLI history expansion            : Disabled 
 +Image integrity checking         : Off 
 +Current system port notation     : port 
 +Configured system port notation  : port 
 +Telnet access                    : Disabled (tcp port 23 vr all) 
 +                                 : Access Profile : not set 
 +SSH access                       : Enabled (Key valid, tcp port 22 vr all) 
 +                                 : Secure-Mode    : Off 
 +                                 : Access Profile : not set 
 +SSH2 idle time                   : 60 minutes 
 +SSH2 rekey interval              : 4096 MB and no time limit 
 +Web access                       : Disabled (tcp port 80) 
 +                                 : Access Profile : not set 
 +Total Read Only Communities      : 3 
 +Total Read Write Communities     : 0 
 +RMON                             : Disabled 
 +SNMP access                      : Enabled 
 +                                 : Access Profile : not set 
 +SNMP Notifications               : Enabled 
 +SNMP Notification Receivers  : None 
 +SNMP stats:     InPkts 0       OutPkts         Errors 0       AuthErrors 0 
 +                Gets         GetNexts  0       Sets         Drops      0 
 +SNMP traps:     Sent         AuthTraps Enabled 
 +SNMP inform:    Sent         Retries         Failed 0
 </code> </code>
  
Line 63: Line 187:
 start process "exsshd" start process "exsshd"
 restart process "exsshd" restart process "exsshd"
 +
 +# terminer (kill) un processus
 +terminate process <name> [forceful | graceful] {slot}
 +</code>
 +
 +====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.
 +
 +</code>
 +
 +Vérification :
 +<code bash>
 +show banner
 +</code>
 +====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
 +</code>
 +
 +Vérifications :
 +<code bash>
 +show ssh2
 +show switch management
 +</code>
 +
 +===Filtrage des accès SSH===
 +
 +Protection de l'accès SSH par ACL (contenue dans le fichier **protect-ssh.pol**)
 +<code bash>
 +configure ssh2 access-profile protect-ssh
 +</code>
 +
 +===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'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
 </code> </code>
  
Line 76: Line 256:
 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 admin titi encrypted "$5$fusqbipgusdgfdfg4sfh*mdù"" 
-create account user tata <PWD>+ 
 +pour les comptes utilisateurs + mot de passe 
 +create account user tata <PWD> 
 + 
 +# pour les compte d'interception légale : 
 +create account lawful-intercept <LOGIN> <PWD>
 </code> </code>
-Il n'existe que 2 niveaux de privilège, non configurables+ 
 +Il existe 2 niveaux de privilège classiques, non configurables : user (lecture) et admin (root). Le "Lawful Intercept Account" est un peu spécial ; comme son nom l'indique il est conçu pour les interceptions légales, et possède les particularités suivantes : il 
 +  * n'apparait pas dans la conf 
 +  * 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 <utilisateur> <nouveau MDP>+configure account <utilisateur> password 
 + <nouveau MDP>
 </code> </code>
  
 +===Diag===
 +
 +Lister les comptes utilisateurs configurés :
 +<code bash>
 +show accounts
 +                       User Name  Access LoginOK  Failed     State
 +--------------------------------  ------ -------  ------  --------
 +                           admin     R/              Enabled
 +                       stagiaire     RO        0         Enabled
 +                            toto     R/     19         Enabled
 +                            titi     R/     20         Enabled
 +</code>
 +
 +Lister les utilisateurs connectés actuellement :
 +<code bash>
 +show session
 +    #       Login Time               User     Type    Auth   Auth Location
 +================================================================================
 + 16         Mon Jun  8 09:47:01 2020 toto     ssh2    local  dis  10.0.1.59
 +*17         Mon Jun  8 10:13:26 2020 titi     ssh2    sshKey dis  10.20.20.24
 +</code>
  
 ===Failsafe account=== ===Failsafe account===
  
-Le **failsafe account** est un compte préconfiguré, n'apparaissant pas dans un ''sh conf'', qui permet de se connecter au switch quand on a perdu la mdp de son user (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 :+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 vérifier s'il est activé : ''show failsafe-account'' 
 + 
 +Pour le désactiver :
 <code bash> <code bash>
 configure failsafe-account deny all configure failsafe-account deny all
Line 99: Line 313:
 cf : https://gtacknowledge.extremenetworks.com/articles/How_To/How-to-access-an-EXOS-switch-using-a-one-time-failsafe-password cf : https://gtacknowledge.extremenetworks.com/articles/How_To/How-to-access-an-EXOS-switch-using-a-one-time-failsafe-password
  
 +====Radius / mgmt-access====
 +
 +Pour utiliser une d'utilisateur base distante et centralisé, on peut configurer le client Radius :
 +<code bash>
 +configure radius mgmt-access primary server 10.0.1.1 1812 client-ip 10.0.2.254 vr VR-Default
 +configure radius mgmt-access primary shared-secret <MDP défini sur le serveur Radius>
 +enable radius mgmt-access
 +</code>
 +====Politique de mots de passe====
 +
 +Pour configurer une politique de mot de passe :
 +<code bash>
 +SW# configure account all password-policy ?
 +  char-validation            Password character validation
 +  history                    Check passwords against ones stored in history
 +  lockout-on-login-failures  Lockout account in case of multiple login failures
 +  lockout-time-period        Period of time to lockout account in case of multiple login failures
 +  max-age                    Maximum age of password, between 1 and 365 days
 +  min-age                    Minimum age of password, between 1 and 365 days
 +  min-different-characters   Minimum number of different characters between old and new password
 +  min-length                 Minimum length of password, between 1 and 32 characters
 +</code>
 +
 +Le nombre max de mauvais logins est configurable avec la commande :
 +<code bash>
 +configure cli max-failed-logins <1-10>
 +</code>
 +
 +Si un compte est verrouillé par suite de trop de tentatives de login incorrectes, on verra dans les logs le message:
 +<code bash>
 +<Warn:AAA.accountLockedOut> Account for user 'admin' locked out!
 +</code>
 +
 +Pour le débloquer : ''clear account admin lockout'' ->
 +<code bash>
 +<Info:AAA.accountMod> User 'admin2' modified clear lockout setting for 'admin' user(s).
 +</code>
 +====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
 +</code>
 +
 +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  VR-Default 
 +Name Server 1:  10.1.1.24  VR-Default
 +</code>
 +
 +====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
 +</code>
 +
 +Supprimer la conf NTP :
 +<code bash>
 +disable ntp
 +configure ntp server delete 10.1.1.108
 +</code>
 +
 +Vérifications :
 +<code bash>
 +show ntp association
 +show ntp sys-info
 +show ntp server
 +show ntp vlan
 +</code>
 +
 +===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
 +</code>
 +
 +Supprimer la conf:
 +<code bash>
 +unconfigure sntp-client [ primary | secondary ]
 +</code>
 +
 +Vérifications
 +<code bash>
 +show sntp-client
 +</code>
 +
 +Pour configurer la timezone (le fuseau horaire) ainsi que le changement d'heure été/d'hiver sur le modèle français :
 +<code bash>
 +conf timezone name CET 60 autodst name DST begin every last sunday march ends every last sunday october
 +</code>
  
 ====SNMP==== ====SNMP====
  
-Supprimer la configuration SNMP par défaut (qui n'apparait pas avec une show conf mais que l'on peut voir avec un ''show configuration snmp detail'') :+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'') :
 <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
 </code> </code>
  
-====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/version du firmware 
-exit +.1.3.6.1.2.1.1.3.0                      uptime du matériel 
-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 <month> <day> <hour> <min> <sec> # planifier un reboot +.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'" 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)
 </code> </code>
 +
 +====Logs / journaux====
 +
 +Affichage des logs
 +<code bash>
 +show log messages nvram
 +show log messages memory-buffer
 +</code>
 +
 +Configuration des logs
 +<code bash>
 +# 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
 +# nouvelle syntaxe à partir d'EXOS v30
 +enable cli config-logging
 +
 +# Active la "CLI history expansion" qui active la prise en charge
 +# du rappel de commande de bash : (!motif_rechch:motif_rempl)
 +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: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
 +</code>
 +
 +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"
 +</code>
 +
  
 ====Firmware==== ====Firmware====
  
-Pour obtenir la version d'EXOS (ici 21.1.1.4) :+Pour obtenir la version d'EXOS courante (ici 21.1.1.4) :
 <code bash> <code bash>
 show version show version
Line 153: Line 534:
 </code> </code>
 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). 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).
 +
 +Consulter la page [[https://www.extremenetworks.com/support/compatibility-matrices/sw-release-extremexos-eos/|ExtremeXOS and Switch Engine Release Recommendations]] pour connaitre la version recommandée par le constructeur.
  
 ===MAJ firmware=== ===MAJ firmware===
Line 160: Line 543:
 <code bash> <code bash>
 download image  1.1.1.1 <filename> vr "VR-Default" secondary download image  1.1.1.1 <filename> vr "VR-Default" secondary
 +</code>
 +
 +Téléchargement sur la partition inactive + installation + reboot (all-in-one)
 +<code bash>
 +download image 1.1.1.1 summitX-31.7.2.28-patch1-38.xos vr VR-Mgmt install reboot
 </code> </code>
  
Line 175: Line 563:
  
   * via scp   * via scp
 +Depuis le commutateur :
 <code bash> <code bash>
 scp2 user@host:summitX-22.2.1.5.xos summitX-22.2.1.5.xos 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 ]
 </code> </code>
  
-Une fois l'image copiée sur le switch, modifier l'image sur laquelle on va booter au prochain redémarrage :+Une fois l'image copiée sur le switch, vérifier/modifier l'image sur laquelle on va booter au prochain redémarrage :
 <code bash> <code bash>
-use image partition primary+show switch | inc "Image Selected" 
 + 
 +# la modifier si besoin 
 +use image partition secondary
  
 # puis redémarrer # puis redémarrer
Line 187: Line 582:
 </code> </code>
  
 +===Erreurs rencontrées===
  
 +  * ''Couldn't write to "/scratch/summitX-30.7.1.1-patch1-23.xos": Cannot allocate memory''
 +Se produit au milieu du transfert scp pour télécharger l'image ; c'est un erreur aléatoire corrigée après passage en v30.7 : //Randomly following the completion of the SCP file transfer between the switch and the source point the SSH service on the switch restarts and re-attempts to bind to TCP port 22; already in use.// ([[https://gtacknowledge.extremenetworks.com/articles/Solution/000049463|source GTAC]]).
 +
 +Il faut donc relancer le scp et cela finit par fonctionner !
 +
 +  * ''Error:can't read "xmlData(reply.status)": no such element in array''
 +L'erreur apparait après l'installation d'une image sur le switch ''install image summitX-30.7.1.1-patch1-23.xos''. Il s'agit d'un plantage du processus hal : //Hal process is being hung and hal has not finished loading it// ([[https://gtacknowledge.extremenetworks.com/articles/Solution/Summit-Switch-Error-can-t-read-xmlData-reply-status-no-such-element-in-array|source GTAC]]) qui ne se résoud qu'avec un reboot du switch !
 +
 +  * ''Error: Failed to download image on Slot-3 - tftp: write error''
 +L'erreur apparait après téléchargement de l'image sur le master, pendant le transfert vers les autres slots de la stack, lors de la MAJ de le 22 vers la v30.7. En passant par la version intermédiaire 30.2.1.8, le problème n'apparait plus. ([[https://gtacknowledge.extremenetworks.com/articles/Solution/000043762|source GTAC]])
 +====Commandes UNIX-like====
 +
 +Certaines commandes sont similaires aux UNIX/Linux :
 +<code bash>
 +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
 +</code>
 +
 +
 +=====Debug / tech-support=====
 +
 +<code bash>
 +# 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.
 +
 +# alternative à "sh l2stats"
 +run script spath-stats.py
 +
 +show ipstats ipv4 vlan Default
 +
 +debug hal show congestion
 +</code>
 +====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://extremeportal.force.com/ExtrArticleDetail?an=000090973
 +enable elrp-client
 +configure elrp-client one-shot <vlan_name> ports all print-and-log
 +# après le test
 +disable elrp-client
 +</code>
 +
 +====tech-support collector====
 +
 +Dans la conf usine on s'étonnera de trouver la ligne suivante :
 +<code bash>
 +configure tech-support collector 12.38.14.200
 +</code>
 +[[https://gtacknowledge.extremenetworks.com/articles/Q_A/Can-I-delete-the-default-tech-support-collector|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 :
 +<code bash>
 +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
 +</code>
 =====Configuration===== =====Configuration=====
  
Line 194: Line 717:
   * **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/access-list ''.pol''   * par défaut les fichiers de policy/access-list ''.pol''
 +
 +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/NTP/DHCP relay, etc)
 +show configuration nettools
 +</code>
 +
  
 ====Sauvegarde==== ====Sauvegarde====
  
 +Sauvegarder la configuration
 +<code bash>
 +save configuration
 +Do you want to save configuration to primary.cfg and overwrite it? (y/N) Yes
 +</code>
 +
 +Sauvegarder la config courante dans la config secondaire :
 +<code bash>
 +save configuration secondary
 +</code>
 +
 +Exporter la configuration
 <code bash> <code bash>
 # sauvegarde locale dans le fichier lisible "/usr/local/cfg/config-extr.xsf" # sauvegarde locale dans le fichier lisible "/usr/local/cfg/config-extr.xsf"
Line 213: Line 763:
 </code> </code>
  
-====factory-reset====+====Restauration====
  
 +On peut injecter une configuration au format "command" (.xsf) sur un nouveau switch, en le chargeant depuis un serveur TFTP :
 <code bash> <code bash>
-reset tout sauf les comptes admin, la date et la conf du stack (à moins qu'on précise "all"+Télécharger la sauvegarde 
-unconfigure switch [all]+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
 </code> </code>
 +
 +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
 + 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
 +</code>
 +
 +src : https://gtacknowledge.extremenetworks.com/articles/How_To/How-to-copy-a-configuration-to-a-new-switch
 +====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ôt ''unconfigure 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.
 +
 +<WRAP center round important 60%>
 +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.
 +</WRAP>
  
  
 =====Ports / VLANs===== =====Ports / VLANs=====
  
-Créer un VLAN+Configurer la vitesse/duplex/négociation : 
 +<code bash> 
 +configure port 2 auto off speed 100 duplex full 
 +</code> 
 + 
 +Créer un VLAN :
 <code bash> <code bash>
 create vlan TEST-VISIO create vlan TEST-VISIO
Line 247: Line 844:
 configure ports 1:14 display-string "desc_courte" configure ports 1:14 display-string "desc_courte"
 configure ports 1:14 description-string "description verbeuse" 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) # pour partitionner un port (pour un 40Gb compatible, qui nécessite un câble spécifique)
Line 267: Line 865:
 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/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 ]
 +</code>
 +
 +Pour effacer les compteurs :
 +<code bash>
 +clear counters ports
 +</code>
 +
 +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%) :
 +<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
 +</code>
 +  * 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)
 +
 +Local fault/remote fault
 +Quand un port passe DOWN il affiche dans les logs la raison ''Local fault'' ou ''remote fault''. [[https://extremeportal.force.com/ExtrArticleDetail?n=000005204|D'après le GTAC]]:
 +  * une **local fault** est détectée par le switch lui-même, souvent dû à trop d'atténuation (mauvaise lumière)
 +  * **remote fault** est une erreur détectée et signalée par le switch d'en face
 +
 +
 +<code bash>
 # afficher l'état et la conf d'un vlan # afficher l'état et la conf d'un vlan
 show vlan 2 show vlan 2
Line 278: Line 921:
 show fdb ports <port> show fdb ports <port>
 show fdb vlan <vlan> show fdb vlan <vlan>
 +
 +# enregistrer une entrée statique dans le FDB
 +# create [fdbentry | fdb] <mac_addr> vlan <vlan_name> ports <port#>
 +create fdb 00:11:22:33:44:55 vlan v10_users ports 12
  
 # interroger la table ARP (association adresse IP <-> MAC) # interroger la table ARP (association adresse IP <-> MAC)
Line 283: Line 930:
 sh iparp 10.1.2.201 sh iparp 10.1.2.201
 VR            Destination      Mac                Age  Static  VLAN          VID   Port VR            Destination      Mac                Age  Static  VLAN          VID   Port
-VR-Default    100.1.2.201      bc:30:5b:12:34:56   20      NO  Default           1:14+VR-Default    10.1.2.201       bc:30:5b:12:34:56   20      NO  Default           1:14
 [..] [..]
 # alternatives : # alternatives :
Line 291: Line 938:
 </code> </code>
  
 +# créer une association ARP statique :
 +configure iparp add 10.0.20.2 vr VR-Default bc:30:5b:12:34:56
 +
 +[[https://gtacknowledge.extremenetworks.com/articles/Q_A/How-to-check-ports-for-possible-blocking|Commande de diagnostique bas niveau]] :
 +<code bash>
 +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
 +</code>
 ====jumbo frames==== ====jumbo frames====
  
Line 303: Line 993:
 ====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'agrégat.
  
 <code bash> <code bash>
-# agrégat de 2x port : 1:1 et 1:2 +créer l'agrégat avec 3 ports : 1, 2 et 3 en LACP (conseillé) 
-configure sharing 1:1 add 1:2 +enable sharing 1:1 grouping 1-3 lacp 
-=> créer l'agrégat 1:1, qui doit être le n° du premier port inclus dedans (= "master port")+ 
 +ajout d'un 4ème port 
 +configure sharing add 4
  
 # désactiver l'agrégat : # désactiver l'agrégat :
Line 321: Line 1013:
 Master    Master  Control Active  Algorithm   Group     Mbr   State  Transitions Master    Master  Control Active  Algorithm   Group     Mbr   State  Transitions
 ================================================================================ ================================================================================
-   1:1            LACP           L2          1:1        -      R        0 +                LACP           L2          1          -      R        0 
-                                   L2          1:2        -      R        0 +                                   L2          1          -      R        0 
-                                   L2          1:3        -      R        0 +                                   L2          1          -      R        0 
-                                   L2          1:4        -      R        0+                                   L2          1          -      R        0
 ================================================================================ ================================================================================
 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 1030:
       Sys-Pri  Key    MAC               Sys-Pri  Key     Count MAC                     Sys-Pri  Key    MAC               Sys-Pri  Key     Count MAC              
 -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-1:1         0  0x03e9 02:04:96:12:34:56        0x041c      4 02:04:96:12:34:56+          0  0x03e9 02:04:96:12:34:56        0x041c      4 02:04:96:12:34:56
  
 Port list: Port list:
Line 345: Line 1037:
 Port       Priority  State        Logic        State          Flags     Port     Port       Priority  State        Logic        State          Flags     Port    
 -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-1:1        0         Current      Selected     Collect-Dist   A-GSCD--  1052      +         0         Current      Selected     Collect-Dist   A-GSCD--  1052      
-1:2        0         Current      Selected     Collect-Dist   A-GSCD--  2052      +         0         Current      Selected     Collect-Dist   A-GSCD--  2052      
-1:3        0         Current      Selected     Collect-Dist   A-GSCD--  3052      +         0         Current      Selected     Collect-Dist   A-GSCD--  3052      
-1:4        0         Current      Selected     Collect-Dist   A-GSCD--  4052     +         0         Current      Selected     Collect-Dist   A-GSCD--  4052     
 ================================================================================ ================================================================================
  
Line 382: Line 1074:
 </code> </code>
  
 +====mac-locking====
 +
 +Le contrôle d'accès par adresse MAC / mac-locking permet de limiter l'accès d'un port à une ou des adresses MAC. Dans un premier temps on place le switch dans une période d’apprentissage des adresses, à l'issue de laquelle on fige les couples port;adresse MAC. Toute nouvelle adresse MAC dépassant le seuil d'adresse configurée par port provoquera une coupure de ce dernier et l'émission d'une alerte.
 +
 +Exemple rapide de mise en place :
 +<code bash>
 +# activation du mac-locking sur tous les ports "user" (pas l'uplink)
 +enable mac-locking ports 1-47
 +# configuration de l''apprentissage dynamique, limité à 1 adresse par port
 +# nb: pas d''aging = les MAC apprises restent liées à leur port, même si la MAC disparait de la FDB
 +configure mac-locking ports 1-47 first-arrival limit-learning 1
 +# activation du mac-locking
 +enable mac-locking
 +
 +# [ phase d''apprentissage ]
 +
 +# vérifs
 +show mac-locking stations ports 1-47
 +# on limite le nombre d''adresse à une par port
 +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
 +</code>
 +
 +Vérifications
 +<code bash>
 +show mac-locking ports 1-47
 +show mac-locking stations ports 1-47
 +
 +# ajouter ou supprimer une MAC d''un port
 +configure mac-locking ports 47 static [add | enable | disable] @MAC
 +</code>
 +
 +====authentification par mac====
 +
 +On peut également faire vérifier l'adresse MAC d'un port par un serveur Radius, et si validé, basculer ce port sur le VLAN envoyé par le serveur Radius.
 +
 +===Configuration côté switch===
 +<code bash>
 +# création du VLAN d'accueil (VLAN par défaut si MAC non authentifiée) et 10 (VLAN utilisateur)
 +create vlan v10_Users tag 10
 +create vlan v666_Accueil tag 666
 +!
 +# configuration du serveur Radius
 +configure radius netlogin primary server 10.4.1.1 1814 client-ip 10.5.255.253 vr VR-Default
 +configure radius netlogin primary shared-secret encrypted "blablahashé"
 +!
 +# configuration de l'authentification par adresse MAC
 +
 +configure netlogin vlan v666_Accueil
 +enable netlogin mac 
 +configure netlogin mac authentication database-order radius
 +# on active la protection MAC sur les port 1 à 8 (arbitraire)
 +enable netlogin ports 1-8 mac 
 +configure netlogin add mac-list ff:ff:ff:ff:ff:ff 48
 +!
 +enable radius
 +enable radius netlogin
 +</code>
 +
 +===Configuration côté serveur Radius===
 +Dans le cas de freeradius, il faut :
 +* ajouter l'IP du switch (10.5.255.253) et son "secret" dans clients.conf
 +* activer le plugin **authorized_macs**
 +* peupler le fichier **authorized_macs** avec la liste des adresses MAC permises (format 00-11-22-33-44-55)
 +* dans la section authorize de la configuration du site :
 +<file site-enabled/mac-auth>
 +[...]
 +authorize {
 +   preprocess
 +   # convertir l'@ mAC dans le bon format
 +   rewrite_calling_station_id
 +   #auth_log
 +   authorized_macs
 +   if (ok) {
 +      # The MAC address was found, so update Auth-Type to accept this auth.
 +      update control {
 +         Auth-Type := Accept
 +      }
 +      update reply {
 +         Tunnel-Type := VLAN
 +         Tunnel-Medium-Type := IEEE-802
 +         Tunnel-private-Group-ID := 100
 +      }
 +   }
 +}
 +[...]
 +</file>
  
 =====Spanning-tree===== =====Spanning-tree=====
Line 387: Line 1172:
 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
 +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 enable stpd s0
-sh stpd s0 ports 
  
-configure stpd s0 add vlan Default ports 5:1 dot1d | emistp | pvst-plus +Configurer un port edge
- +
-configurer un port edge+
 # 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 1186:
 </code> </code>
  
-Debug +====Fast convergence==== 
 + 
 +Lors d'un changement de topology (TC), le switch vide sa table ARP ("//FDB Flushed due to topology Change//") et doit réapprendre toutes les correspondances IP <-> MAC, ce qui peut prendre du temps et de la CPU. Aussi il est possible d'activer la fast-convergence, qui permet de ne pas vider cette table suite à un TC ; pour activer cette fonctionnalité : 
 +<code bash> 
 +configure iparp fast-convergence on 
 + 
 +show iparp | grep Convergence 
 +Fast Convergence :         On 
 +</code> 
 + 
 +====Debug / diagnostique==== 
 + 
 +Lister l'état STP des ports du domaine s0
 <code bash> <code bash>
-# lister l'état STP des ports du domaine s0 
 show stpd s0 ports show stpd s0 ports
 [..] [..]
-1:12   802.1D FORWARDING 20000 eDee-d-S-- 128      800c    40:00:02:04:96:12:34:56 +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:34:56 +1:13   802.1D FORWARDING 20000 eDee-w-S-- 128      800d    40:00:02:04:96:12:22:22 
-# exemple de résultat : PC Linux ponté qui génère des BPDU en 1:12 +1:14   802.1D LISTENING  2000  eDappw---- 128      800c    40:00:02:04:96:9b:33:33 
-et port edge 'normal' en 1:13+# 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 
 +</code>
  
-# +Afficher la raison du blocage d'un port : 
-# logs +<code bash> 
-# +show stpd s0 ports non-forwarding-reason 
-# logguer les changements de topo STP sur les ports edge :+Port    State       Reason 
 +------------------------------------------------------------------------------- 
 +1:14    LISTENING   Placed in listening state because it is in dispute. 
 +</code> 
 + 
 +Logguer les événements STP : 
 +<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 1237:
 </code> </code>
  
-sources :+Sources :
   * https://gtacknowledge.extremenetworks.com/articles/Solution/Spanning-Tree-Topology-Changes-on-X460/?l=en_US&fs=RelatedArticle   * https://gtacknowledge.extremenetworks.com/articles/Solution/Spanning-Tree-Topology-Changes-on-X460/?l=en_US&fs=RelatedArticle
   * http://documentation.extremenetworks.com/exos/EXOS_21_1/STP/c_edge-port-behavior.shtml   * http://documentation.extremenetworks.com/exos/EXOS_21_1/STP/c_edge-port-behavior.shtml
Line 446: Line 1253:
  
  
-=====Stack=====+=====Access-list=====
  
-Certains modèles sont stackable, jusqu'à 8 par pile. Cela permet de les grouper en un switch logique, administrable avec la même IP. Les ports seront accessibles via ''<slot#>:<port#>'' (par ex : le port 5 du slot 3 sera en ''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).+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) 
 +<code bash> 
 +edit policy internet-in 
 + entry RFC1918_1 { 
 + if match all { source-address 10.0.0.0/8 ;} 
 + then { count rfc1918 ; deny  ;} 
 + } 
 +</code> 
 +Pour enregistrer le fichier : <echap> ; puis '':wq'' 
 +  * vérifier la syntaxe : 
 +<code bash> 
 +check policy internet-in 
 +</code> 
 +  * l'appliquer sur un port ou un vlan (en entrée -in- ou en sortie -out-) : 
 +<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 "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 
 +</code> 
 + 
 +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 
 +</code> 
 + 
 +====Créer une ACL dynamique==== 
 + 
 +<code bash> 
 +create access-list dynamic test-acl "protocol icmp;source-address 10.0.20.21/32" "deny" 
 +</code> 
 + 
 +====Examples==== 
 + 
 +ACL pour bloquer l'IPv6 
 +<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 "Default" ingress 
 +</code> 
 + 
 +ACL pour bloquer les BPDUs ([[https://gtacknowledge.extremenetworks.com/articles/How_To/How-to-block-BPDU-packets-on-a-port-via-ACL|source]]) 
 +<code bash> 
 +edit policy <policy name>.pol 
 +entry bpdu { 
 +    if { ethernet-destination-address 01:80:c2:00:00:00;
 +    then { deny; 
 +           count bpdu; } 
 +    } 
 +</code> 
 + 
 +====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 "Default" ingress 
 +</code> 
 + 
 +Sources : 
 +  * https://gtacknowledge.extremenetworks.com/articles/How_To/How-to-block-ICMPv6-MLD-Reports-from-Network-PCs-and-IP-phones/?q=access-list+ipv6&l=en_US&c=Extreme_Software%3AExtremeXOS_EXOS&fs=Search&pn=1 
 +  * http://www.gossamer-threads.com/lists/nsp/extreme/35705 
 + 
 + 
 +=====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 : Infos en vrac :
-  * pour monter, un stack tous les membres doivent avoir la même partition active +  * 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>"
-  * l'élection se fait uniquement entre "master-capable"ceux-ci sont "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 
-  * les master-capable doivent avoir le même niveau de licence +  * tous les ports console sont utilisables mais seul celui du master peux modifier la configuration
-  * seul le port Mgmt du slot master est utilisable +
-  * tous les ports console sont utilisable 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 #**)   * 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://extremeportal.force.com/ExtrArticleDetail?an=000083347|Create a Stack With Summit Switches (gtacknowledge)]]
 +
 +Depuis une conf usine, se logguer sur le port CONsole en "admin" sans mot de passe, et quitter l'assistant de configuration qui s'affiche (''q'').
 +
 +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
 +</code>
 +
 +Éteindre les switchs et brancher leurs interfaces de stack (ports 40G éventuellement disponibles via l'ajout d'une carte VIM insérée à l'arrière de X460G2, par exemple). Pour une numérotation propre, brancher le port stack 2 du slot 1 sur le port stack 1 du slot 2, puis le port stack 2 du slot 2 sur le port stack 1 du slot 3, etc... jusqu'au port stack 2 du dernier slot qu'il faut brancher sur le port stack 1 du slot 1.
 +<code bash>
 +  -- slot 1(1)
 + /   slot 1(2)---slot 2(1)
 +               slot 2(2)---slot 3(1)
 +                           slot 3(2)
 +  \--------------------------------/
 +</code>
 +Ceci afin d'obtenir une topologie de stack en //ring//, qui supporte la coupure d'un lien, à la différence de la //daisy-chain// (branchement en cascade)
 +
 +Démarrer chaque switch et activer le stacking ; puis redémarrer :
 +<code bash>
 +enable stacking-support
 +reboot
 +</code>
 +
 +Vérification : une fois tous les slots redémarrés, on peut tous les voir avec ''show stacking''.
 +
 +Sur le master uniquement, lancer l'assistant de configuration :
 +<code bash>
 +enable stacking
 +
 +Execute "configure stacking easy-setup" ? Y
 +Executing "configure stacking easy-setup" command...
 +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
 +</code>
 +
 +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    Slot  Stack State  Role     Flags
 +------------------  ----  -----------  -------  ---
 +*00:04:96:01:01:01  1     Active       Master   CA-
 + 00:04:96:02:02:02  2     Active       Backup   CA-
 + 00:04:96:03:03:03  3     Active       Standby  CA-
 +</code>
 +
  
 Commandes en vrac : Commandes en vrac :
Line 463: Line 1430:
  
 # 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 configuration ]+show stacking 
 +show stacking configuration
  
 # 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 1446:
 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:04:96:12:34:56 slot-number 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+# permet d'activer ou désactiver la capacité des slots à être master ou pas
 configure stacking slot 2 master-capability on|off configure stacking slot 2 master-capability on|off
  
Line 511: Line 1469:
 # 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:    BACKUP
 +   Node Priority: 0
 +   Sw Health:     0
 +   Hw Health:     34
 +
 +Node Slot-2 information:
 +   Node State:    MASTER
 +   Node Priority: 0
 +   Sw Health:     0
 +   Hw Health:     34
 +
 +# 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,101]  hg0: Configured <40G>, Operational <40G>
 +  Member [0,103]  hg2: Configured <40G>, Operational <40G>
 +SPB 2: Type 5(80G), Status UP
 +  Member [0,102]  hg1: Configured <40G>, Operational <40G>
 +  Member [0,104]  hg3: Configured <40G>, Operational <40G>
 </code> </code>
  
 +====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''
 +    * qu'il possède des interfaces pour le stacker (QSFP+), comme une carte VIM par exemple (''show temperature'' ou ''show stacking-support'' permet de vérifier cela)
 +  * activer le support du stacking : vérifier ''show stacking configuration'', et si la commande ne retourne rien : ''enable stacking-support'' ; puis rebooter ; puis éteindre le switch
 +  * 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 <mac_node> slot-number <slot#>
 +</code>
 +  * sur le master :
 +<code bash>
 +configure stacking slot <slot#>
 +reboot slot <slot#>
 +synchronize slot <slot#>
 +</code>
 +
 +Vérifications sur le master :
 +<code bash>
 +show stacking
 +show slot
 +show slot detail
 +</code>
 +====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 commande ''unconfigure 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>'') :
 +<code bash>
 +unconfigure stacking slot <#slot>
 +reboot slot <#slot>
 +</code>
 +  * si le master voit toujours le slot (''show slot''), le flusher en saisissant ''unconfigure 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) :
 +<code bash>
 +show stacking stack-ports | grep Topology
 +Stack Topology is a Ring
 +</code>
 +
 +====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:             Slot-1 *                     Slot-2
 +                  ------------------------     ------------------------
 +Current State:    MASTER                       BACKUP (In Sync)
 +
 +Image Selected:   primary                      secondary
 +Image Booted:     primary                      secondary
 +Primary ver:      30.7.1.1                     30.5.1.15
 +                  patch1-23
 +Secondary ver:    30.2.1.8                     30.7.1.1
 +                                               patch1-23
 +</code>
 +
 +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 : ''Error: active partitions must be the same across the stack''. Pour corriger cela il faut installer l'image courante (30.7.1.1patch1-23) sur la partition primary du slot 2:
 +<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
 + Copying image to secondary partition... 100% complete.
 + Image installed to the secondary partition successfully.
 +</code>
 +
 +Puis définir cette partition comme active :
 +<code bash>
 +use image primary slot 2
 +
 +# vérification:
 +show slot 2 detail | grep ary
 +     Image Selected:      primary
 +     Image Booted:        secondary
 +     Primary ver:         30.7.1.1
 +     Secondary ver:       30.7.1.1
 +
 +# Puis, rebooter:
 +reboot
 +
 +# après reboot:
 +show switch
 +[..]
 +Slot:             Slot-1 *                     Slot-2
 +                  ------------------------     ------------------------
 +Current State:    MASTER                       BACKUP
 +
 +Image Selected:   primary                      primary
 +Image Booted:     primary                      primary
 +Primary ver:      30.7.1.1                     30.7.1.1
 +                  patch1-23                    patch1-23
 +Secondary ver:    30.2.1.8                     30.7.1.1
 +                                               patch1-23
 +</code>
 +
 +====Liens====
 +  * [[https://gtacknowledge.extremenetworks.com/articles/How_To/Getting-started-with-Summit-Stacking|Getting started with Summit Stacking]]
 +    * et particulièrement : [[https://gtacknowledge.extremenetworks.com/articles/How_To/000001503|How to create a stack with Summit switches]]
 +====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
 +</code>
 +
 +Se connecter à slot (5, dans l'exemple suivant) via un autre slot :
 +<code bash>
 +# se connecter sur le premier slot, puis lancer une session telnet interne :
 +telnet slot 5
 +</code>
 +
 +Modifier l'adresse MAC d'un stack :
 +<code bash>
 +configure stacking node-address "00:04:96:00:11:22" mac-address
 +</code>
 +
 +=====packet capture=====
 +
 +Pour réaliser une capture des paquets qui remontent à la CPU (sniff / tcpdump-like)
 +<code bash>
 +# activer/désactiver la capture
 +debug packet capture on
 +debug packet capture off
 +
 +# limiter la capture aux ports 2 et 3, et à 100 paquets
 +debug packet capture port 2-3 on count 100
 +
 +# sauvegarde dans un fichier pcap, récupérable dans /usr/local/tmp
 +debug packet capture ports 2-3 on file-name <pcap-file> count 100
 +
 +# limiter la capture sur le port 8, le vlan Default et à 100 paquets (alt.)
 +debug packet capture ports 8 on vlan Default cmd-args "-c 100"
 +</code>
 +
 +Il est important de toujours désactiver la capture, quelque soit les options utilisées (même count).
 +
 +Sources :
 +  * [[https://extremeportal.force.com/ExtrArticleDetail?an=000079573|Perform a packet capture in the EXOS CLI using the command "debug packet capture"]]
 +
 +
 +=====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 "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
 +</code>
 +
 +Diagnostique :
 +<code bash>
 +# 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
 +</code>
 +====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 "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
 +</code>
 +
 +  * 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/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
 +</code>
 +
 +On peux ajouter une protection par mot de passe MD5 :
 +<code bash>
 +configure bgp neighbor 10.55.6.92 password encrypted "#$r7jd531s6df4s6f8ze+rENrdw=="
 +</code>
 +
 +Ainsi qu'une route-map pour contrôler les annonces reçues :
 +<code bash>
 +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
 +</code>
 +
 +Après la MAJ d'une policy, pour qu'elle soit prise en compte :
 +<code bash>
 +check policy BGP-in.pol
 +refresh policy BGP-in
 +configure bgp soft-reconfiguration
 +</code>
 +
 +Vérifications :
 +<code bash>
 +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
 +------------------------------------------------------------------------------------------------------
 +*> 10.143.6.8/29       10.55.200.92                 10.55.200.92   100        0          64200 64047 
 +*> 10.143.8.0/29       10.55.200.92                 10.55.200.92   100        0          64200 65025 
 +*> 10.204.255.2/32     10.55.200.92                 10.55.200.92   100        0          64200 65025 
 +*> 10.204.255.3/32     10.55.200.92                 10.55.200.92   100        0          64200 64047 
 +*> 10.55.200.94/31     10.55.200.92                 10.55.200.92   100        0          64200 65025 
 +*>?  10.55.200.254/31    10.55.200.92                 10.55.200.92   100        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
 +----------------------------------------------------------------------------------------
 + > 10.31.0.24/29                      10.55.200.93              0          64512 
 + > 10.204.241.1/32                    10.55.200.93              0          64512 
 + > 10.204.255.1/32                    10.55.200.93              0          64512
 +
 +show bgp neighbor 10.55.200.92 suppressed-routes all
 +</code>
 +
 +===Suppression de la conf BGP===
 +
 +<code bash>
 +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
 +</code>
 +
 +===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 un ''show iproute'') ou qu'il n'est pas permis dans la ''route-policy'' appliquée en out (pour filtrer nos annonces BGP)
 +====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
 +</code>
 +
 +
 +=====Scripts Python=====
 +
 +Les EXOS interprètent les scripts Python depuis la v15.7 ; 2 scripts sont fournis de base pour aider au diagnostique :
 +  * **spath-stats.py** pour aider au diag de problème CPU (il est basé sur le retour de la commande "sh l2stats")
 +  * **mem-stats.py** qui collecte le stats mémoire sur le système
  
 +On peut les exécuter avec la commande : ''run script'' ; par exemple ''run script mem-stats.py''.
 =====Tips===== =====Tips=====
  
Line 549: Line 1862:
 </code> </code>
  
 +====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
 +</code>
 +
 +====MAC-tracking====
 +
 +Cas d'étude : problème de performance sur un switch.
 +
 +Pour voir les modules consommant de la mémoire :
 +<code bash>
 +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
 +</code>
 +//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 :
 +<code bash>
 +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
 +</code>
 +
 +Pour trouver les adresses MAC et les ports, voir les logs :
 +<code bash>
 +show log messages memory-buffer
 +</code>
 +
 +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
 +</code>
 +
 +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 :
 +<code bash>
 +configure log filter "DefaultFilter" del events FDB.MACTracking.MACMove
 +configure fdb mac-tracking delete ports all
 +</code>
 +
 +[[https://gtacknowledge.extremenetworks.com/articles/Solution/I-O-slot-reboot-with-I-O-memory-depletion|source]]
 +
 +====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 [[https://gtacknowledge.extremenetworks.com/articles/Solution/Switch-struck-pending-AAA-but-REBOOT-AS-MASTER-CAPABLE-is-not-working|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 :
 +<code bash>
 +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     Auto <none>             <none>          CcEeMm-Nn --
 + 00:04:96:00:00:02 2     Auto <none>             <none>          CcEeMm-Nn --
 + 00:04:96:00:00:03 3     Auto <none>             <none>          CcEeMm-Nn --
 + 00:04:96:00:00:04 4     Auto <none>             <none>          CcEeMm-Nn Ee
 +</code>
 +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
 +</code>
 +
 +====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 :
 +<code bash>
 +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
 +</code>
 +
 +[[https://gtacknowledge.extremenetworks.com/articles/Q_A/S-Series-00-E0-2B-00-00-01-moved-to-port-syslog-message|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 :
 +<code bash>
 +disable edp port all
 +</code>
 +
 +====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''.
 +<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
 +</code>
 +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 :
 +<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        Gateway         Mtr  Flags         VLAN             Duration
 +#s   default            10.20.1.2      1    UG---S-um--f- ico-vers-DHCPd    181d:0h:6m:52s
 +</code>
 +
 +====Conduit error====
 +
 +Lorsqu'une stack rencontre des problèmes de communication entre slots, il génère des messages de type : ''Conduit receive error encountered'', ou ''<Warn:HAL.Card.Warning> pibConduitMasterRcvOneSlot(): failed [..]''. Cela vient souvent d'un problème de câblage inter-slots, et peut produite des reboots forcés. On peut vérifier les erreurs des ports de stack avec les commandes :
 +<code bash>
 +show ports stack-ports txerrors no-refresh
 +Port Tx Error Monitor
 +Port      Link      Tx          Tx          Tx          Tx       Tx       Tx
 +          State     Coll        Late coll   Deferred    Errors   Lost     Parity
 +================================================================================
 +1:1                          0                                   0
 +1:2                          0                                   0
 +2:1                          0                                   0
 +2:2                          0                                   0
 +================================================================================
 +!
 +show ports stack-ports rxerrors no-refresh
 +Port Rx Error Monitor
 +Port      Link     Rx      Rx      Rx        Rx      Rx         Rx         Rx
 +          State    Crc    Over    Under     Frag    Jabber      Align      Lost
 +================================================================================
 +1:1              0              0        0        0          0          0
 +1:2              0              0        0        0          0          0
 +2:1              0              0        0        0          0          0
 +2:2              0              0        0        0          0          0
 +================================================================================
 +          Link State: A-Active, R-Ready, NP-Port Not Present L-Loopback
 +</code>
 +Ici, tout va bien.
 +
 +src: [[https://extremeportal.force.com/ExtrArticleDetail?an=000077135|Switch in Summit Stack Failed with Conduit Receive Error]]
 +=====Ressources=====
 +
 +  * [[https://gtacknowledge.extremenetworks.com/articles/Q_A/EXOS-Switch-Security-Checklist-and-best-practice|EXOS-Switch-Security-Checklist-and-best-practice]]
  
informatique/extreme_networks.1491232377.txt.gz · Last modified: 2017/04/03 15:12 by pteu