Archives par mot-clé : informatique

KVM: Communication entre invité en mode pont

Cette article est un pense bête et peut aussi servir aux personnes utilisant kvm en mode bridge (pont).

KVM est configuré en mode pont pour permettre la communication entre l’hôte et les invités. Il arrive que les invités ne puissent pas communiquer entre eux. Cela est du à des règles de filtrage du pont au niveau de l’hôte.

Attention! Si vous perdez la connectivité entre invités suite à une mise à jour, penser à revoir le fichier suivant.

Pour régler le problème, il faut ajouter au fichier suivant les informations:

/etc/sysctl.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

Si vous n’utilisez pas IPV4, ajouter que les informations concernant IPV6 et vice et versa

Source:
https://wiki.libvirt.org/page/Networking#Host_configuration_2
https://wiki.debian.org/BridgeNetworkConnections

Commande Linux en vrac

Taille d’un répertoire:

du -hs /media/raid5/
2,3T	/media/raid5/

Chercher du texte dans les fichiers d’un répertoire:

grep -rnw '/repertoire/de/recherche/du/texte' -e 'texte recherché'
  • -r or -R Recherche récursive,
  • -i ignore la casse
  • -n indique le numéro de ligne dans le fichier trouvé
  • -w pour chercher le mot entier.
  • -l (petit L) pour donner uniquement le nom des fichiers trouvés
  • --include=\*.{c,h} uniquement les fichiers .c et .h
  • --exclude=*.o exclure les fichiers .o
  • --exclude-dir={dir1,dir2,*.dst} exclut le repertoire dir1, dir2 et tous les répertoires répondant au regex *.dst

source: https://stackoverflow.com/questions/16956810/how-do-i-find-all-files-containing-specific-text-on-linux

Historique des cron

grep CRON /var/log/syslog
Jun 13 07:17:01 hostname CRON[11824]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 13 08:17:01 hostname CRON[11900]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 13 09:17:01 hostname CRON[11977]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 13 10:17:01 hostname CRON[13108]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 13 10:30:01 hostname CRON[13483]: (root) CMD (docker exec --user www-data nc php -f /var/www/html/cron.php)
Jun 13 10:45:01 hostname CRON[14134]: (root) CMD (docker exec --user www-data nc php -f /var/www/html/cron.php)
Jun 13 11:00:01 hostname CRON[15160]: (root) CMD (docker exec --user www-data nc php -f /var/www/html/cron.php)
Jun 13 11:17:01 hostname CRON[15439]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Ou se trouve une commande

whereis docker
docker: /usr/bin/docker /etc/docker /usr/share/man/man1/docker.1.gz

type -a docker
docker est /usr/bin/docker

redirection de port avec ssh

Vous êtes loin de vos serveur.
Vous désirez vous connecter à une ressource (hors ligne) de votre serveur exemple.fr
Nous allons utilisé un tunnel ssh

ressource désirée => https://exemple.fr:8443/maxview/manager/login.xhtml

La commande SSH à taper est la suivante:

ssh -L 8000:localhost:8443 exemple.fr -p 10145

-p 10145 correspond au port ssh d’écoute du serveur exemple.fr
-L 8000 port local redirigé ver le port 8443 du serveur

Dans votre navigateur, lancer http://localhost:8000/maxview/manager/login.xhtml

nettoyage des anciens kernels

Au gré des mises à jour, vous pouvez vous trouver avec plusieurs kernels installés, mais pas utilisés. Si vous avez besoin de faire de la place, il semble judicieux de les retirer de votre système. nous allons voir comment installer le dernier kernel et retirer les anciens.

D’abord, Il faut savoir quelle est la version courante du kernel pour ne pas le supprimer.

uname -r
4.9.0-5-amd64

Nous allons chercher si une mise à jour existe. Elle se caractérise par  une version plus récente avec un « un« .
Les deux premiers caractères à gauche vous donnent des indications sur l’état du paquet
Première colonne : souhait
i : Install (à installer)
r : Remove (à supprimer)
u : Unknown (inconnu)
p : Purge (à supprimer avec les fichiers de configuration)
h : Hold (à conserver)
Seconde colonne : état
i : Installed (installé)
c : Config-files (fichier(s) de configuration existant)
u : Unpacked (dé-compressé)
n : Not Installed (non installé)
f : Failed-config (problème de configuration)
h : Half-installed (installé partiellement)

apt-get update
****
dpkg -l 'linux-image*'
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé/W=attend-traitement-déclenchements
|/ Err?=(aucune)/besoin Réinstallation (État,Err: majuscule=mauvais)
||/ Nom                      Version           Architecture      Description
+++-========================-=================-=================-======================================================
rc  linux-image-4.9.0-3-amd6 4.9.30-2+deb9u5   amd64             Linux 4.9 for 64-bit PCs
ii  linux-image-4.9.0-5-amd6 4.9.65-3+deb9u2   amd64             Linux 4.9 for 64-bit PCs
un  linux-image-4.9.0-6-amd6 4.9.82-1+deb9u3   amd64             Linux 4.9 for 64-bit PCs
ii  linux-image-amd64        4.9+80+deb9u4     amd64             Linux for 64-bit PCs (meta-package)

Si vous avez besoin d’installer une version plus récente comme ici, lancer la commande suivante.
Pour chez vous, remplacer le numéro de version et « amd64 » par votre architecture ou « generic » si vous n’en avez pas spécifié.

apt-get install linux-image-4.9.0-6-amd64

Démarrer de nouveau votre machine pour que la version courante du kernel soit la dernière installée.

reboot

Vérifier

uname -r
4.9.0-6-amd64

Nous pouvons maintenant supprimer les anciennes versions.
un conseil: ne supprimer pas tout de suite la dernière version utilisé. Vérifier d’abord que tout va bien avec le nouveau kernel. Nous ne sommes jamais à l’abri de surprise!!!

