41 KiB
VTP Operating Mode : Server Maximum VLANs supported locally : 255 Number of existing VLANs : 5 Configuration Revision : 0
### Rate-limiting
On peut forcer un port à rate-limiter à 10, 20, 30.... ou 90% de sa capacité.
Par exemple pour rate-limiter à du 8 Mb/s :
Switch(config)# int Gi0/1 Switch(config-if)# speed 10 Switch(config-if)# srr-queue bandwidth limit 80
La négociation de la vitesse (commande `speed`) ne fonctionne que sur une interface ethernet, et non fibre.
Infos sur le rate-limiting :
Switch# show mls qos interface GigabitEthernet0/1 queueing GigabitEthernet0/1 QoS is disabled. When QoS is enabled, following settings will be applied Egress Priority Queue : disabled Shaped queue weights (absolute) : 25 0 0 0 Shared queue weights : 25 25 25 25 The port bandwidth limit : 10 (Operational Bandwidth:11.12) The port is mapped to qset : 1
### Port mirroring
Activer le port mirroring, en copiant la sortie des ports G0/1 à G0/3 vers le port G0/5, et en gardant la même encapsulation :
Switch(config)# monitor session 1 source interface g0/1 - 3 tx Switch(config)# monitor session 1 destination interface g0/5 encapsulation replicate
On peut aussi mirrorer tout ce qui passe dans un vlan particulier :
Switch(config)# monitor session 1 source vlan 2 , 5 Switch(config)# monitor session 1 destination interface g0/5 encapsulation replicate
Désactiver le port mirroring :
Switch(config)# no monitor session 1
#### Copier la transmission ou la réception
Sans aucun des deux mots clefs `rx` ou `tx`, la réception et la transmission sont tous les deux mirrorés. Il faut préciser `tx` si on ne veut mirrorer que ce qui sort du port, ou `rx` si on ne veut mirrorer que ce qui rentre dans le port.
Si on veut monitorer à la fois un port en tx et un autre en rx :
Switch(config)# monitor session 1 source interface g0/1 tx Switch(config)# monitor session 1 source interface g0/2 rx
La deuxième commande n'écrase pas la première, mais la configuration s'additionne.
#### Encapsulation replicate
Par défaut, le port mirroring renvoie tout le trafic vers l'interface de destination de façon non étiqueté (sans aucun marquage de VLAN), et sans les protocoles de niveau 2 : CDP (Cisco Discovery Protocol), VTP (VLAN Trunking Protocol), DTP (Dynamic Trunk Protocol), STP (Spanning Tree Protocol) et PAgP (Port Aggregation Protocol).
En rajoutant le mot clef `encapsulation replicate`, les paquets sont envoyés en gardant le même étiquetage VLAN qu'à la source, et les protocoles de niveau 2 sont également copiés.
#### Filtrer les VLANs
Si un port source est un port trunk dans lequel passent les VLANs 2, 3, 4, 5 et 6, mais que l'on ne veut mirrorer que les VLANs 3 et 5 :
Switch(config)# monitor session 1 filter 3 , 5
Si parmi les ports source, l'un est en mode trunk et l'autre est en mode access, seul la source en trunk est affectée par ce filtre.
#### Autoriser un IDS/IPS à agir sur ce qu'il voit
L'IDS/IPS derrière la destination du port mirroring peut être configuré pour agir sur ce qu'il reçoit, et être ainsi capable d'envoyer par exemple un reset d'une connexion TCP qu'il a detecté comme étant indésirable. Le port de destination doit alors être autorisé à recevoir des paquets de l'IDS/IPS :
Switch(config)# monitor session 1 source interface g0/1 , g0/5 Switch(config)# monitor session 1 destination interface g0/15 ingress vlan 15
### Cron / tâches planifiées
Voir <http://www.tmartin.io/articles/2010/sauvegarder-la-configuration-de-cisco-ios-vers-un-serveur-distant-avec-kron/>.
Exemple pour sauvegarder périodiquement la configuration du switch :
On commence par définir la tâche planifiée :
switch(config)# kron policy-list backupConfig switch(config-kron-policy)# cli show running-config | redirect ftp:////cisco.txt switch(config-kron-policy)# exit
Puis on définit la période, par exemple tous les jours à 01h15 :
switch(config)# kron occurrence backupConfig_occurence at 01:15 recurring switch(config-kron-occurrence)# policy-list backupConfig switch(config-kron-occurrence)# exit switch(config)# exit
### Désactiver la vérification des modules GBIC
Par défaut, CISCO n'autorise pas les modules GBIC non agréés, il faut donc désactiver la vérification des checksum des modules GBIC pour pouvoir les connecter :
Switch# conf t Switch(config)# service unsupported-transceiver
On peut ensuite les lister via :
Switch# show inventory
### Remettre un port désactivé par errdisable
Un port est désactivé dans divers cas, tel que la non-autorisation des modules GBIC tiers.
Switch# conf t Switch(config)# interface GigabitEthernet0/28 Switch(config-if)# shutdown Switch(config-if)# no shutdown
### Consulter les informations DOM d'un SFP
Pour surveiller la température, ou le voltage :
Switch# show interface transceiver
### Passer un port SFP en "speed nonegotiate"
On ne peut pas forcer la vitesse d'un port SFP… mais il faut parfois passer en "speed nonegotiate" :
Switch(config-if)# speed nonegotiate Switch(config-if)# shutdown Switch(config-if)# no shutdown
Lire <http://herdingpackets.net/2013/03/21/disabling-gigabit-link-negotiation-on-fiber-interfaces/>
### Dynamic Trunk Protocol
Le Dynamic Trunk Protocol (DTP) est un protocole permettant de négocier la création automatique de trunk sur une liaison. Pour en profiter, il faut passer l'interface soit en mode dynamic auto, soit en mode dynamic desirable :
Switch(config-if)# switchport mode dynamic auto Switch(config-if)# switchport mode dynamic desirable
Selon l'état de l'interface de l'autre côté, la liaison sera en mode access ou en mode trunk :
Dynamic Auto Dynamic Desirable Trunk Access
--------------------- ------------- ----------------- -------------------- --------
**Dynamic Auto** Access Trunk Trunk Access
**Dynamic Desirable** Trunk Trunk Trunk Access
**Trunk** Trunk Trunk Trunk ?
**Access** Access Access ? Access
L'utilisation de DTP (et donc du mode dynamic) est risquée car un serveur en face pourrait négocier un trunk et ainsi avoir accès à tous les vlans. Il est donc conseillé de ne jamais utiliser le mode dynamic.
Le DTP peut également être désactivé :
Switch(config-if)# switchport nonegotiate
Mais cette commande n'a pas d'intérêt dans le cas où le mode dynamic n'est pas utilisé. Attention cependant, désactiver cette option (`no switchport nonegotiate`) entraînera une coupure de 3 secondes de la liaison.
### Scripting avec tclsh
Les appareils Cisco incluent tclsh, un shell contenant l'interpréteur Tcl.
Il peut permettre par exemple de rapidement exécuter des pings à de multiples destinations :
Switch# tclsh
Switch(tcl)# foreach address {
+> 192.168.0.3
+> 192.168.0.4
+> 192.168.0.5
+> } { ping $address repeat 3 }
Type escape sequence to abort. Sending 3, 100-byte ICMP Echos to 192.168.0.3, timeout is 2 seconds: !!! Success rate is 100 percent (3/3), round-trip min/avg/max = 5/10/21 ms Type escape sequence to abort. Sending 3, 100-byte ICMP Echos to 192.168.0.4, timeout is 2 seconds: !!! Success rate is 100 percent (3/3), round-trip min/avg/max = 1/7/15 ms Type escape sequence to abort. Sending 3, 100-byte ICMP Echos to 192.168.0.5, timeout is 2 seconds: !!! Success rate is 100 percent (3/3), round-trip min/avg/max = 1/2/5 ms
## Catalyst niveau 3
### DHCP relay sur plusieurs VLANs
* [Exemple de mise en oeuvre de DHCP Relay sur 2 VLANs](http://www.cisco.com/en/US/tech/tk648/tk361/technologies_tech_note09186a0080114aee.shtml)
#### Côté Serveur DHCP
Côté serveur DHCP (serveur linux), configurer un subnet par VLAN. Penser aux routes permettant d'accéder à chaque réseau de chaque VLAN.
Le serveur DHCP pourra être dans un VLAN dédié.
#### Côté Switch
Pour activer le DHCP Relay, sur chaque interface VLAN, rajouter la directive `ip address helper <ip-server-dhcp>`.
Voici un exemple de création d'un VLAN avec l'adresse 192.168.200.1/24, faisant office de DHCP relay pour le serveur 10.0.1.2 :
Switch(config)# interface vlan 200 Switch(config-if)# ip address 192.168.200.1 255.255.255.0 Switch(config-if)# ip helper-address 10.0.1.2 Switch(config-if)# end
On répètera cette manipulation pour chaque VLANs et chaque subnet déclaré sur le serveur DHCP que l'on souhaite activer.
### Routage Inter-VLANs
L'activation du routage inter-VLANs se fait de la manière suivante :
Switch(config)# ip routing
Tous les VLANs seront routés entre eux. Il sera possible si besoin de limiter le routage inter-VLANs grâce aux ACLs.
### Définir une route par défaut
Switch(config)# ip default-gateway IP_routeur
ou
Switch(config)# ip route 0.0.0.0 0.0.0.0 IP_routeur
La première commande est à utiliser si `ip routing` n'est pas configuré. Si c'est configuré, il faut utiliser la deuxième commande.
## Small Business
Les switchs Cisco Small Business Pro (par exemple, le modèle Cisco ESW 500) sont en fait d'anciens switchs Linksys. Ils n'ont pas de système IOS habituel.
La connexion par le port console ou par telnet donne seulement accès à un menu interactif permettant d'effectuer seulement quelques opérations de base. On préférera donc l'utilisation de l'interface HTTP.
Pour l'initialiser, suivre les instructions du Quick Start Guide. En résumé :
* Brancher un câble RJ45 sur un port quelconque
* Se connecter à l'adresse IP par défaut 192.168.10.2
* S'identifier avec cisco/cisco
### Changer le mode (trunk, access…etc) d'une plage de ports
Avec la WebUI ce n'est pas évident, mais il est bien possible d'appliquer une configuration à plusieurs ports d'un coup :
Dans la section « VLAN Management > Interface Settings » il suffit de configurer un port, puis en cliquant sur « Copy settings » en bas de la page, de renseigner la plage de ports à laquelle appliquer la même configuration.
### Changer le VLAN d'une plage de ports
Probablement dans un souci de cohérence, c'est également possible mais avec une méthode totalement différente…
Dans la section « VLAN Management > Port to VLAN » sélectionner le VLAN ID désiré, et cliquer sur Go. Puis cocher « Untagged » au lieu de « Excluded » pour tous les ports désirés, et valider avec « Apply ».
L'application des modifications est visible dans « VLAN Management > Port VLAN Membership »
### CLI
Commandes similaires aux Catalyst :
Switch# wr Switch# sh vlan Switch# sh interface gi1 Switch# sh interfaces status gi1 Switch# show interface switchport gi1
Switch# show fiber-ports optical-transceiver Switch# show fiber-ports optical-transceiver detailed
Switch(config)# vlan 2 Switch(config-vlan)# name bob Switch(config-vlan)# end
Switch(config)# no vlan 2 Switch(config)# end
Switch(config)# interface gigabitethernet0/13
Switch(config)# interface gi1 Switch(config-if)# switchport mode access Switch(config-if)# switchport access vlan 2 Switch(config-if)# end
Switch(config)# interface gi1 Switch(config-if)# switchport mode trunk Switch(config-if)# switchport trunk allowed vlan add all Switch(config-if)# end
Switch(config)# no lldp run Switch(config)# no bonjour enable Switch(config)# jumbo-frame 10000 Switch(config)# hostname foo
#### Rate-limiting
Rate-limiter à 10 Mb/s :
Switch(config)# interface gi1 Switch(config-if)# traffic-shape 10000 Switch(config-if)# rate-limit 10000 Switch(config-if)# end
`traffic-shape` rate-limite en sortie, et `rate-limite` en entrée.
## Ansible
Voir [HowtoAnsible/Cisco](HowtoAnsible/Cisco)
## FAQ
### Switchs stackables (séries S)
Les switchs _-S Series_ permettent de stacker plusieurs switchs : c'est-à-dire que plusieurs switchs seront vus comme un seul,
offrant ainsi des facilités en termes d'administration (mais pas forcément en termes de sécurité). Cela se fait par exemple avec
plusieurs switch 2960-S et des modules Cisco FlexStack : ces modules s'ajoutent à l'arrière de chaque switch, il suffit ensuite
de les relier avec des câbles Cisco FlexStack.
Astuce : un switch stackable (S Series) est parfois moins cher qu'un non-stackable… et il peut pourtant très bien être utilisé tout seul !
### SSH Unable to negotiate
Lorsque ce type de message est reçu quand on tente de se ssh à un switch :
$ ssh root@192.0.2.1 Unable to negotiate with 192.0.2.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
Il faut se connecter en précisant que l'on veut utiliser l'offre proposée diffie-hellman-group1-sha1 :
$ ssh root@192.0.2.1 -o "KexAlgorithms diffie-hellman-group1-sha1"