Browse Source

relecture

master
Gregory Colpart 2 years ago
parent
commit
3a73320a36
2 changed files with 95 additions and 90 deletions
  1. +12
    -11
      HowtoAnsible/Cisco.md
  2. +83
    -79
      SwitchCisco.md

+ 12
- 11
HowtoAnsible/Cisco.md View File

@@ -1,15 +1,16 @@
---
title: Howto Ansible/Cisco : automatisation d'infrastructure
categories automation
---
categories: automation
...

* Howto Ansible : <https://wiki.evolix.org/HowtoAnsible>
* Documentation des modules : <http://docs.ansible.com/ansible/latest/list_of_network_modules.html#ios>

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
~~~

+ 83
- 79
SwitchCisco.md View File

@@ -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://<IP>/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://<IP>/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://<IP>/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 <mac>
Switch#clear mac address-table dynamic interface <if>
Switch#clear mac address-table dynamic vlan <id>
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>
~~~

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 <mac> vlan <id> interface <if>
Switch(config)# mac address-table static <mac> vlan <id> interface <if>
~~~

### 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 !


Loading…
Cancel
Save