wiki/SwitchCisco.md

1079 lines
34 KiB
Markdown
Raw Normal View History

2018-03-21 18:10:54 +01:00
---
categories: network
title: Howto SwitchCisco
...
2016-12-29 11:25:39 +01:00
2018-03-23 14:06:20 +01:00
Nous utilisons principalement des switchs [Cisco Catalyst](https://www.cisco.com/c/fr_fr/products/switches/index.html) 2960/3750 et quelques [Cisco Small Business](https://www.cisco.com/c/fr_fr/products/switches/index.html), cette documentation sera orientée pour ces modèles.
2016-12-29 11:25:39 +01:00
Ressources diverses :
2018-03-21 18:10:54 +01:00
* [Liste des firmwares IOS](https://www.cisco.com/c/en/us/support/ios-nx-os-software/index.html) ;
2016-12-29 11:25:39 +01:00
* [Centre de téléchargement cisco](http://www.cisco.com/cisco/software/navigator.html?mdfid=278875285&flowid=7448) ;
* [Manuel Catalyst 2960/2960-S 12.2(55)SE](http://www.cisco.com/en/US/docs/switches/lan/catalyst2960/software/release/12.2_55_se/configuration/guide/scg_2960.html) ;
* [Data Sheet Catalyst 3750](http://www.cisco.com/en/US/prod/collateral/switches/ps5718/ps5023/product_data_sheet0900aecd80371991.html) ;
* [Troubleshooting](http://www.cisco.com/en/US/products/hw/switches/ps708/products_tech_note09186a008015bfd6.shtml) ;
2018-03-21 18:10:54 +01:00
* [LED 2960S](https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst2960/hardware/installation/guide/2960_hg/higover.html#39834).
2016-12-29 11:25:39 +01:00
2018-03-23 14:06:20 +01:00
## Cisco Catalyst
2016-12-29 11:25:39 +01:00
### Configuration initiale
#### Avec un port série (old-school)
* Raccorder le port d'administration du switch au port série d'un poste Linux à l'aide du câble fourni (couleur bleu ciel)
* Installer `minicom` et créer le fichier de configuration `/etc/minicom/minirc.cisco` avec un contenu du type :
~~~
pu port /dev/ttyS0
pu baudrate 9600
pu bits 8
pu parity N
pu stopbits 1
pu rtscts No
~~~
2018-03-23 14:06:20 +01:00
> *Note* : Avec un adaptateur USB, le device est /dev/ttyUSB0 (ou autre numéro).
2016-12-29 11:25:39 +01:00
* Exécuter la commande `minicom cisco` et observer l'initialisation du switch. A la question `Would you like to enter the initial configuration dialog?`, répondre `no`
* Passer en mode administrateur avec la commande `enable`, et afficher la configuration par défaut avec `show running-config`
#### Avec un câble Ethernet
Pour un switch récent, une fois allumé pour la 1ère fois et les voyants _SYST_, _MAST_ et _STAT_ verts, on appuie 3 à 4 secondes sur le bouton _MODE_ ce qui le fait passer en mode _Express Setup_.
2016-12-29 11:25:39 +01:00
Note : cela ne fonctionne que si le switch n'a jamais été configuré.
On branche un câble sur n'importe quel port et on lance un client DHCP sur un ordinateur :
~~~
# dhclient -d eth0
Internet Systems Consortium DHCP Client 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit <https://www.isc.org/software/dhcp/>
Listening on LPF/eth0/f0:de:f1:12:c9:d2
Sending on LPF/eth0/f0:de:f1:12:c9:d2
Sending on Socket/fallback
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPNAK from 10.0.2.3
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5
DHCPOFFER from 10.0.2.3
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 10.0.2.3
bound to 10.0.2.2 -- renewal in 271 seconds.
~~~
On obtient ainsi l'adresse IP actuelle du switch : 10.0.2.3 et l'on peut se connecter en telnet sans mot de passe, ou en HTTP avec cisco/cisco.
Le plus simple est a priori de le faire en HTTP où l'on renseigne une configuration IP de base et les mots de passe, et l'on sort du mode
_Express Setup_ une fois terminé.
### Commandes de base
2018-03-21 18:10:54 +01:00
#### Commandes de bases sous IOS
2016-12-29 11:25:39 +01:00
~~~
Switch# show version
Switch# show mem
Switch# show processes
Switch# show process cpu
Switch# show flash
Switch# show clock
Switch# show history
Switch# show logging
Switch# show inventory
Switch# show interfaces
Switch# show interfaces status
Switch# show interfaces st
Switch# show interfaces counter
Switch# show interfaces counter errors
Switch# show interfaces Gi0/11
Switch# show interfaces Gi0/11 status
Switch# show interfaces Gi0/11 counter
Switch# show interfaces Gi0/11 counter errors
Switch# show interfaces trunk
Switch# show interfaces description
~~~
#### Gestion de base de la configuration
2018-03-21 18:10:54 +01:00
Voir la configuration en Flash :
2016-12-29 11:25:39 +01:00
~~~
Switch# show startup-config
2018-03-21 18:10:54 +01:00
~~~
2017-07-26 10:57:23 +02:00
2018-03-21 18:10:54 +01:00
Voir la configuration actuelle :
~~~
2016-12-29 11:25:39 +01:00
Switch# show running-config
2018-03-21 18:10:54 +01:00
~~~
2017-07-26 10:57:23 +02:00
2018-03-21 18:10:54 +01:00
Configuration actuelle d'une interface particulière :
~~~
2016-12-29 11:25:39 +01:00
Switch# show running-config interface GigabitEthernet1/0/1
2018-03-21 18:10:54 +01:00
~~~
2017-07-26 10:57:23 +02:00
2018-03-21 18:10:54 +01:00
Ecrire la configuration actuelle en Flash :
~~~
2016-12-29 11:25:39 +01:00
Switch# write
~~~
#### Modes d'exécution des commandes
Il existe différents niveaux de mode dans lesquels différentes commandes peuvent s'exécuter. Parmi les plus communs :
~~~
Switch>
Switch#
Switch(config)#
Switch(config-if)#
~~~
Le premier est le mode d'exécution avec des droits minimum où l'on ne peut obtenir aucune information sensible.
2018-03-23 14:06:20 +01:00
On passe dans le mode d'exécution privilégié avec `Switch> enable`. Dans ce mode, on ne peut rien configurer, mais c'est dans celui-ci que l'on pourra exécuter les commandes `show` permettant d'examiner les configurations en place. Avec `Switch# configure terminal`, on arrive dans le mode de configuration global. Enfin, `Switch(config)# interface XXX` nous mettra dans le mode de configuration d'interface.
On peut descendre d'un niveau avec la commande `exit`, ou redescendre directement vers le mode d'exécution privilégié avec la commande `end`. Les commandes `show` ne peuvent s'exécuter que dans le mode d'exécution privilégié, mais peuvent être exécutés depuis un mode plus élevé en débutant la commande avec `do` :
~~~
2018-03-23 14:06:20 +01:00
Switch(config)# do show running-config
~~~
2016-12-29 11:25:39 +01:00
#### Changer le nom d'hôte
~~~
Switch# configure terminal
Switch(config)# hostname sw-test
sw-test(config)# end
~~~
#### Changer le nom de domaine
~~~
Switch# conf t
Switch(config)# ip domain-name test.com
Switch(config)# end
~~~
#### Chiffrer les mots de passe
~~~
Switch# configure terminal
Switch(config)# service password-encryption
~~~
Avec cette commande, les mots de passes définis avec le mot-clef `password` ne seront pas en clair.
2017-07-25 19:05:26 +02:00
Attention : ces mots de passe ne sont pas sécurisés et sont déchiffrables par [Cisco Password Cracker](http://www.ifm.net.nz/cookbooks/passwordcracker.html). Il ne faut donc pas utiliser le mot clef `password` et préférer `secret` lorsque cela est possible : `enable secret PASSWORD` au lieu de `enable password PASSWORD`, et ne pas utiliser `password PASSWORD` pour les connexions telnet, ssh ou console. Voir [SwitchCisco#mise-en-place-dun-compte-utilisateur]()
Il faut également utiliser un mot de passe fort, puisque les mots de passes chiffrés par secret sont hashés en MD5 et déchiffrables avec [Cisco IOS Enable Secret Type 5 Password Cracker](http://www.ifm.net.nz/cookbooks/cisco-ios-enable-secret-password-cracker.html)
2016-12-29 11:25:39 +01:00
#### Mise en place d'un compte utilisateur
2016-12-29 11:25:39 +01:00
~~~
Switch(config)# username jdoe privilege 15 secret PASSWORD
2016-12-29 11:25:39 +01:00
~~~
Les privilèges vont de 0 à 15.
Par défaut, les privilèges 0 et 1 connectent l'utilisateur en mode user (prompt `Switch>`) où `enable` est nécessaire pour passer dans le mode supérieur. Les privilèges 2 à 15 connectent directement l'utilisateur dans le mode supérieur (prompt `Switch#`).
2016-12-29 11:25:39 +01:00
#### Mise en place d'un mot de passe "enable"
2016-12-29 11:25:39 +01:00
~~~
Switch# configure terminal
2017-07-25 19:05:26 +02:00
Switch(config)# enable secret PASSWORD
Switch(config)# end
2016-12-29 11:25:39 +01:00
~~~
Note : si besoin de désactiver un ancien mot de passe, il peut être nécessaire de faire `no enable secret`
2016-12-29 11:25:39 +01:00
2017-07-25 19:05:26 +02:00
#### Mise en place d'un mot de passe console
2018-03-21 18:10:54 +01:00
Important : Mettre en place le [compte utilisateur](SwitchCisco#mise-en-place-dun-compte-utilisateur).
2016-12-29 11:25:39 +01:00
~~~
Switch# configure terminal
2017-07-25 16:11:26 +02:00
Switch(config)# line console 0
Switch(config-line)# login local
2016-12-29 11:25:39 +01:00
Switch(config-line)# end
~~~
Avec `login local`, on utilisera un compte local créé par la commande `username`, alors qu'avec `login`, aucun compte n'est utilisé et le mot de passe doit être défini avec la commande `password PASSWORD`. Ces dernières ne doivent pas être utilisées, étant donné que le mot de passe ne serait pas sécurisé.
2016-12-29 11:25:39 +01:00
#### Synchronisation NTP
~~~
2017-05-16 10:42:49 +02:00
Switch# configure terminal
Switch(config)# ntp server 31.170.8.123
Switch(config)# end
2016-12-29 11:25:39 +01:00
Switch# show ntp status
Switch# show ntp associations
~~~
#### Infos/gestion d'une interface
Voir l'état et la vitesse de tous les ports :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
Switch# show interfaces status
~~~
Statut d'une interface :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
Switch# show interfaces GigabitEthernet1/0/48
~~~
Infos détaillées sur la config d'un port :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
Switch# show interfaces GigabitEthernet1/0/48 switchport
~~~
Désactiver/activer une interface :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
Switch# conf t
Switch# interface GigabitEthernet1/0/48
Switch# shutdown
Switch# no shutdown
Switch# exit
~~~
Forcer la vitesse du port :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
Switch# conf t
Switch# interface GigabitEthernet1/0/48
Switch# speed {10,100,1000,auto}
Switch# exit
~~~
2018-03-23 14:06:20 +01:00
**Attention** : si l'on change la vitesse d'un port pour lequel portfast n'est pas activé, celui-ci sera désactivé par le STP pendant 30s.
2016-12-29 11:25:39 +01:00
Affecter un nom / une description à l'interface :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
Switch# conf t
Switch# interface GigabitEthernet1/0/48
Switch# description Machine XYZ
~~~
Gestion du MTU pour toutes les interfaces Gigabits :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-07-26 10:57:23 +02:00
Switch(config)# system mtu jumbo 9000
2016-12-29 11:25:39 +01:00
~~~
#### Gérer les fichiers/répertoires
~~~
Switch# cd flash:
Switch# cd rep
Switch# dir
Switch# copy foo bar
Switch# delete bar
Switch# mkdir rep
Switch# rm rep
Switch# more info.txt
Switch# verify image.bin
~~~
Commandes à manipuler avec précaution :
~~~
Switch# fsck
Switch# erase
Switch# format
~~~
#### Reboot complet du switch
~~~
Switch# reload
~~~
#### Reset complet du switch
##### Avec le bouton _MODE_
2018-03-21 21:59:23 +01:00
Si l'on appuie plus de 8 secondes sur le bouton _MODE_, le switch redémarre et sera remis en configuration d'usine !
2016-12-29 11:25:39 +01:00
##### Autre méthode sans mot de passe
Sur certains modèles, cette méthode ne fonctionne pas. Après être raccordé au switch, il faut le redémarrer en maintenant le bouton MODE enfoncé.
2016-12-29 11:25:39 +01:00
Ensuite, initialiser le file system flash :
~~~
switch: flash_init
switch: load_helper
~~~
2018-03-21 18:10:54 +01:00
On peut sauvegarder ou supprimer l'ancienne configuration :
2016-12-29 11:25:39 +01:00
~~~
switch: dir_flash:
switch: rename flash:config.text flash:config.old
~~~
2018-03-21 18:10:54 +01:00
Enfin, on boot :
2016-12-29 11:25:39 +01:00
~~~
switch: boot
~~~
### Sauvegardes
Voir la liste des protocoles disponibles :
~~~
Switch# show file systems
File Systems:
Size(b) Free(b) Type Flags Prefixes
- - opaque ro bs:
* 57931776 42733568 flash rw flash: flash1:
- - opaque rw system:
- - opaque rw tmpsys:
524288 518420 nvram rw nvram:
- - opaque rw null:
- - opaque ro tar:
- - network rw tftp:
- - opaque ro xmodem:
- - opaque ro ymodem:
- - network rw rcp:
- - network rw <http:>
- - network rw ftp:
- - network rw scp:
- - network rw <https:>
- - opaque ro cns:
2018-03-21 18:10:54 +01:00
2016-12-29 11:25:39 +01:00
Switch# show flash
Directory of flash:/
581 -rwx 5 Mar 21 2012 19:19:25 +01:00 private-config.text
582 -rwx 3096 Mar 21 2012 19:19:25 +01:00 multiple-fs
583 -rwx 2739 Mar 21 2012 19:19:25 +01:00 config.text
2 drwx 512 Mar 1 1993 01:14:39 +01:00 c2960s-universalk9-mz.122-55.SE3
57931776 bytes total (42733568 bytes free)
~~~
2018-03-23 14:06:20 +01:00
Copier la configuration actuelle dans un fichier nommé `sauvegarde` :
2016-12-29 11:25:39 +01:00
~~~
Switch# copy running-config sauvegarde
Destination filename [sauvegarde]?
2739 bytes copied in 2.076 secs (1319 bytes/sec)
Switch# show flash
Directory of flash:/
580 -rwx 2739 Mar 21 2012 19:29:32 +01:00 sauvegarde
581 -rwx 5 Mar 21 2012 19:19:25 +01:00 private-config.text
582 -rwx 3096 Mar 21 2012 19:19:25 +01:00 multiple-fs
583 -rwx 2739 Mar 21 2012 19:19:25 +01:00 config.text
2 drwx 512 Mar 1 1993 01:14:39 +01:00 c2960s-universalk9-mz.122-55.SE3
57931776 bytes total (42729984 bytes free)
Switch# delete sauvegarde
Delete filename [sauvegarde]?
Delete flash:/sauvegarde? [confirm]
~~~
On peut aussi envoyer la configuration sur un serveur distant :
~~~
2018-03-23 14:06:20 +01:00
Switch# copy running-config ftp://ftp.example.com/rep/sauvegarde_29fevrier2012.txt
2016-12-29 11:25:39 +01:00
~~~
2018-03-23 14:06:20 +01:00
Si le serveur FTP nécessite des identifiants de connexion, on peut les configurer :
2017-07-26 10:57:23 +02:00
~~~
Switch(config)# ip ftp username jdoe
Switch(config)# ip ftp password PASSWORD
~~~
2016-12-29 11:25:39 +01:00
De même, on peut sauvegarder le firmware du switch sur un serveur distant :
~~~
Switch# cd flash:/
Switch# cd c2960s-universalk9-mz.122-55.SE3
Switch# dir
Directory of flash:/c2960s-universalk9-mz.122-55.SE3/
3 drwx 5632 Mar 1 1993 01:08:54 +01:00 html
578 -rwx 10907578 Mar 1 1993 01:10:24 +01:00 c2960s-universalk9-mz.122-55.SE3.bin
579 -rwx 484 Mar 1 1993 01:13:44 +01:00 info
2018-03-23 14:06:20 +01:00
Switch# copy flash:/c2960s-universalk9-mz.122-55.SE3/c2960s-universalk9-mz.122-55.SE3.bin ftp://ftp.example.com/rep/sauvegarde_firmware.bin
2016-12-29 11:25:39 +01:00
~~~
2018-03-23 14:06:20 +01:00
Pour sauvegarder la liste des VLANs, c'est le fichier `vlan.dat` qui nous intéresse :
2016-12-29 11:25:39 +01:00
~~~
2018-03-23 14:06:20 +01:00
Switch# copy flash:/vlan.dat ftp://ftp.example.com/rep/sauvegarde_vlan.dat
2016-12-29 11:25:39 +01:00
~~~
### Mettre à jour IOS
2018-03-21 18:10:54 +01:00
S'il y a assez de place sur la mémoire flash (`dir flash:`), copier le nouveau firmware dessus (`copy ftp://<IP>/fichier.bin flash:`), sinon effacer le contenu de la flash (`erase flash:`), puis placer le nouveau firmware.
2016-12-29 11:25:39 +01:00
Ensuite, il suffit de spécifier de charger le nouveau firmware.
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-07-26 10:57:23 +02:00
Switch> enable
Switch# conf t
Switch(config)# system boot flash:new_firmware.bin
Switch# reload
2016-12-29 11:25:39 +01:00
~~~
### Gestion des VLANs
#### Affecter une adresse IP à un VLAN
~~~
2017-07-26 10:57:23 +02:00
Switch# configure terminal
2018-03-23 14:06:20 +01:00
Switch(config)# interface Vlan 1
Switch(config-if)# ip address 192.168.0.10 255.255.255.0
2016-12-29 11:25:39 +01:00
~~~
#### Créer un VLAN
Dans cet exemple, ce sera le VLAN d'ID 2 nommé "bob".
~~~
Switch# configure terminal
Switch(config)# vlan 2
Switch(config-vlan)# name bob
Switch(config-vlan)# end
~~~
#### Supprimer un VLAN
~~~
Switch# configure terminal
Switch(config)# no vlan 2
Switch(config)# end
~~~
#### Affecter des interfaces (ports) à un VLAN
Dans cet exemple on affecte l'interface `GigabitEthernet 0/13` au VLAN 2
~~~
Switch# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)# interface gigabitethernet0/13
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 2
Switch(config-if)# end
~~~
On peut affecter un range de ports à un VLAN :
~~~
Switch# conf t
2018-03-23 14:06:20 +01:00
Switch(config)# interface range GigabitEthernet1/0/1-24,GigabitEthernet1/0/30-35
Switch(config-if-range)# switchport mode access
Switch(config-if-range)# switchport access vlan 13
Switch(config-if-range)# exit
2016-12-29 11:25:39 +01:00
~~~
2017-10-18 15:03:22 +02:00
Attention : on ne peut pas spécifier plus de 5 groupes de range séparés par des virgules à la fois (maximum 4 virgules).
2016-12-29 11:25:39 +01:00
#### Voir la configuration des VLAN
##### D'un VLAN en particulier
~~~
Switch# show vlan <ID>
Switch# show interfaces vlan <ID>
~~~
##### De tous les VLAN
Voir un résumé de la configuration :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
Switch# show vlan brief
~~~
Voir la configuration de tous les VLAN :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
Switch# show vlan
~~~
#### Faire un port trunk
Dans cet exemple l'interface _trunké_ est l'interface `GigabitEthernet0/24`
2018-03-21 18:10:54 +01:00
Sur un switch niveau 3 :
2016-12-29 11:25:39 +01:00
~~~
Switch# configure terminal
Enter configuration commandsss, one per line. End with CNTL/Z.
Switch(config)# interface gigabitethernet0/24
Switch(config-if)# switchport trunk encapsulation dot1q
Switch(config-if)# switchport mode trunk
Switch(config-if)# end
~~~
2018-03-21 18:10:54 +01:00
Un switch niveau 2 ne supporte que le dot1q. On aura juste à basculer le port en mode trunk :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-07-26 10:57:23 +02:00
Switch(config-if)# switchport mode trunk
2016-12-29 11:25:39 +01:00
~~~
Il est possible de spécifier le ou les vlans transportés par le trunk :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-07-26 10:57:23 +02:00
Switch(config-if)# switchport trunk allowed vlan 11,13
2016-12-29 11:25:39 +01:00
~~~
Astuce : pour ajouter un VLAN sur un trunk sans reprendre toute la liste de ceux déjà autorisés on peut utiliser la syntaxe :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-07-26 10:57:23 +02:00
Switch(config-if)# switchport trunk allowed vlan add 42
2016-12-29 11:25:39 +01:00
~~~
Pour le supprimer :
~~~
2017-07-26 10:57:23 +02:00
Switch(config-if)# switchport trunk allowed vlan remove 42
~~~
2016-12-29 11:25:39 +01:00
Une façon de contrôler si le trunk est bien mis en place des 2 côté est de consulter la sortie de la commande "show vlan brief". Si le port est toujours dans le vlan 1, c'est que le trunk n'est pas opérationnel (interface non montée, ou port distant non configuré en trunk). Si tout fonctionne bien, on ne doit le voir dans aucun vlan, mais on le verra en trunk dans un "show interfaces status".
Pour afficher les VLAN autorisés sur un trunk :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-07-26 10:57:23 +02:00
Switch# show interfaces Gi1/0/50 trunk
2016-12-29 11:25:39 +01:00
~~~
Pour afficher la configuration de tous les trunks :
~~~
2017-07-26 10:57:23 +02:00
Switch# show interfaces trunk
~~~
2016-12-29 11:25:39 +01:00
ATTENTION : si l'on configure un port trunk, il est indispensable de créer le VLAN sur le switch, sinon cela ne marche pas !
### Administration à distance
#### Par telnet
2017-01-03 11:20:35 +01:00
2018-03-21 18:10:54 +01:00
Important : Mettre en place le [compte utilisateur](SwitchCisco#mise-en-place-dun-compte-utilisateur).
2017-07-25 18:14:44 +02:00
2016-12-29 11:25:39 +01:00
~~~
Switch# configure terminal
Switch(config)# line vty 0 15
Switch(config-line)# login local
Switch(config-line)# end
2016-12-29 11:25:39 +01:00
~~~
Note : `line vty 0 4` autorise 5 connexions simultanées tandis que `line vty 0 15` en autorise 16. Les plus anciens switchs ne permettaient pas plus de 5 connexions simultanées, c'est pourquoi les vty 0 4 et 5 15 sont souvent séparés.
#### Par SSH
2018-03-21 18:10:54 +01:00
Important : Mettre en place le [nom d'hôte](SwitchCisco#changer-le-nom-dh%C3%B4te), le [nom de domaine](SwitchCisco#changer-le-nom-de-domaine), et le [compte utilisateur](SwitchCisco#mise-en-place-dun-compte-utilisateur).
2016-12-29 11:25:39 +01:00
Activation de SSH, et désactivation de telnet :
2017-07-03 14:24:26 +02:00
2016-12-29 11:25:39 +01:00
~~~
Switch# configure terminal
Switch(config)# crypto key generate rsa
Switch(config)# line vty 0 15
Switch(config-line)# login local
Switch(config-line)# transport input ssh
2017-08-31 10:16:35 +02:00
Switch(config-line)# exit
Switch(config)# ip ssh version 2
2016-12-29 11:25:39 +01:00
~~~
Si on veut avoir à la fois telnet et SSH, remplacer `transport input ssh` par `transport input all`.
2016-12-29 11:25:39 +01:00
#### Activer SNMP
Afin de permettre des requêtes SNMP :
~~~
Switch# conf t
(config)# snmp-server community public RO
~~~
On pourra ainsi faire des requêtes du type :
~~~
$ snmpwalk -v2c -c public <IP switch> .1
~~~
#### Configuration IP
Configuration IP de base :
~~~
Switch# conf t
(config)# interface Vlan1
(config-if)# ip address 192.168.0.1 255.255.255.0
(config-if)# no shutdown
~~~
La configuration IP de base permet un accès au switch via telnet
2018-03-21 18:10:54 +01:00
#### Désactiver les services web
2016-12-29 11:25:39 +01:00
~~~
2018-03-23 14:06:20 +01:00
Switch(config)# no ip http server
Switch(config)# no ip http secure-server
2016-12-29 11:25:39 +01:00
~~~
#### Synchroniser les logs
~~~
2018-03-23 14:06:20 +01:00
Switch(config)# line console 0
Switch(config-line)# logging synchronous
~~~
2018-03-21 18:10:54 +01:00
Cette commande permet de ne pas interrompre le prompt de l'utilisateur lorsque des logs s'affichent sur le switch. Ils s'afficheront sur la ligne du dessus plutôt que sur la ligne courante.
2016-12-29 11:25:39 +01:00
### Gestion des adresses MAC
Lister toutes les adresses MAC connues :
~~~
2018-03-23 14:06:20 +01:00
Switch# show mac address-table
Switch# show mac address-table int Gi0/11
2016-12-29 11:25:39 +01:00
~~~
2018-03-21 18:10:54 +01:00
Gestion des adresses MAC dynamiques, notamment forcer la suppression :
2016-12-29 11:25:39 +01:00
~~~
2018-03-23 14:06:20 +01:00
Switch# clear mac address-table dynamic
Switch# clear mac address-table dynamic address <mac>
Switch# clear mac address-table dynamic interface <if>
Switch# clear mac address-table dynamic vlan <id>
2016-12-29 11:25:39 +01:00
~~~
Configurer des alertes lors de modifications :
~~~
2018-03-23 14:06:20 +01:00
Switch(config)# snmp-server enable traps mac-notification change
Switch(config)# snmp-server enable traps mac-notification move
2016-12-29 11:25:39 +01:00
~~~
Forcer des adresses MAC de façon statique :
~~~
2018-03-23 14:06:20 +01:00
Switch(config)# mac address-table static <mac> vlan <id> interface <if>
2016-12-29 11:25:39 +01:00
~~~
### STP : Spanning Tree Protocol
<http://en.wikipedia.org/wiki/Spanning_Tree_Protocol>
Le STP est un protocole permettant de détecter et désactiver automatiquement des boucles sur un segment Ethernet.
Cela permet donc d'éviter une boucle faite par erreur (ce qui en découle sur un Packet Storm et un réseau très dégradé)
...ou de créer des boucles volontairement pour assurer de la redondance !
Le principe de fonctionnement est qu'un des switchs est élu ROOT (racine de l'arbre STP), et qu'un coût est associé à chaque lien vers le ROOT.
Ce coût est calculé automatiquement à partir du nombre de connexions et du type de ces connexions (un lien 10Mb/s coûte 100, un lien 100Mb/s coûte 19, un lien 1Gb/s coûte 4, etc.).
Ce coût peut aussi être forcé manuellement si l'on veut influencer le calcul du STP.
Ensuite, grâce à ces coûts, si une boucle est détectée certains ports peuvent être bloqués.
Des vérifications sont réalisées régulièrement pour détecter un changement et adapter les blocages si nécessaire.
/!\ Le _keepalive_ - élement essentiel pour STP - n'est pas activé par défaut sur les ports *SFP* d'un switch Cisco : il faut absolument l'activer si vos segments Ethernet sont propagés sur les ports SFP !
~~~
2018-03-23 14:06:20 +01:00
Switch# conf t
2016-12-29 11:25:39 +01:00
(config)# int Gi0/49
(config-if)# keepalive
~~~
Sur les Cisco 2960-2970, le STP est géré par VLAN on parle de « per-VLAN spanning-tree plus (PVST+) » et si le mode « Rapid » est activé de « rapid per-VLAN spanning-tree plus (rapid-PVST+) ».
La valeur par défaut de la priorité du root switch est 3276.
Le root ID est calculé avec cette priorité + une dérivation de l'adresse MAC. C'est le plus petit ID qui l'emporte.
Il peut être intéressant de changer la priorité pour choisir le switch root.
2017-07-26 10:57:23 +02:00
On peut aussi changer la priorité des ports (128 par défaut + coût du lien [10MBps = 100, 100Mbps = 19, 1Gbps = 4]) pour influencer le calcul STP et les connexions à désactiver.
2016-12-29 11:25:39 +01:00
La configuration par défaut des timers respecte les recommandations de la norme 802.1d.
~~~
Hello time: 2 seconds.
Forward-delay time: 15 seconds.
Maximum-aging time: 20 seconds.
Transmit hold count: 6 BPDUs
~~~
Il faut avoir les mêmes valeurs si d'autres équipements interviennent sur le réseau, comme des machines OpenBSD ou Linux.
2017-07-26 10:57:23 +02:00
#### Voir les informations du STP sur le switch.
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2018-03-23 14:06:20 +01:00
Switch# show spanning-tree summary
Switch# show spanning-tree
Switch# show spanning-tree detail
2016-12-29 11:25:39 +01:00
~~~
2017-07-26 10:57:23 +02:00
#### Activer le mode rapid STP 802.1w.
2016-12-29 11:25:39 +01:00
~~~
2018-03-23 14:06:20 +01:00
Switch# conf t
Switch(config)# spanning-tree mode rapid-pvst
2016-12-29 11:25:39 +01:00
~~~
2017-07-26 10:57:23 +02:00
#### Forcer un switch en root (la priorité sera calculée automatiquement).
2016-12-29 11:25:39 +01:00
~~~
2018-03-23 14:06:20 +01:00
Switch# conf t
Switch(config)# spanning-tree vlan 1-4096 root primary
2016-12-29 11:25:39 +01:00
~~~
2017-07-26 10:57:23 +02:00
#### Changer le coût d'un port.
2016-12-29 11:25:39 +01:00
~~~
Switch# conf t
2017-07-26 10:57:23 +02:00
Switch(config)# interface gigabitEthernet 0/50
Switch(config-if)# spanning-tree cost 65536
~~~
#### Changer le coût uniquement pour un ou plusieurs VLANs.
2016-12-29 11:25:39 +01:00
~~~
2017-07-26 10:57:23 +02:00
Switch(config-if)# spanning-tree vlan 1-4096 cost 1
~~~
2017-09-13 15:20:48 +02:00
#### Différence entre Spanning-Tree et Rapid Spanning-Tree
En Spanning-Tree, le rajout d'un lien créant une boucle et ayant un coût plus bas que le lien déjà en place (donc nouveau lien qui sera utilisé à la place de l'actuel) provoquera une coupure de 30s de ces deux liens. Si le lien rajouté a un coût plus élevé et qu'il ne remplacera donc aucun lien, alors seul ce nouveau lien sera coupé 30s. Le changement du switch ROOT provoque également une coupure des ports 30s.
En Rapid Spanning-Tree, le rajout d'un lien et le changement du switch ROOT ne provoquent pas de coupure, seuls des liens redondants déjà désactivés peuvent se couper 30s.
Le passage du mode Spanning-Tree au mode Rapid Spanning-Tree ou inversement provoque également la coupure de tous les ports du switch pour 30s, sauf les ports en mode portfast.
2017-07-26 10:57:23 +02:00
#### Synchro immédiate : Spanning Tree Portfast
2017-09-13 15:20:48 +02:00
Lorsque lon se branche sur un port, il faut 30s pour quil soit utilisable à cause du Spanning Tree.
2017-07-26 10:57:23 +02:00
Le Spanning Tree Portfast permet de passer un port dans l'état forwarding de façon immédiate, en lui faisant sauter les états listening et learning.
2017-09-13 15:20:48 +02:00
On utilisera cette commande uniquement si l'on est sûr de ne pas avoir besoin du Spanning Tree (serveur non virtuel connecté directement au port, etc.). Le portfast ne désactive pas le spanning-tree puisque le port continue de recevoir et d'envoyer des trames BPDU : il sera bien désactivé par STP si une boucle est créée. Mais dans ce cas, le port pourra mettre jusqu'à 2s pour se désactiver (correspondant à la valeur hello time), et donc des duplications de trames pourront avoir lieu pendant cet instant.
2018-03-21 18:10:54 +01:00
Activer le portfast :
2016-12-29 11:25:39 +01:00
~~~
2018-03-23 14:06:20 +01:00
Switch(config)# interface GigabitEthernet0/28
Switch(config-if)# spanning-tree portfast
2016-12-29 11:25:39 +01:00
~~~
2018-03-21 18:10:54 +01:00
Désactiver le portfast :
2017-07-26 10:57:23 +02:00
~~~
2018-03-23 14:06:20 +01:00
Switch(config)# interface GigabitEthernet0/28
Switch(config-if)# no spanning-tree portfast
2017-07-26 10:57:23 +02:00
~~~
2016-12-29 11:25:39 +01:00
2017-08-04 10:53:44 +02:00
### Rate-limiting
2016-12-29 11:25:39 +01:00
On peut forcer un port à rate-limiter à 10, 20, 30.... ou 90% de sa capacité.
Par exemple pour rate-limiter à du 8 Mb/s :
~~~
2018-03-23 14:06:20 +01:00
Switch(config)# int Gi0/1
Switch(config-if)# speed 10
Switch(config-if)# srr-queue bandwidth limit 80
2016-12-29 11:25:39 +01:00
~~~
2018-03-21 18:10:54 +01:00
La négociation de la vitesse (commande `speed`) ne fonctionne que sur une interface ethernet, et non fibre.
2016-12-29 11:25:39 +01:00
Infos sur le rate-limiting :
~~~
2018-03-23 14:06:20 +01:00
Switch# show mls qos interface GigabitEthernet0/1 queueing
2016-12-29 11:25:39 +01:00
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
~~~
2017-08-04 10:53:44 +02:00
### 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 :
~~~
2018-03-23 14:06:20 +01:00
Switch(config)# monitor session 1 source interface g0/1 - 3 tx
Switch(config)# monitor session 1 destination interface g0/5 encapsulation replicate
2017-08-04 10:53:44 +02:00
~~~
On peut aussi mirrorer tout ce qui passe dans un vlan particulier :
~~~
2018-03-23 14:06:20 +01:00
Switch(config)# monitor session 1 source vlan 2 , 5
Switch(config)# monitor session 1 destination interface g0/5 encapsulation replicate
2017-08-04 10:53:44 +02:00
~~~
Désactiver le port mirroring :
~~~
2018-03-23 14:06:20 +01:00
Switch(config)# no monitor session 1
2017-08-04 10:53:44 +02:00
~~~
#### 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 :
~~~
2018-03-23 14:06:20 +01:00
Switch(config)# monitor session 1 source interface g0/1 tx
Switch(config)# monitor session 1 source interface g0/2 rx
2017-08-04 10:53:44 +02:00
~~~
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.
2018-03-23 14:06:20 +01:00
#### Filtrer les VLANs
2017-08-04 10:53:44 +02:00
2018-03-23 14:06:20 +01:00
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 :
2017-08-04 10:53:44 +02:00
~~~
2018-03-23 14:06:20 +01:00
Switch(config)# monitor session 1 filter 3 , 5
2017-08-04 10:53:44 +02:00
~~~
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 :
~~~
2018-03-23 14:06:20 +01:00
Switch(config)# monitor session 1 source interface g0/1 , g0/5
Switch(config)# monitor session 1 destination interface g0/15 ingress vlan 15
2017-08-04 10:53:44 +02:00
~~~
2018-03-21 18:13:43 +01:00
2018-03-21 18:10:54 +01:00
### Cron / tâches planifiées
2016-12-29 11:25:39 +01:00
2018-03-21 18:31:04 +01:00
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://<host>/<path>/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
~~~
2016-12-29 11:25:39 +01:00
2018-03-21 18:10:54 +01:00
### Désactiver la vérification des modules GBIC
2016-12-29 11:25:39 +01:00
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 :
~~~
2018-03-23 14:06:20 +01:00
Switch# conf t
Switch(config)# service unsupported-transceiver
2016-12-29 11:25:39 +01:00
~~~
On peut ensuite les lister via :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2018-03-23 14:06:20 +01:00
Switch# show inventory
2016-12-29 11:25:39 +01:00
~~~
2018-03-21 18:10:54 +01:00
### Remettre un port désactivé par errdisable
2016-12-29 11:25:39 +01:00
Un port est désactivé dans divers cas, tel que la non-autorisation des modules GBIC tiers.
~~~
2018-03-23 14:06:20 +01:00
Switch# conf t
Switch(config)# interface GigabitEthernet0/28
Switch(config-if)# shutdown
Switch(config-if)# no shutdown
2016-12-29 11:25:39 +01:00
~~~
2018-03-21 18:10:54 +01:00
### Consulter les informations DOM d'un SFP
2016-12-29 11:25:39 +01:00
Pour surveiller la température, ou le voltage :
~~~
Switch# show interface transceiver
~~~
2018-03-21 18:10:54 +01:00
### Passer un port SFP en "speed nonegotiate"
2016-12-29 11:25:39 +01:00
On ne peut pas forcer la vitesse d'un port SFP... mais il faut parfois passer en "speed nonegotiate" :
~~~
2017-07-26 10:57:23 +02:00
Switch(config-if)# speed nonegotiate
Switch(config-if)# shutdown
Switch(config-if)# no shutdown
2016-12-29 11:25:39 +01:00
~~~
Lire <http://herdingpackets.net/2013/03/21/disabling-gigabit-link-negotiation-on-fiber-interfaces/>
## Catalyst niveau 3
2018-03-21 18:22:09 +01:00
### 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 :
~~~
2018-03-23 14:06:20 +01:00
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
2018-03-21 18:22:09 +01:00
~~~
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
2016-12-29 11:25:39 +01:00
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...
2017-07-26 10:57:23 +02:00
Dans la section "VLAN Management > Port to VLAN" selectionner 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".
2016-12-29 11:25:39 +01:00
L'application des modifications est visible dans "VLAN Management > Port VLAN Membership"
2018-03-21 18:10:54 +01:00
### CLI
Commandes similaires aux Catalyst :
2016-12-29 11:25:39 +01:00
~~~
Switch# wr
Switch# sh vlan
Switch# sh interface gi1
Switch# sh interfaces status gi1
Switch# show interface switchport gi1
2017-01-20 23:39:03 +01:00
Switch# show fiber-ports optical-transceiver
Switch# show fiber-ports optical-transceiver detailed
2016-12-29 11:25:39 +01:00
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
2017-01-20 23:39:03 +01:00
Switch(config-if)# switchport trunk allowed vlan add all
2016-12-29 11:25:39 +01:00
Switch(config-if)# end
2017-01-20 23:39:03 +01:00
Switch(config)# no lldp run
Switch(config)# no bonjour enable
Switch(config)# jumbo-frame 10000
Switch(config)# hostname foo
2017-06-27 16:55:47 +02:00
~~~
2018-03-21 18:10:54 +01:00
#### 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
~~~
2018-03-21 21:59:23 +01:00
`traffic-shape` rate-limite en sortie, et `rate-limite` en entrée.
2018-03-21 18:10:54 +01:00
## Ansible
Voir [HowtoAnsible/Cisco](HowtoAnsible/Cisco)
2018-03-23 14:06:20 +01:00
## 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 terme d'administration (mais pas forcément en terme 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 !