Ce post a pour objectif de présenter quelques astuces et commandes pratiques sur l'IOS de Cisco.

TCLSH

Le TCLSH de Cisco permet de créer des scripts et d'appliquer un ensemble de configuration sur un routeur en même temps.

TCLSH se veut être la commande la plus pratique lorsqu'il s'agit modifier une configuration d'un routeur sans prendre le risque de perdre la main sur l'équipement.

Exemple de script tclsh :

En mode enable, on rentre dans le mode de configuration tclsh :

router#tclsh
foreach i {
1.1.1.1
2.2.2.2
3.3.3.3
} { ping $i source vlan3 }

Le script se lance ensuite et effectue un ping de la listes des adresses IPs depuis l'interface vlan3.


Si nous souhaitons modifier l'interface WAN d'un routeur (nombre de pairs, adresse IP de l'interconnexion etc.) sans perdre la main, il nous faut écrire un fichier texte avec l'ensemble de la configuration souhaitée, puis enregistrer ce fichier dans la mémoire run.

Exemple de modification du nombre de paires sur une interface SDSL :

routeur#tclsh
router(tcl)#puts [open "flash:script.txt" w+] {
  no int eth0
  controller shdsl 0
  no  dsl-group 0 pairs  0, 1 efm-bond
  dsl-group 0 pairs  0, 1, 2, 3  efm-bond
  exit
  interface Ethernet0
  no ip address
  !
  interface Ethernet0.1
  encapsulation dot1Q 2900
  ip virtual-reassembly in
  pppoe enable group global
  pppoe-client dial-pool-number 1
  service-policy output c2e
  !
tclquit

On vérifie ensuite la bonne présence du fichier dans la mémoire flash :

more flash:script.txt

On demande au routeur de redémarrer dans 5 minutes :

reload in 5

On peut maintenant copier le contenu du fichier script dans la running-config, si la configuration est conforme on annule le redémarrage, sinon on laisse le routeur redémarré.

copy flash:script.txt running-config

Port Mirroring

Si l'on souhaite mirrorer l'ensemble de flux entrants de l'interface 5.18 vers l'interface 5/10 :

monitor session 1 source interface Gi5/18
monitor session 1 filter packet-type good rx
monitor session 1 destination interface Gi5/10

On réplique seulement les paquets entrants de l'interface 5/18, si l'on souhaite mirrorer seulement les flux sortants il s'agit de l'argument tx, si l'on souhaite les flux entrants et sortants il s'agit de both.

Attention, cette commande n'est pas présente sur tous les IOS

NAT/Dnat

Dnat : (Redirection de port de destination)

Il faut d'abord définir une interface inside et une interface outside.

interface vlan 1
description LAN
ip nat inside
!
interface fa4
description WAN
ip nat outside

L'interface d'entrée est inside, l'interface de sortie est outside.

ip nat inside source static tcp 172.26.156.254 22 interface Virtual-PPP1 2222

On redirige l'ensemble des flux à destination de l'adresse IP de l'interface Virtual-PPP1 sur le port 2222, vers un équipement interne 172.26.156.254 sur le port 22.


NAT : (Source NAT)

Dans ce cas, l'interface LAN est inside et l'interface de sortie Virtual-PPP1 est outside.

ip nat inside source list 99 interface Virtual-PPP1 (interface de sortie) overload

Ici on effectue une redirection de port de l'access-list 99 sur l'interface Virtual-PPP1. (ie. l'ACL 99 correspondant à 192.168.90.0/24 est naté sur l'adresse IP de l'interface Virtual-PPP1 en modifiant le port source.)

Monitorer les flux sur une interface

ip flow top-talkers est la commande de Cisco permettant d'afficher des statistiques détaillées sur l'utilisation du réseau. Ces statistiques correspondent à l'IP et au port source et destination.

Exemple de monitoring des flux entre le LAN et l’extérieur (ici Dialer 0)

routeur#configure terminak 
ip flow-top-talkers 
sort-by bytes 
top 50
cache-timeout 30000
interface Dialer 0
ip flow egress  
interface vlan 1
ip flow ingress 
end

On affiche ensuite la table top-talkers :

router#show ip flow top-talkers 

SrcIf         SrcIPaddress    DstIf         DstIPaddress    Pr SrcP DstP Bytes
Vl1           192.168.1.2     Vl1           8.8.8.8  06 E4CD 0BB7   904 
Vl1           192.168.1.2     Vl1           90.34.20.1  06 F7DF 01BB    77 
Vl1           192.168.1.2     Vl1           189.102.20.13  06 F7DF 01BB    40 
3 of 50 top talkers shown. 3 flows processed.

Cette solution permet seulement d'obtenir les flux à un instant T, pour avoir un historique il faudra mettre en place un serveur netflow.

Mise en place d'une ACL pour limiter le trafic sur une IP spécifique :

conf t
access-list 107 permit ip any host 213.139.127.144(@IP à limité, adresse source tout le réseau LAN)
access-list 107 permit ip host 213.139.127.144 any (dans les deux sens)
rate-limit input access-group 107 150000(150kbit/s)  1500(normalburst) 2000(maximum burst) conform-action transmit exceed-action drop (drop si c'est au dessus)
rate-limit output access-group 107 150000  1500 2000 conform-action transmit exceed-action drop (dans les deux sens)
show access-lists pour voir si des matchs ont lieux (connexion)
show ip-top-talkers  pour vérifier

Archive

La commande archive sous IOS permet de versionner les configurations, très pratique lorsque nous ne sommes pas sûr du résultat ou que l'on souhaite voir les différences entre version.

Archive permet d'éviter le reload in 5 puisque lors d'une modification de la configuration du routeur, nous pouvons revenir en arrière si nous ne confirmons pas les changements. (Comme le commit confirm sous JunOS)

Pour la mise en place nous devons activer la fonctionnalité archive puis indiquer l'emplacement de sauvegarde et le nombre de sauvegarde maximum:

router# conf t
router(config)#archive
log config
path flash:
maximum 5
write-memory

write-memory permettra d'enregistrer la configuration dès lors que nous effectuons un wr.

La commande suivante demande au routeur de faire un retour arrière dans 5 minutes, le temps d'appliquer la configuration souhaitée.

config t revert timer 5

Si la modification nous convient, on annule le rollback avec :

configure confirm