From 3a73320a36a11ea62627904c382bce6ede69cf54 Mon Sep 17 00:00:00 2001 From: Gregory Colpart Date: Fri, 23 Mar 2018 14:06:20 +0100 Subject: [PATCH] relecture --- HowtoAnsible/Cisco.md | 23 +++--- SwitchCisco.md | 162 ++++++++++++++++++++++-------------------- 2 files changed, 95 insertions(+), 90 deletions(-) diff --git a/HowtoAnsible/Cisco.md b/HowtoAnsible/Cisco.md index 51844779..28413748 100644 --- a/HowtoAnsible/Cisco.md +++ b/HowtoAnsible/Cisco.md @@ -1,15 +1,16 @@ --- title: Howto Ansible/Cisco : automatisation d'infrastructure -categories automation ---- +categories: automation +... +* Howto Ansible : * Documentation des modules : Cette documentation est basée sur la version 2.2 d'Ansible que nous utilisons actuellement, et est susceptible de différer dès la version 2.3. -# Connection aux switchs +## Connexion aux switchs -Ansible utilise python, mais ce dernier n'étant pas disponible sur les switchs, le mode de connexion n'est pas le même. Au lieu d'utiliser une connexion SSH, on doit utiliser une connexion locale : Ansible exécute le code sur la machine locale, ce qui génère les commandes qui sont ensuite envoyées par SSH sur le switch distant. Cela pose cependant un problème : le switch sur lequel on veut lancer un playbook doit être directement accessible par la machine locale, puisque le fichier ~/.ssh/config n'est pas utilisé. +Ansible utilise Python, mais ce dernier n'étant pas disponible sur les switchs, le mode de connexion n'est pas le même. Au lieu d'utiliser une connexion SSH, on doit utiliser une connexion locale : Ansible exécute le code sur la machine locale, ce qui génère les commandes qui sont ensuite envoyées par SSH sur le switch distant. Cela pose cependant un problème : le switch sur lequel on veut lancer un playbook doit être directement accessible par la machine locale, puisque le fichier `~/.ssh/config` n'est pas utilisé. On doit donc indiquer dans notre playbook comment la machine locale doit se connecter sur le switch distant dans une variable qui sera ensuite passée à chaque utilisation d'un module. @@ -121,11 +122,11 @@ Le module [ios_config](http://docs.ansible.com/ansible/latest/ios_config_module. Cette tâche sera exécutée uniquement si la configuration actuelle ne contient pas exactement ces valeurs (`match: exact`) et est l'équivalent de : ~~~ -Switch(config)#no ip access-list extended test -Switch(config)#ip access-list extended test -Switch(config-ext-nacl)#10 permit ip host 1.1.1.1 any log -Switch(config-ext-nacl)#20 permit ip host 2.2.2.2 any log -Switch(config-ext-nacl)#30 permit ip host 3.3.3.3 any log -Switch(config-ext-nacl)#40 permit ip host 4.4.4.4 any log -Switch(config-ext-nacl)#50 permit ip host 5.5.5.5 any log +Switch(config)# no ip access-list extended test +Switch(config)# ip access-list extended test +Switch(config-ext-nacl)# 10 permit ip host 1.1.1.1 any log +Switch(config-ext-nacl)# 20 permit ip host 2.2.2.2 any log +Switch(config-ext-nacl)# 30 permit ip host 3.3.3.3 any log +Switch(config-ext-nacl)# 40 permit ip host 4.4.4.4 any log +Switch(config-ext-nacl)# 50 permit ip host 5.5.5.5 any log ~~~ diff --git a/SwitchCisco.md b/SwitchCisco.md index 6221f260..4487b6b5 100644 --- a/SwitchCisco.md +++ b/SwitchCisco.md @@ -3,7 +3,7 @@ categories: network title: Howto SwitchCisco ... -Nous utilisons principalement des switchs Cisco Catalyst 2960/3750 et des Cisco Small Business, et cette documentation sera orientée pour ces modèles. +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. Ressources diverses : @@ -14,7 +14,7 @@ Ressources diverses : * [Troubleshooting](http://www.cisco.com/en/US/products/hw/switches/ps708/products_tech_note09186a008015bfd6.shtml) ; * [LED 2960S](https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst2960/hardware/installation/guide/2960_hg/higover.html#39834). -## Catalyst +## Cisco Catalyst ### Configuration initiale @@ -30,9 +30,9 @@ pu bits 8 pu parity N pu stopbits 1 pu rtscts No - ~~~ -_Note : Avec un adaptateur USB, le device est /dev/ttyUSB0 (ou autre numéro)._ + +> *Note* : Avec un adaptateur USB, le device est /dev/ttyUSB0 (ou autre numéro). * 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` @@ -133,12 +133,12 @@ Switch(config-if)# ~~~ Le premier est le mode d'exécution avec des droits minimum où l'on ne peut obtenir aucune information sensible. -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 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` : ~~~ -Switch(config)#do show running-config +Switch(config)# do show running-config ~~~ #### Changer le nom d'hôte @@ -253,7 +253,7 @@ Switch# speed {10,100,1000,auto} Switch# exit ~~~ -**Attention** : si on change la vitesse d'un port pour lequel portfast n'est pas activé, celui-ci sera désactivé par le STP pendant 30s. +**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. Affecter un nom / une description à l'interface : @@ -365,7 +365,7 @@ Directory of flash:/ 57931776 bytes total (42733568 bytes free) ~~~ -Copier la configuration actuelle dans un fichier nommé _sauvegarde_ : +Copier la configuration actuelle dans un fichier nommé `sauvegarde` : ~~~ Switch# copy running-config sauvegarde @@ -394,10 +394,10 @@ Delete flash:/sauvegarde? [confirm] On peut aussi envoyer la configuration sur un serveur distant : ~~~ -Switch# copy running-config ftp:///rep/sauvegarde_29fevrier2012.txt +Switch# copy running-config ftp://ftp.example.com/rep/sauvegarde_29fevrier2012.txt ~~~ -Si le serveur ftp nécessite des identifiants de connexion, on peut les configurer : +Si le serveur FTP nécessite des identifiants de connexion, on peut les configurer : ~~~ Switch(config)# ip ftp username jdoe @@ -417,13 +417,13 @@ Directory of flash:/c2960s-universalk9-mz.122-55.SE3/ 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 -Switch# copy flash:/c2960s-universalk9-mz.122-55.SE3/c2960s-universalk9-mz.122-55.SE3.bin ftp:///rep/sauvegarde_firmware.bin +Switch# copy flash:/c2960s-universalk9-mz.122-55.SE3/c2960s-universalk9-mz.122-55.SE3.bin ftp://ftp.example.com/rep/sauvegarde_firmware.bin ~~~ -Pour sauvegarder la liste des VLANs, c'est le fichier vlan.dat qui nous intéresse : +Pour sauvegarder la liste des VLANs, c'est le fichier `vlan.dat` qui nous intéresse : ~~~ -Switch# copy flash:/vlan.dat ftp:///rep/sauvegarde_vlan.dat +Switch# copy flash:/vlan.dat ftp://ftp.example.com/rep/sauvegarde_vlan.dat ~~~ ### Mettre à jour IOS @@ -444,8 +444,8 @@ Switch# reload ~~~ Switch# configure terminal -Switch(config)#interface Vlan 1 -Switch(config-if)#ip address 192.168.0.10 255.255.255.0 +Switch(config)# interface Vlan 1 +Switch(config-if)# ip address 192.168.0.10 255.255.255.0 ~~~ #### Créer un VLAN @@ -484,10 +484,10 @@ On peut affecter un range de ports à un VLAN : ~~~ Switch# conf t -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 +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 ~~~ Attention : on ne peut pas spécifier plus de 5 groupes de range séparés par des virgules à la fois (maximum 4 virgules). @@ -634,15 +634,15 @@ La configuration IP de base permet un accès au switch via telnet #### Désactiver les services web ~~~ -Switch(config)#no ip http server -Switch(config)#no ip http secure-server +Switch(config)# no ip http server +Switch(config)# no ip http secure-server ~~~ #### Synchroniser les logs ~~~ -Switch(config)#line console 0 -Switch(config-line)#logging synchronous +Switch(config)# line console 0 +Switch(config-line)# logging synchronous ~~~ 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. @@ -652,30 +652,30 @@ Cette commande permet de ne pas interrompre le prompt de l'utilisateur lorsque d Lister toutes les adresses MAC connues : ~~~ -Switch#show mac address-table -Switch#show mac address-table int Gi0/11 +Switch# show mac address-table +Switch# show mac address-table int Gi0/11 ~~~ Gestion des adresses MAC dynamiques, notamment forcer la suppression : ~~~ -Switch#clear mac address-table dynamic -Switch#clear mac address-table dynamic address -Switch#clear mac address-table dynamic interface -Switch#clear mac address-table dynamic vlan +Switch# clear mac address-table dynamic +Switch# clear mac address-table dynamic address +Switch# clear mac address-table dynamic interface +Switch# clear mac address-table dynamic vlan ~~~ Configurer des alertes lors de modifications : ~~~ -Switch(config)#snmp-server enable traps mac-notification change -Switch(config)#snmp-server enable traps mac-notification move +Switch(config)# snmp-server enable traps mac-notification change +Switch(config)# snmp-server enable traps mac-notification move ~~~ Forcer des adresses MAC de façon statique : ~~~ -Switch(config)#mac address-table static vlan interface +Switch(config)# mac address-table static vlan interface ~~~ ### STP : Spanning Tree Protocol @@ -695,7 +695,7 @@ Des vérifications sont réalisées régulièrement pour détecter un changement /!\ 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 ! ~~~ -Switch#conf t +Switch# conf t (config)# int Gi0/49 (config-if)# keepalive ~~~ @@ -719,23 +719,23 @@ Il faut avoir les mêmes valeurs si d'autres équipements interviennent sur le r #### Voir les informations du STP sur le switch. ~~~ -#show spanning-tree summary -#show spanning-tree -#show spanning-tree detail +Switch# show spanning-tree summary +Switch# show spanning-tree +Switch# show spanning-tree detail ~~~ #### Activer le mode rapid STP 802.1w. ~~~ -Switch#conf t -Switch(config)#spanning-tree mode rapid-pvst +Switch# conf t +Switch(config)# spanning-tree mode rapid-pvst ~~~ #### Forcer un switch en root (la priorité sera calculée automatiquement). ~~~ -Switch#conf t -Switch(config)#spanning-tree vlan 1-4096 root primary +Switch# conf t +Switch(config)# spanning-tree vlan 1-4096 root primary ~~~ #### Changer le coût d'un port. @@ -769,15 +769,15 @@ On utilisera cette commande uniquement si l'on est sûr de ne pas avoir besoin d Activer le portfast : ~~~ -Switch(config)#interface GigabitEthernet0/28 -Switch(config-if)#spanning-tree portfast +Switch(config)# interface GigabitEthernet0/28 +Switch(config-if)# spanning-tree portfast ~~~ Désactiver le portfast : ~~~ -Switch(config)#interface GigabitEthernet0/28 -Switch(config-if)#no spanning-tree portfast +Switch(config)# interface GigabitEthernet0/28 +Switch(config-if)# no spanning-tree portfast ~~~ ### Rate-limiting @@ -787,9 +787,9 @@ 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 +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. @@ -797,7 +797,7 @@ La négociation de la vitesse (commande `speed`) ne fonctionne que sur une inter Infos sur le rate-limiting : ~~~ -Switch#show mls qos interface GigabitEthernet0/1 queueing +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 @@ -812,21 +812,21 @@ The port is mapped to qset : 1 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 +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 +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 +Switch(config)# no monitor session 1 ~~~ #### Copier la transmission ou la réception @@ -836,8 +836,8 @@ Sans aucun des deux mots clefs `rx` ou `tx`, la réception et la transmission so 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 +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. @@ -848,12 +848,12 @@ Par défaut, le port mirroring renvoie tout le trafic vers l'interface de destin 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 vlan +#### Filtrer les VLANs -Si un port source est un port trunk dans lequel passent les VLAN 2, 3, 4, 5 et 6, mais que l'on ne veut mirrorer que les VLAN 3 et 5 : +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 +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. @@ -863,18 +863,10 @@ Si parmi les ports source, l'un est en mode trunk et l'autre est en mode access, 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 +Switch(config)# monitor session 1 source interface g0/1 , g0/5 +Switch(config)# monitor session 1 destination interface g0/15 ingress vlan 15 ~~~ -### Stack - -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 ! ### Cron / tâches planifiées @@ -904,14 +896,14 @@ switch(config)# exit 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 +Switch# conf t +Switch(config)# service unsupported-transceiver ~~~ On peut ensuite les lister via : ~~~ -Switch#show inventory +Switch# show inventory ~~~ ### Remettre un port désactivé par errdisable @@ -919,10 +911,10 @@ Switch#show inventory 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 +Switch# conf t +Switch(config)# interface GigabitEthernet0/28 +Switch(config-if)# shutdown +Switch(config-if)# no shutdown ~~~ ### Consulter les informations DOM d'un SFP @@ -963,10 +955,10 @@ Pour activer le DHCP Relay, sur chaque interface VLAN, rajouter la directive `ip 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 +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. @@ -1072,3 +1064,15 @@ Switch(config-if)# end ## 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 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 ! +