apt-get purge linux-image-4.9.0-3-amd64
apt-get purge linux-image-X.X.X-X-amd64

Normalement, apt-get s’occupe de tout mais nous allons tout de même mettre à jour Grub.

update-grub2 

démarrer  de nouveau la machine.

c’est fini.

installer WordPress sous Debian

WordPress est à la base un moteur de blog qui s’est enrichi pour devenir un système de gestion de contenu (CMS).

Nous allons installer WordPress dans une Debian 7 (Wheezy). Pour faciliter la rédaction de mon document, nous réaliserons toutes les étapes en ligne de comande dans un terminal administrateur.

Prérequi WordPress

WordPress a besoin de:

  • Un Serveur HTTP, nous utiliserons Apache
  • Un serveur de base de donnée, nous utiliserons MySQL
  • PHP (language de programation pour produire des pages webs dynamiques

Apache

Normallement, si vous avez, lors de votre installation de Debian, coché la case d’installation du serveur HTTP, Apache devrait déjà être installé. Pour vérifier, lancer la commande apt-get update pour faire une mise à jour de l’état d’installation des packets, puis lancer aptitude search ‘apache2‘. Vous obtiendrez quelque chose comme ceci.

# aptitude search 'apache2'
i   apache2                                                      - Métapaquet pour le serveur HTTP Apache
p   apache2-dbg                                                  - symboles de débogage pour Apache
p   apache2-doc                                                  - Documentation du serveur HTTP Apache
v   apache2-mpm                                                  - 
p   apache2-mpm-event                                            - serveur HTTP Apache - modèle géré par événements
p   apache2-mpm-itk                                              - MPM multiutilisateur pour Apache 2.2
p   apache2-mpm-prefork                                          - serveur HTTP Apache - modèle traditionnel « non-threaded »
i A apache2-mpm-worker                                           - serveur HTTP Apache - modèle multi-processus
p   apache2-prefork-dev                                          - en-têtes de développement Apache - MPM sans fils d'exécution
p   apache2-suexec                                               - programme standard suexec pour le mod suexec d'Apache 2
p   apache2-suexec-custom                                        - programme suexec configurable pour mod_suexec de Apache 2
p   apache2-threaded-dev                                         - en-têtes de développement Apache - MPM avec fils d'exécution
i A apache2-utils                                                - programmes utilitaires pour serveurs web
i A apache2.2-bin                                                - fichiers binaires communs pour le serveur HTTP Apache
i A apache2.2-common                                             - serveur HTTP Apache (fichiers communs)
p   libapache2-authcassimple-perl                                - Apache2 module to authentificate trough a CAS server
....
p   libapache2-webauth                                           - Apache 2 modules for WebAuth authentication
p   libapache2-webkdc                                            - Apache 2 modules for a WebAuth authentication KDC
p   rt4-apache2                                                  - Apache 2 specific files for request-tracker4
p   torrus-apache2                                               - Universal front-end for Round-Robin Databases (for apache 2.x) (depreca

Si Apache est installé, vous devriez avoir un petit « i » en début de ligne avant ‘apache2‘. Donc pas besoin d’aller plus loin pour l’instant.

Si ce n’est pas le cas, lancer la commande:

#apt-get install apache2

C’est tout pour apache.

MySQL

Normallement, si vous avez, lors de votre installation de Debian, coché la case d’installation du serveur de base de données, ‘MysQL-Server’ devrait déjà être installé. Pour vérifier, lancer la commande apt-get update pour faire une mise à jour de l’état d’installation des packets, puis lancer aptitude search ‘mysql-server‘. Vous obtiendrez quelque chose comme ceci.

# aptitude search 'mysql-server'
p   mysql-server                                                 - MySQL database server (metapackage depending on the latest version)
p   mysql-server-5.5                                             - serveur de bases de données MySQL - binaires et configuration
v   mysql-server-core                                            - 
p   mysql-server-core-5.5                                        - binaires du serveur de bases de données MySQL
v   virtual-mysql-server                                         - 

Ici, nous voyons que le serveur MySQL n’est pas installé, indiqué par le ‘p‘ devant ‘mysql-server‘. Nous allons donc l’installer. Si chez vous, ‘mysql-server‘ est déjà installé, ne pas exécuter la commande d’installation suivante.

#apt-get install mysql-server

Pendant le processus d’installation, il va vous être demandé de compléter certainne information. Je vais mettre des copies d’écran pour vous accompagner dans le processus d’installation.

La première information demandée est le mot de passe administrateur de MySQL. Faire en sorte de bien le définir et ne pas le perdre.

MysqlServer

Valider et retaper le mot de passe administrateur pour vérifier qu’il n’y a pas eu d’erreur de frappe.

MySQLServeurConfirmationA la fin de l’installation de MySQL, si tout s’est bien passé, vous devriez obtenir ceci.

[ ok ] Starting MySQL database server: mysqld ..
[info] Checking for tables which need an upgrade, are corrupt or were 
not closed cleanly..
Paramétrage de libhtml-template-perl (2.91-1) ...
Paramétrage de mysql-server (5.5.38-0+wheezy1) ...

PHP

Php n’est pas sistématiquement installé. Pour vérifier, taper la commande que vous commencez à connaître: aptitude search ‘php5*’. Cela donne quelque chose comme ca:

# aptitude search 'php5*'
p   cakephp                                                      - MVC rapid application development framework for PHP
p   cakephp-instaweb                                             - Development webserver for CakePHP applications
....
p   php5                                                         - langage de script côté serveur, inclus dans du HTML (méta-paquet)
....
v   php5-mssql                                                   - 
p   php5-mysql                                                   - modules MySQL pour PHP5
p   php5-mysqlnd                                                 - MySQL module for php5 (Native Driver)
....
p   suphp-common                                                 - Common files for mod suphp
p   uphpmvault                                                   - upload recovery images to HP MediaVault2 via Ethernet

Les lignes, qui nous intéressent, sont php5 et php5-mysql. Elles doivent être installé (petit ‘i‘ au début de la ligne). Si ce n’est pas le cas, installer ces deux packets:

#apt-get install php5 php5-mysql

Voila! C’est tout pour les prérequis. Nous allons maintenant installer WordPress.

Worpess

installation de WordPress

Au jour d’aujourd’hui (18-01-2015), la version courante de WordPress est la version 4.1. Nous allons la télécharger, la décompresser, préparer la base de donnée et l’installer.

Téléchargement de WordPress

Lancer la commande suivante

#wget https://fr.wordpress.org/wordpress-4.1-fr_FR.zip

Pour vérifier que le fichier est bien téléchargé, lancer:

# ls -l
total 6896
-rw-r--r-- 1 user user      65 oct.   6 22:06 bash_profile
-rw-r--r-- 1 user user      61 oct.   6 00:08 bash_profile~
drwxr-xr-x 2 user user    4096 oct.   2 22:52 Bureau
drwxr-xr-x 2 user user    4096 oct.   2 22:52 Documents
drwxr-xr-x 2 user user    4096 oct.   2 22:52 Images
drwxrwxr-x 3 user user    4096 oct.   6 21:44 lorrainng
drwxr-xr-x 2 user user    4096 oct.   2 22:52 Modèles
drwxr-xr-x 2 user user    4096 oct.   2 22:52 Musique
drwxr-xr-x 2 user user    4096 oct.   2 22:52 Public
drwxr-xr-x 4 user user    4096 oct.  11 12:48 Téléchargements
drwxr-xr-x 2 user user    4096 oct.   2 22:52 Vidéos
-rw-r--r-- 1 root   root   7016086 sept.  4 19:05 wordpress-4.1-fr_FR.zip

Le fichier ‘wordpress-4.1-fr_FR.zip’ est bien présent. Nous pouvons continuer.

Si vous voullez télécharger la dernière version directement, aller sur le site de wordpress france et passer la sourie sur le bouton de téléchargement, cliquer droit et selectionner ‘copier l’adresse du lien‘. Puis télécharger cette dernière version en tapant:

#wget 'adresse du lien collée ici'

Décompression et autorisation de WordPress

Nous décompresserons WordPress dans le répertoire /var/www/ et lui donnerons les bonnes autorisations.

#unzip wordpress-4.1-fr_FR.zip -d /var/www

Changer le groupe des répertoires et fichier dans wordpress.

#chgrp -R www-data /var/www/

Pour pouvoir installer des modules, charger des images, faire des mises à jour, il faut changer les autorisations d’écriture du répertoire ‘wp-content‘ dans le répertoire d’installation de WordPress.

#chmod 2775 -R /var/www/wordpress/wp-content/

Préparation de la base de donnée

WordPress lors de l’installation ne crée pas la base de donnée qu’il va utiliser. Il faut donc la créer manuellement, ainsi que l’utilisateur qui va être autorisé à s’y connecter et faire les modifications nécessaires.

Lancer le client mysql en tant que root (-u = définit l’utilisateur, -p demande le mot de passe):

# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 43
Server version: 5.5.38-0+wheezy1 (Debian)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Creation de la base de donnée ‘wordpress

mysql> CREATE DATABASE wordpress  DEFAULT CHARACTER SET utf8   DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

Création de l’utilisateur (wpdb) et attribution des droits sur la base de donnée (wordpress)

mysql> grant all privileges on wordpress.* to wpdb identified by 'password';
Query OK, 0 rows affected (0.00 sec)

Normallement, c’est bon. Nous allons tout de même vérifier que la connection à Mysql pour la base de donnée wordpress se fait bien. Quitons le client mysql pour nous reconnecter en tant que wpdb. Nous quitterons de nouveau le client MySQL pour revenir dans le shell.

mysql> exit
Bye
root@machine:/home/user# mysql -u wpdb -p wordpress
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 44
Server version: 5.5.38-0+wheezy1 (Debian)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit

La base de donnée est prête, les droits sont données, nous allons maintenant réaliser l’installation de WordPress.

Installation de WordPress

wp-config.php

Pour faire au plus rapide, nous allons d’abord copier le fichier wp-config-sample.php vers wp-config.php et donner les droits en écriture.

#cp /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php
#chown root:www-data /var/www/wordpress/wp-config.php
#chmod 2755 /var/www/wordpress/wp-config.php

Nous allons maintenant modifier le fichier pour nos besoins.

PS: navigation dans nano => avec les flèches du clavier. Possibilité de coller du texte en placant le curseur au préalable à l’endroit désiré.

#nano /var/www/wordpress/wp-config.php

Chercher les lignes suivante:

// ** Réglages MySQL - Votre hébergeur doit vous fournir ces informations. ** //
/** Nom de la base de données de WordPress. */
define('DB_NAME', 'votre_nom_de_bdd');

/** Utilisateur de la base de données MySQL. */
define('DB_USER', 'votre_utilisateur_de_bdd');

/** Mot de passe de la base de données MySQL. */
define('DB_PASSWORD', 'votre_mdp_de_bdd');

/** Adresse de l'hébergement MySQL. */
define('DB_HOST', 'localhost');

/** Jeu de caractères à utiliser par la base de données lors de la création des tables. */
define('DB_CHARSET', 'utf8');

/** Type de collation de la base de données. 
  * N'y touchez que si vous savez ce que vous faites. 
  */
define('DB_COLLATE', '');

et sles modifier en:

// ** Réglages MySQL - Votre hébergeur doit vous fournir ces informations. ** //
/** Nom de la base de données de WordPress. */
define('DB_NAME', 'wordpress');

/** Utilisateur de la base de données MySQL. */
define('DB_USER', 'wpdb');

/** Mot de passe de la base de données MySQL. */
define('DB_PASSWORD', 'password');

/** Adresse de l'hébergement MySQL. */
define('DB_HOST', 'localhost');

/** Jeu de caractères à utiliser par la base de données lors de la création des tables. */
define('DB_CHARSET', 'utf8');

/** Type de collation de la base de données. 
  * N'y touchez que si vous savez ce que vous faites. 
  */
define('DB_COLLATE', '');

Tout en restant dans nano, il faut aussi modifier les données suivantes dans le même fichier:

Supprimer les lignes suivantes:

define('AUTH_KEY',         'put your unique phrase here'); 
define('SECURE_AUTH_KEY',  'put your unique phrase here'); 
define('LOGGED_IN_KEY',    'put your unique phrase here'); 
define('NONCE_KEY',        'put your unique phrase here'); 
define('AUTH_SALT',        'put your unique phrase here'); 
define('SECURE_AUTH_SALT', 'put your unique phrase here'); 
define('LOGGED_IN_SALT',   'put your unique phrase here'); 
define('NONCE_SALT',       'put your unique phrase here'); 

et les remplacer par les lignes générées dans le lien indiqué dans le commantaire juste au dessus des lignes à modifier (à la date du 11/10/14, https://api.wordpress.org/secret-key/1.1/salt/):

saltEnregistrer le fichier avec la combinaison des touches CTRL + O et quitter nano avec CTRL + x.

Voila, nous sommes prêt à lancer l’installation.

Installation de WordPress

Pour ce faire, allé dans votre navigateur préféré et taper l’adresse suivante: localhost/wordpress/wp-admin/install.php. Vous devriez avoir la page suivante.

WordpressInstallRemplir ce qu’il faut et valider. Vous obtiendrez la page suivante:

Cliquer sur connexion.

SuccesInstallWordpressVoila! c’est fini et installé.

 

 

Failover Vpn site à site (GRE + IPSec)

Ce document fournit une configuration pour les tunnels IPsec entre deux routeurs Cisco placés dans 2 sites distincts, entre deux réseaux locaux (lien site à site). Les configurations se feront sur des routeurs C892FSP-K9, avec comme rom, la c800-universalk9-mz.SPA.152-4.M6.bin. J’ai choisi de garder les box pour bénéficier des autres services fournis (TV et téléphone), cela influera un peu sur la configuration.

Pour bien comprendre ce que nous allons faire, voici la topologie du réseau:

Topologie reseau

Du côté Free, le routeur aura pour nom, Routeur2 et du côté Bouygues-SFR, le routeur aura pour nom Routeur1.

Le but du VPN est de faire en sorte que les 2 sites communiquent exactement comme si ils étaient directement reliés entre eux, de manière à ce que les 2 réseaux puissent êtres directement routés (et non passer par du NAT).

Voici donc à quoi ressemblera là topologie du réseau final:

Topologie reseau idealise 001La liaison directe entre les 2 routeurs se fera via les 2 réseaux (172.16.1.0/30 => SFR et 172 .16.2.0/30 => Bouygues). Ils symbolisent les liens que nous souhaitons créer avec les VPNs.

La mise en place des VPNs se fera en 3 phases:

  • Mise en place des Tunnels (GRE) entre les 2 sites (définition des interfaces virtuelles)
  • Mise en place du routage entre les 2 Réseaux locaux
  • Cryptage des tunnels.

Configuration des interfaces

Pas de difficulté particulière. Je le mets pour information.

Réseau1:

Nous allons d’abord configurer les interfaces Gi8, Gi9, Vlan1:


>en
#conf t
(config)#interface gi9
(config-if)#Description Lien secondaire Bouygues
(config-if)#ip address 192.168.2.100
(config-if)#ip nat outside
(config-if)#exit
(config)#

(config)#interface gi8
(config-if)#Description Lien primaire SFR
(config-if)#ip address 192.168.1.100
(config-if)#ip nat outside
(config-if)#exit
(config)#

(config)#interface vlan1
(config-if)#Description Reseau local
(config-if)#ip address 192.168.100.254
(config-if)#ip nat inside
(config-if)#exit
(config)#

Configurons maintenant les tunnels, interfaces virtuel tunnel 0 et 1:


>en
#conf t
(config)#interface Tunnel0
(config-if)#Description Lien Tunnel SFR
(config-if)#ip address 172.16.0.1 255.255.255.252
(config-if)#tunnel source 192.168.1.100
(config-if)#tunnel destination 78.0.0.1
(config-if)#ip nat inside
(config-if)#exit
(config)#

(config)#interface Tunnel1
(config-if)#Description Lien Tunnel Bouygues
(config-if)#ip address 172.16.1.1 255.255.255.252
(config-if)#tunnel source 192.168.2.100
(config-if)#tunnel destination 78.0.0.1
(config-if)#ip nat inside
(config-if)#exit
(config)#

La configuration d’un tunnel se fait de la même manière que pour une interface normale. Il faut seulement définir la source du tunnel (ip wan du routeur, ici 192.168.1.100 et 192.168.2.100) et la destination (l’adresse ip publique du site au bout du tunnel, ici 78.0.0.1).

Attention, les commandes « tunnel source » et « tunnel destination » fonctionneront uniquement dans des interfaces de type « interface tunnel x« .
Attention, nous sommes dans le réseau qui a 2 liens vers internet, nous connectons le réseau via 2 tunnels à 1 seul site distant. Donc 2 tunnels avec deux sources et une seul destination.

Réseau2:

Nous allons configurer les interfaces Gi9 et Vlan1:


>en
#conf t
(config)#interface gi9
(config-if)#Description Lien vers Internet
(config-if)#ip address 192.168.10.200
(config-if)#ip nat outside
(config-if)#exit
(config)#

(config)#interface vlan1
(config-if)#ip address 192.168.200.254
(config-if)#ip nat inside
(config-if)#exit
(config)#

Configurons maintenant les interfaces virtuel tunnel 0 et 1:

Ici, nous faisons l’inverse. Nous allons paramétrer 2 tunnels avec 1 source et 2 destinations.


>en
#conf t
(config)#interface Tunnel0
(config-if)#Description Lien Tunnel SFR
(config-if)#ip address 172.16.0.2 255.255.255.252
(config-if)#tunnel source 192.168.10.200
(config-if)#tunnel destination 109.0.0.1
(config-if)#ip nat inside
(config-if)#exit
(config)#

(config)#interface Tunnel1
(config-if)#Description Lien Tunnel Bouygues
(config-if)#ip address 172.16.1.2 255.255.255.252
(config-if)#tunnel source 192.168.10.200
(config-if)#tunnel destination 128.0.0.1
(config-if)#ip nat inside
(config-if)#exit
(config)#

Routage et accès à internet

Les interfaces sont configurées, mais pour l’instant, rien ne communique avec rien. Du fait que les routeurs sont derrières des box, les ip sur les interfaces WAN (Gi8 / Gi9) sont des ip locales non routables. Il faut donc mettre en place du nat pour que les machines derrière le routeur puissent accéder à internet. Nous allons voir ça maintenant.

Nat sur le réseau 1

Pourquoi nonat (pas de nat)? Parceque le trafique qui doit passer dans les tunnels ne doit pas être naté. Nous nous en assurerons en définissant les « deny« . Tout ce qui est « permit » sera autorisé et naté (ici, l’acces à internet), le reste ne sera pas autorisé car à la fin d’une access list, il y a toujour un deny implicit.

Définition de l’access list SFR-nonat :


>en
#conf t
(config)#ip access-list extended SFR-nonat
(config-ext-nacl)#deny ip 192.168.100.0 0.0.0.255 192.168.200.0 0.0.0.255
(config-ext-nacl)#deny ip 192.168.100.0 0.0.0.255 192.168.10.0 0.0.0.255
(config-ext-nacl)#permit ip 192.168.200.0 0.0.0.255 192.168.1.0 0.0.0.255
(config-ext-nacl)#permit ip 192.168.100.0 0.0.0.255 any
(config-ext-nacl)#exit
(config)#

Le « deny ip 192.168.100.0 0.0.0.255 192.168.200.0 0.0.0.255 » permet d’interdire le trafic pour les machines à destionation du réseau 192.168.200.0/24. Ce trafic passera par les tunnels et donc ne doit pas être autorisé sur cette interface. Cela revient à dire qu’il ne faut pas que le trafic soit natter.
Idem pour « deny ip 192.168.100.0 0.0.0.255 192.168.10.0 0.0.0.255« .

Le « permit ip 192.168.200.0 0.0.0.255 192.168.1.0 0.0.0.255 » permet au réseau 2 (192.168.200.0/24) d’être natter pour avoir accès à la box SFR (192.168.1.1)
Le « permit ip 192.168.100.0 0.0.0.255 any » met en place le NAT pour le Vlan1 pour l’accès à internet.

Définition de l’access list Bouygues-nonat :


>en
#conf t
(config)#ip access-list extended Bouygues-nonat
(config-ext-nacl)#deny ip 192.168.100.0 0.0.0.255 192.168.200.0 0.0.0.255
(config-ext-nacl)#deny ip 192.168.100.0 0.0.0.255 192.168.10.0 0.0.0.255
(config-ext-nacl)#permit ip 192.168.200.0 0.0.0.255 192.168.2.0 0.0.0.255
(config-ext-nacl)#permit ip 192.168.100.0 0.0.0.255 any
(config-ext-nacl)#exit
(config)#

Le principe reste le même que pour l’access list SFR-nonat.

Activation du nat sur chaque interface :


>en
#conf t
(config)# ip nat inside source list SFR-nonat interface gi8 overload
(config)# ip nat inside source list Bouygues-nonat interface gi9 overload

Maintenant, nous allons mettre en place le failover et les routes qui vont biens.

Nat sur le réseau 2

Définition de l’access list Free-nonat :


>en
#conf t
(config)#ip access-list extended Free-nonat
(config-ext-nacl)#deny ip 192.168.200.0 0.0.0.255 192.168.100.0 0.0.0.255
(config-ext-nacl)#deny ip 192.168.200.0 0.0.0.255 192.168.1.0 0.0.0.255
(config-ext-nacl)#deny ip 192.168.200.0 0.0.0.255 192.168.2.0 0.0.0.255
(config-ext-nacl)#permit ip 192.168.100.0 0.0.0.255 192.168.10.0 0.0.0.255
(config-ext-nacl)#permit ip 192.168.200.0 0.0.0.255 any
(config-ext-nacl)#exit
(config)#

Activation du nat :


>en
#conf t
(config)# ip nat inside source list Free-nonat interface gi9 overload

Failover (Uniquement sur le réseau 1)

Nous allons utiliser IPSla pour réaliser le failover. IPSla va permettre de pinger une ip et en fonction du résultat, activera ou désactivera la route. Pour plus de détail, voir l’article que j’ai réaliser: Cliquer ici

IPSla pour le réseau 1 (nous ne configurerons que celui-ci):

ip sla 1
icmp-echo 8.8.8.8 source-interface GigabitEthernet8
frequency 5
ip sla schedule 1 life forever start-time now
!
track 1 ip sla 1
!
ip route 8.8.8.8 255.255.255.255 192.168.1.1

Routage

Réseau 1:


>en
#conf t
(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.254 track 1
(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.254 2

ip route 0.0.0.0 0.0.0.0 192.168.1.254 track 1 = route par défaut tant que le track 1 sera bon (OK)
ip route 0.0.0.0 0.0.0.0 192.168.2.254 2 = si le track 1 est KO, la route par défaut disparait et celle-ci, pondérée par le 2 à la fin de la ligne, deviendra la route pour l’acces à Internet. L’instance (le 2) à la fin de la ligne définit la priorité.

Avec le changement de route vers internet, le tunnel changera.

Réseau 2:


>en
#conf t
(config)#ip route 0.0.0.0 0.0.0.0 192.168.10.254

Rien de bien difficile.

Juqu’ici, nous avons configuré les interfaces, les tunnels, les routes et le failover. Avant de commencer à mettre en place le cryptage sur les tunnels, nous allons d’abord tester que ceux-ci sont fonctionnels et que le basculement entre les deux tunnels fonctionne.

Vérification des tunnels et du failover

Tout est déjà configuré et la route par défaut passe par SFR.


routeur1#sh ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is 192.168.1.1 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 192.168.1.1

Regardons l’état de nos interfaces:


routeur1#show ip interface brief 
Interface                  IP-Address      OK? Method Status                Protocol
GigabitEthernet0           unassigned      YES unset  up                    up
GigabitEthernet1           unassigned      YES unset  down                  down    
GigabitEthernet2           unassigned      YES unset  down                  down    
GigabitEthernet3           unassigned      YES unset  down                  down    
GigabitEthernet4           unassigned      YES unset  up                    up      
GigabitEthernet5           unassigned      YES unset  down                  down    
GigabitEthernet6           unassigned      YES unset  up                    up      
GigabitEthernet7           unassigned      YES unset  up                    up      
GigabitEthernet8           192.168.1.100   YES NVRAM  up                    up      
GigabitEthernet9           192.168.2.100   YES NVRAM  up                    up
NVI0                       unassigned      YES unset  administratively down down
Tunnel0                    172.16.0.1      YES NVRAM  up                    up
Tunnel1                    172.16.1.1      YES NVRAM  up                    down
Vlan1                      192.168.100.254 YES NVRAM  up                    up

Nous pouvons voir que les deux tunnels sont « up » au niveau du status mais que Tunnel 1 est « down » au niveau du protocole. C’est normal car la route par défaut emprunte une route via SFR. Le tunnel1 emprunte la route via Bouygues et donc ne peut pas utiliser la route par défaut. Celle-ci n’est pas active d’ou le protocol = down.

Que se passe-t-il si nous retirons le cable entre l’ONT et la box SFR (supression du lien entre la box et le fournisseur, SFR), la route SFR va tomber et celle de Bouygue va devenir up.


routeur1#sh ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is 192.168.2.254 to network 0.0.0.0

S*    0.0.0.0/0 [2/0] via 192.168.2.254

routeur1#show ip interface brief 
Interface                  IP-Address      OK? Method Status                Protocol
GigabitEthernet0           unassigned      YES unset  up                    up      
GigabitEthernet1           unassigned      YES unset  down                  down    
GigabitEthernet2           unassigned      YES unset  down                  down    
GigabitEthernet3           unassigned      YES unset  down                  down    
GigabitEthernet4           unassigned      YES unset  up                    up      
GigabitEthernet5           unassigned      YES unset  down                  down    
GigabitEthernet6           unassigned      YES unset  up                    up      
GigabitEthernet7           unassigned      YES unset  up                    up      
GigabitEthernet8           192.168.1.100   YES NVRAM  up                    up      
GigabitEthernet9           192.168.2.100   YES NVRAM  up                    up      
NVI0                       unassigned      YES unset  administratively down down    
Tunnel0                    172.16.0.1      YES NVRAM  up                    down      
Tunnel1                    172.16.1.1      YES NVRAM  up                    up    
Vlan1                      192.168.100.254 YES NVRAM  up                    up

La route et le tunnel actif ont changés. Si le status et le protocol du deuxième tunnel sont up, cela veux dire que le lien fonctionne. Pour le voir, il suffit de pinger l’autre bout du tunnel.


routeur1#ping 172.16.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max

Pour l’instant, tout ce qui passe par le tunnel n’est pas crypter. Nous allons maintenant mettre en place le cryptage.

Cryptage

Mise en place du cryptage dans le réseau 2 (Free)

Nous allons utiliser le cryptage IKE, aussi appelé ISAKMP qui est chargé de négocier les Associations de Sécurité (AS) entre deux appareils voulant communiquer.
ISAKMP sépare les négociations en deux phases: Phase 1 et Phase 2.

  • La Phase 1 crée le premier tunnel, qui protègera les futurs messages de négociation d’ISAKMP, Il s’agit de la politique IKE qui définit une méthode de chiffrement, la durée de vie, la méthode d’intégrité, etc.
  • La Phase 2 crée un tunnel qui protègera les données qui transitent entre les deux réseaux. Nous configurerons la politique de sécurité IPSec.

Phase 1: configuration de la politique IKE


(config)# crypto isakmp policy 1
(config-isakmp)# encr 3des
(config-isakmp)# authentication pre-share
(config-isakmp)# group 2
(config-isakmp)# exit

Création de clés pré-partagées

Nous définissons les clés pré-partagées : le mot de passe ainsi que les adresses IP du routeur distant avec lequel nous communiquons. Vous remarquerez ici que nous définissons 2 clés partagées car nous créons 2 tunels qui ont pour cible les adresse IP publiques du réseaux Bouygues-SFR.


(config)#  crypto isakmp key motdepasse address 128.0.0.1
(config)#  crypto isakmp key motdepasse address 109.0.0.1

Phase 2: configuration de la politique IPSEC

Nous définissons notre transform-set pour l’établissement d’une liaison IPSec SA. Elle aura pour nom « TSET ».


(config)# crypto ipsec transform-set TSET esp-3des esp-md5-hmac 
(cfg-crypto-trans)# mode tunnel

 

Voila, c’est tout pour aujourd’hui.

Référence:

Documentation Cisco sur IPSEC (en anglais)
Comparaison des différentes solution VPN pour Cisco (en anglais)
Vue d’ensemble d’ISAKMP (en anglais)
Scénarios VPN Site à Site (en anglais)
Configuring IPSec Network Security (en anglais)

Autres références intéressantes:

Easy VPN Server Avec DVTI (Dynamic Vpn Tunnel Interfaces) par Bastien Migette (en français)

Configurer la route par défaut en utilisant IPSLA

IP SLA a été inventé par Cisco. Cisco IOS IP SLA est à la base une technologie qui permet de mesurer les performances du réseau.
Ici, nous l’utiliserons non pas pour réaliser des mesures de performance, mais pour modifier la table de routage sur une modification d’état d’une route ou d’une interface (route ou interface UP/DOWN).

Toutes les commandes suivantes ont été testées sur un routeur cisco C892FSP-K9 avec comme rom, la c800-universalk9-mz.SPA.152-4.M6.bin.

Configuration des interfaces

rtr>en
Password: 
rtr#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
rtr(config)#interface gigabitEthernet 8
rtr(config-if)#description Primary link ISP1
rtr(config-if)#ip address 192.168.1.1 255.255.255.0
rtr(config-if)#exit
rtr(config-if)#
rtr(config)#interface gigabitEthernet 9
rtr(config-if)#description Primary link ISP2
rtr(config-if)#ip address 192.168.2.1 255.255.255.0
rtr(config-if)#exit

Je ne m’attarderai pas ici sur la configuration complete des interfaces, ce n’est pas l’objet. Je les ai indiqués uniquement pour la compréhension. L’acces à Internet se fait donc via les interface GI8 et GI9 du routeur, cf diagramme ci-dessous.

Diagramme1

Création du SLA:

Tester un accès à Internet et donc un défaut de service de l’ISP1:

Dans cet exemple, nous allons pinger le dns primaire de google. Si vous faites cela, il vaut mieux au préalable demander une autorisation. Vous n’aimeriez pas que quelqu’un face la même chose avec vos serveurs. Choisissez bien l’adresses que vous voulez pinger.

Si le ping ne fonctionne pas, cela veut dire que soit le DNS de google n’est plus joignable, soit il y a un probleme d’acces à internet (DNS de l’ISP, box en panne…), tout ceci, même si le lien entre la box et le routeur fonctionne parfaittement.

rtr(config)#ip sla 1
rtr(config-ip-sla)#icmp-echo 8.8.8.8 source-interface GigabitEthernet8
rtr(config-ip-sla)#frequency 5
rtr(config-ip-sla)#exit
rtr(config)#ip sla schedule 1 life forever start-time now

ip sla 1 = entre dans le mode de configuration d’IPSLA en définissant l’instance, ici 1

icmp-echo 8.8.8.8 source-interface GigabitEthernet8 = configuration de l’action désiré. ici, un ping sur 8.8.8.8 avec comme source Gi8

frequency 5 = toutes les 5 secondes, le ping sera lancé

ip sla schedule 1 life forever start-time now = définit quand IPSLA (ici, notre ping) doit commancer et quand il doit se terminer. Il doit commancer maintenant et ne jamais s’arrêter. Attention, le numero 1 n’est pas anodin, il definit l’instance qui est à démarer.

Tester un probleme de lien avec la box, modem:

rtr(config)#ip sla 1
rtr(config-ip-sla)#icmp-echo 192.168.1.254 source-interface GigabitEthernet8
rtr(config-ip-sla)#frequency 5
rtr(config-ip-sla)#exit
rtr(config)#ip sla schedule 1 life forever start-time now

Ici, ce sont les mêmes paramètres. Au lieu de pinger le DNS de google, nous pingons la box d’ISP1. Nous testons le lien entre le routeur et la box. Si le ping ne fonctionne pas, la box est en panne ou le câble est débranché ou altéré.

Création du trackers:

rtr(config)#track 1 ip sla 1

track 1 ip sla 1 = surveille l’instance 1 d’IPSLA. Telle que la commande est définie, le code retourné par IPSLA (OK/Non-OK) sera surveillé. c’est l’option par défaut.

Définition des routes par défaut:

Cas du test d’un acces à Internet:

rtr(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.254 track 1
rtr(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.254 2
rtr(config)#ip route 8.8.8.8 255.255.255.255 192.168.1.254

ip route 0.0.0.0 0.0.0.0 192.168.1.254 track 1 = ce sera la route par défaut tant que le track 1 sera bon (OK)
ip route 0.0.0.0 0.0.0.0 192.168.2.254 2 = si le track 1 est Non-OK, la route par défaut disparait et celle-ci, pondérée par le 2 à la fin de la ligne, deviendra la route pour l’acces à Internet. L’instance à la fin de la ligne définit la priorité.
ip route 8.8.8.8 255.255.255.255 192.168.1.254 = je défini la route manulellement pour cette adresse. Cela permet de forcer le ping via l’interface voulu. Ici, GigabyteEthernet 8. Ceci même si la route pour internet (0.0.0.0) est définit via GigabyteEthernet 9 (192.168.2.254). Dès que le ping fonctionnera de nouveau, le tracker deviendra OK et la route pour internet redeviendra la permière ligne (celle avec le tracker 1)

Cas du probleme de lien avec la box:

rtr(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.254 track 1
rtr(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.254 2

ici, pas besoin de définir une route pour atteindre la box. La box est directement branché à GI8.

Vérification du bon fonctionnement de notre configuration:

Vérification quand tout va bien sur Gi8:

Vérifions l’état de l’IPSLA:

rtr#sh ip sla summary 
IPSLAs Latest Operation Summary
Codes: * active, ^ inactive, ~ pending

ID           Type        Destination       Stats       Return      Last
                                           (ms)        Code        Run 
-----------------------------------------------------------------------
*1           icmp-echo     8.8.8.8         RTT=1       OK          3 seconds ago

Ici, nous pouvons voir:

  • l’instance (*1)
  • le type de test effectué (ping)
  • la destination du ping (8.8.8.8)
  • le temps mis pour recevoir le retour du ping (1ms)
  • le code retourné (OK)
  • le temps depuis la dernière exécution du dernier ping (3s).

Vérifions les routes:

rtr#sh ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is 192.168.1.1 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 192.168.1.1
      192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.1.0/24 is directly connected, GigabitEthernet8
L        192.168.1.1/32 is directly connected, GigabitEthernet8
      192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.2.0/24 is directly connected, GigabitEthernet9
L        192.168.2.1/32 is directly connected, GigabitEthernet9
....
      8.0.0.0/8 is subnetted, 1 subnets
S        8.8.8.8 [1/0] via 192.168.1.254

Quand Il y a un probleme sur la route utilisant Gi8:

Vérifions l’état de l’IPSLA:

rtr#sh ip sla summary 
IPSLAs Latest Operation Summary
Codes: * active, ^ inactive, ~ pending

ID           Type               Destination       Stats                  Return                        Last
                                                  (ms)                   Code                          Run 
--------------------------------------------------------------------------------------------------------------------
*1           icmp-echo           8.8.8.8          RTT=1         Socket set option erro            24 seconds ago

ici, la route est tombé depuis 24 secondes et le code de retour est en erreur.

Vérifions les routes:

rtr#sh ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is 192.168.2.1 to network 0.0.0.0

S*    0.0.0.0/0 [2/0] via 192.168.2.1
      192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.1.0/24 is directly connected, GigabitEthernet8
L        192.168.1.1/32 is directly connected, GigabitEthernet8
      192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.2.0/24 is directly connected, GigabitEthernet9
L        192.168.2.1/32 is directly connected, GigabitEthernet9
....
      8.0.0.0/8 is subnetted, 1 subnets
S        8.8.8.8 [1/0] via 192.168.1.254

Ici, nous voyons que la route vers le 0.0.0.0 (internet) a changé. La route n’est plus via 192.168.1.1, mais via 192.168.2.1. C’est la route avec l’instance 2 qui a pris le relais ([2/0]).
Les autres routes sont toujours en place car les interfaces fonctionnent encore. Cela indique un probleme chez le fournisseur d’acces (ISP1) ou un probleme sur le dns de google. Je vous laisse juger.

Voila, c’est tout pour aujourd’hui.

Référence:

Information sur Cisco IOS IP SLA (en anglais)
Analyse des performances d’un réseau grâce à IPSLA (en français)
Documents à partir desquels je me suis basé pour faire ce tutoriel:
Dual internet links NATing with PBR and IP SLA par Marwan ALshawi (en anglais)
Configuring Static Route Tracking using IP SLA (Basic) par un auteur inconnu (en anglais)

 

Protection de la console (>…)

Le mot de passe de la console sera unique, ne dépendra pas de tel ou tel utilisateur. Voici ce qu’il faut entrer comme commande:

>enable
#configure terminal
(config)#line console 0
(config-line)# password «mot de passe»
(config-line)#login
(config-line)#exit

un peu d’explication:

>enable = demande l’entrée dans le mode privilégié
#configure terminal = demande l’entrée en mode de configuration
line console 0 = demande d’entrer dans le mode de configuration de la console
(config-line)# password «mot de passe» = parametre le mot de passe de la console, ne pas entrer les guillements, seulement le mot de passe
(config-line)#login = active la de mande de mot de passe pour avoir accès à la console.

voila, c’est tout pour aujourd’hui
Pierre

Sauvegarde IOS sur un Serveur TFTP

Cette opération est à réaliser des la réception de votre matériel. Elle permet de sauvegarder votre IOS en lieu sûr au cas ou quoi que ce soit arrive.
Toute les commande suivantes ont été réalisées sur un routeur Cisco C892-SPF. Elles sont identiques sur les autres appareils ayant un IOS.
Pour bien sauvegarder l'IOS de son appareil, il faut connaitre le fichier binaire qui est installé. Pour ce faire, faire ce qui suit.

Pour connaître le nom du fichier binaire installé et chargé dans la flash :

>en
# show version

=> lire la ligne « System image file is "xxxxxxxxxxxxx.bin"  »,
dans mon cas le nom du fichier est : « c800-universalk9_npe-mz.SPA.153-2.T.bin »

Sauvegarde de la flash contenant l’IOS sur un serveur tftp :

>en
#copy flash tftp

Répondre aux questions posé…

Source filename []? c800-universalk9_npe-mz.SPA.153-2.T.bin
Address or name of remote host []? 192.168.100.2
Destination filename [s]? c800-universalk9_npe-mz.SPA.153-2.T.bin

Source filename []? = nom du fichier trouvé précédement avec la commande "show version"
Address or name of remote host []? = ip ou nom du serveur TFTP
Destination filename [s]? =  Même nom que le "source filename" car il vaut mieux garder les mêmes références que Cisco.

Si cela ne fonctionne pas pour le tftp, voir si le serveur est démaré et si le port 69 en udp est autorisé, voir aussi les droits d'accès en écriture sur le serveur TFTP.