GuiguiAbloc

Tag: cisco

Déploiement d’IPv6… A bloc…

par guiguiabloc le 11 mai, 2010, sous architecture, cisco, linux, réseau, vmware

Tout le monde le sait, on ne cesse de nous rabâcher la même prophétie, bientôt c’est la fin du monde !!!

Enfin, outre la fameuse année 2012, qui a déjà pris de l’avance sur le site http://www.2012fin.com (n’y aller pas !! en plus il est vérolé !!!) si j’en crois le résultat suivant :

C’est surtout la diminution constante des adresses IPv4 publiques disponibles qui continue son oeuvre.

Bien évidemment, depuis quelques années déjà, IPv6 est la réponse a ce problème, mais bon, cela ne sera pas en place partout avant bien longtemps, donc pas de cris paniqués, de viols incongrus, d’immolations inconsidérées ou de bitures monumentales (euh quoique…), IPv4 a encore de beaux jours devant lui.

Quoi qu’il en soit, il était temps de me dépoussiérer un peu et de replonger dans les méandres d’IPv6 et de remettre cela en oeuvre dans mon architecture.

Mes connaissances en IPv6 étant plus qu’anciennes, je me suis donc remis à niveau à coup de lecture multiples sur des sites divers et variés, allant des RFC aux blogs.

La liste étant particulièrement imposante, je vous laisse plutôt vous promener sur Google.

Un des sites les plus amusants pour se remettre a niveau est Hurricane Electric, un provider Internet et également Tunnel Broker IPv6, qui vous propose de passer votre Certification IPv6 à travers une série de questionnaire et d’exercices pratiques a mettre en place (exemple vous rendre sur le site via une connexion IPv6, monter un MX IPv6, des DNS IPv6 etc…), bref des étapes amusantes qui vous permettent de progresser dans votre apprentissage/remise à niveau, tout en maquettant votre future architecture.

Pour la Certification, cela se passe la : http://ipv6.he.net/certification/

Au fur et a mesure vous changez de niveau (newbie, explorer, enthusiast, administrator, professional, guru et enfin sage). Validé bien sûr par un « zoli » diplôme et un lien vers vos résultats a mettre sur votre site :

ah ah ah :-D

Bref, très instructif et amusant pour bosser IPv6 (je sais, les geeks ont des jeux bizarres…)

Fort de ma remise à niveau, il était temps de déployer IPv6 tout autour de ma sphère personnelle.

Un petit panaché donc des différents environnements et situations que j’ai rencontré et dont, je pense, l’un d’entre eux répondra à vos attentes.

RAPPEL DES FAITS

Non, je ne vous ferais pas un cours sur IPv6, mais il faut bien évidemment revoir nos classiques et surtout la façon dont fonctionne l’adressage IPv6.

Pour commencer, je vous invite a lire la page Wikipédia.

Maintenant, vous savez qu’une adresse IPv6 est longue de 128 bits contre 32 en IPv4.

De plus, l’écriture est au format hexadécimal et non décimal.

Pour résumer :

Espace d’allocation Fournisseur d’accès Client Réseau Identifiant
Bits 0-15 16-31 32-47 48-63 64-127
Exemple 2001: 0660: 315f: c242: 20d:60ff:fe38:6d16

Mais s’il y a un « schéma » qui m’a permit de tout comprendre, c’est celui la :

2001:12d3:4:56 00: 0000:0000:0000:0000
\____________/ \_/ \..._/
partie réseau  s/s  partie pour l'identifiant
(56)           (8)    (64)

Si vous avez un /64, vous avec donc les 56 premiers bits+ les 8 bits de sous réseau + 64 bits pour vos machines (en gros cela nous fait 18 milliards de milliards d’adresses IP à votre disposition…)

Si vous avez un /56, vous avez donc les 56 premiers bits + 2^8 (256) sous réseaux X 2^64 adresses IP (18 446 744 073 709 551 616)…

Donc avec un /56 vous avec 256 sous-réseaux de 18 milliards de milliards d’adresses IP chacun… (un peu too much, non ?… ;-) )

Et bien sur, vous pouvez encore redécouper (/126, /120, /112 etc…).

Plus clair :mrgreen: ?

ATTENTION : Une remarque importante, iptables ne contrôle pas les flux IPv6 sur vos interfaces. Il faut utiliser ip6tables pour protéger vos accès. N’oubliez donc pas de configurer en plus d’iptables, un ip6tables sur vos serveurs/pc… (et de, surtout, laisser l’icmp6 autorisé…)

CONNECTIVITE IPv6

Si vous êtes dégroupé chez Free (ou chez Nerim), vous avez la chance d’avoir un adressage IPv6 disponible rien que pour vous.

Malheureusement, étant non-dégroupé, je n’ai pas cette option, comme de nombreuses personnes chez d’autres FAI (quand je vous disais que vous avez de beaux jours en IPv4, les FAI ne sachant pas eux même faire fonctionner leurs architectures en IPv6 de bout en bout…).

La solution est le tunnel « 6to4″.

Un tunnel « 6to4″ permet de relier un réseau Ipv4 au réseau IPv6.

Les principaux fournisseurs de tunnels 6to4 sont :

-Hurricane Electric http://www.tunnelbroker.net

-Gogo6 (Freenet6) http://www.gogo6.com

-Sixxs http://www.sixxs.net

Je ne me lancerais pas dans un comparatif mais pour avoir utiliser les trois, j’ai un faible pour Gogo6 dont la facilité d’installation et la stabilité du tunnel m’ont bien plu.

Une fois enregistré chez eux, il en vous reste qu’a télécharger le source d’installation pour Linux (ou autre hein…) la : http://gogonet.gogo6.com/page/download-1

Compilation basique (make, make installdir=/usr/local/bin/gogoc install) et configuration des plus simples (userid, mot de passe et server=authenticated.freenet6.net bref lire le fichier de conf)

Il ne reste qu’a lancer l’executable (/usr/local/gogoc/bin/gogoc par exemple) pour voir un nouveau tunnel se monter dans vos interfaces réseaux :

tun       Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
adr inet6: 2001:5c0:1400:b::5b43/128 Scope:Global

et voila, vous avez un accès IPv6 :

server:/usr/local/gogoc/bin# ping6 ipv6.google.com
PING ipv6.google.com(2a00:1450:8007::6a) 56 data bytes
64 bytes from 2a00:1450:8007::6a: icmp_seq=1 ttl=55 time=60.4 ms

simple non ?

Par votre navigateur Internet, a vous la joie de voir la tortue Kame gigoter pour prouver que vous utilisez une connexion IPv6.

SERVEURS DEDIES OVH

Ayant des serveurs chez OVH, ce dernier vous attribue une plage d’adresses IPv6 a utiliser sur votre serveur.

Pour cela rien de plus simple, se rendre dans son « Manager », sur la page « serveur dédié », et récupérer le /64 qui vous est attribué.

Le guide est dispo ici : http://guides.ovh.com/Ipv4Ipv6

Rien de bien compliquer mais personnellement, j’en voulais un peu plus et donc utiliser aussi l’IPv6 dans mes machines virtuelles VMWare…

La cela se complique un peu plus mais la réponse je l’ai trouvé sur le blog Linux Attitude, grâce à un excellent tuto écrit par StalkR.

En fait, OVH ne vous attribue pas un simple /64 mais un /56… Ce qui fait que vous pouvez subnetter vos adresses IPv6 :-D

Donc pour le /64 qui m’était par exemple attribué : 2001:12D3:4:5678::/64 j’ai donc à ma disposition le bloc suivant : 2001:12D3:4:5600::/56.

Ni une, ni deux, on se prend un petit subnet pour les VMs :

  • 2001:12D3:4:5678::/64 pour les serveurs physiques
  • 2001:12D3:4:5681::/64 pour les VMs.

(vous suivez toujours ? 2001:12D3:4:56.. est le bloc réseau que m’attribue OVH et j’ai pour moi 256 sous-réseaux (les 8 bits après le chiffre 56, pour créer mes subnets. Dans le cas présent …78.. et ..81.. (a vous de choisir dans la plage hexadecimal de 00 a FE).

A cet effet, une page web intéressante pour visualiser d’un coup tout cela : TABLE ASCII

Chaque sous-réseau disposant de 18 milliards de milliards d’adresses pour mes serveurs (honnêtement, je n’en ai pas autant…)

Un peu de tuning Kernel parce que je ne veux pas d’autoconfiguration.

Ah oui, j’ai oublié de vous parler de cela…

IPv6 a parmi ses facultés, celle d’autoconfigurer les interfaces réseaux et les routes dynamiquement grâce au « Router Advertisement« . En gros, cela permet a Mme Michu de ne pas se prendre la tête et d’avoir une configuration automatique (genre dhcp) annoncé par le routeur IPv6 en amont de sa connexion.

Je ne rentrerais pas dans le détail, (RADVD étant une excellente solution pour l’autoconfiguration de votre parc), car personnellement je tenais a maîtriser chaque étape de mon déploiement.

serveur:~# cat /etc/sysctl.conf
...
net.ipv6.conf.eth0.autoconf=0
net.ipv6.conf.eth0.accept_ra=0
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.all.router_solicitations=1
net.ipv6.conf.default.proxy_ndp=1
net.ipv6.conf.all.proxy_ndp=1
net.ipv6.conf.all.forwarding=1

Sur le serveur physique :

ip route add 2001:12d3:4:56ff:ff:ff:ff:ff/128 dev eth0 (1)
ip route add default via 2001:12d3:4:56ff:ff:ff:ff:ff (2)
ip route add 2001:12d3:4:5678::/64 dev vmnet1 (3)
ip neigh add proxy 2001:12d3:4:56ff:ff:ff:ff:ff dev vmnet1 (4)
ip neigh add proxy 2001:12d3:4:5681::1 dev eth0 (5)

A ajouter dans votre /etc/rc.local par exemple pour que cela soit effectif à chaque reboot (sans les (1),(2) etc..) ;-) )

Explication :

(1) J’ajoute la route vers la passerelle sur l’interface eth0

(2) J’ajoute la passerelle IPv6 comme route par défaut

(3) J’ajoute une route vers mon subnet /64 dédié a mes VMs sur l’interface VMware

(4) Je demande a l’interface vmnet1 de répondre aux requêtes à destination de l’ip de la passerelle

(5) Je demande a l’interface eth0 de répondre aux requêtes à destination de l’ipv6 de ma VM.

On attribue l’IPv6 2001:12d3:4:5681::1/64 dans notre VM.

# IPV6
iface eth0 inet6 static
address 2001:12D3:4:5681::1/64
netmask 64

On rajoute les routes dans /etc/rc.local

ip route add 2001:12d3:4:56ff:ff:ff:ff:ff/128 dev eth0
ip route add default via 2001:12d3:4:56ff:ff:ff:ff:ff

Pas la peine de toucher au kernel pour la VM.

On reboot tout le bouzin (physique et virtuel) et hop, magique, la VM est accessible en IPv6 de l’extérieur :-D

SITE WEB

Les serveurs sont en IPv6, reste à rendre accessible votre site web.

Que votre serveur http soit Nginx, Apache ou autre, pas de grandes différences. (Attention, pour Nginx il faut compiler avec l’option –with-ipv6).

Juste se rappeler que les adresses IPv6 s’écrivent entre crochets.

On fait écouter le serveur sur l’IPv6 :

Listen [2001:41d0:2:67a::150]:80

Et on configure un vhost en conséquence :

NameVirtualHost [2001:41d0:2:67a::150]:80
 
...

Il ne vous reste plus qu’a ajouter une entrée de type AAAA dans votre DNS.

dig -t AAAA blog.guiguiabloc.fr
 
;; QUESTION SECTION:
;blog.guiguiabloc.fr.           IN      AAAA
 
;; ANSWER SECTION:
blog.guiguiabloc.fr.    86400   IN      AAAA    2001:41d0:2:67a::150

Et voila, le blog est accessible en IPv6 (j’ai même mis un joli logo en bas de la page :mrgreen: ), et vérifié par ipv6forum.

IPv6 AVEC OPENVPN

Utilisant des tunnels openvpn entre mon domicile et mes serveurs OVH, bien entendu, l’idée de me servir du bloc d’adresses IPv6 d’OVH chez moi m’a tout de suite interpellé.

Comme pour les VMs, c’est assez triviale et plutot que de vous expliquez la procédure, je vous invite a lire les excellents tutos de GeekFault ou de  Vincent Riquer.

La seule différence notable est que j’utilise Vyatta comme client Openvpn chez moi (en tant que routeur d’interconnexion VPN).

Pour la spécificité Vyatta, j’ai modifié l’interface de cette façon :

openvpn-option « –dev-type tap –dev vtap0″

Ce qui me permet d’avoir une interface de type TAP et non TUN pour mon tunnel.

Vous pouvez ou utiliser RADVD comme décrit dans les tutos cités, ou utiliser le push ipv6 via le patch de Gert Döring , ou la même technique que pour les VMs.

CISCO et ADRESSAGE PRIVE IPv6

La on se spécifie un peu…

Si comme moi, vous avez monter un gros LAN des familles, l’idée d’utiliser des adresses IPv6 publiques vous enchantent moyennement.

Après tout, vous avez déjà un adressage privé IPv4, pourquoi ne pas continuer en IPv6.

Oyé, Oyé, l’adressage privé IPv6 existe.

Il a pour nom ULA (Unique Local Address) (a lire) et répond a la RFC 4193 (ex 3879).

Son plan d’adressage est le suivant : FC00::/7

( /7 ca fait un peu de monde… en fait /8 si l’on veut être propre)

Lire cet article également, et pour les connexions site à site et la technique pour générer des plans d’adressages ULA basés sur les MAC, lire : http://www.bortzmeyer.org/4193.html (ah ah ah, est-ce la fin des conflits des domaines d’encryption VPN :-D (les habitués des tunnels ipsec comprendront…))

Bien, trêve de plaisanterie, passons a la pratique.

On se réserve un /48 pour la maison.

fd44:4ff0:adda::/48

Mise en place de la passerelle sur le routeur Cisco pour le vlan concerné :

Vlan concerné : 10

Adressage IPv6 : fd44:4ff0:adda:10::/64

cisco#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
cisco(config)#ipv6 unicast-routing
cisco(config)#int fa 0/0.10
cisco(config-subif)#ipv6 enable
cisco(config-subif)#ipv6 address FD44:4FF0:ADDA:10::1/64
cisco(config-subif)#
cisco#ping FD44:4FF0:ADDA:10::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FD44:4FF0:ADDA:10::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/0 ms

Sur un pc du vlan :

ifconfig eth0 inet6 add FD44:4FF0:ADDA:10::5/64
 
pc:# ping6 FD44:4FF0:ADDA:10::1
PING FD44:4FF0:ADDA:10::1(fd44:4ff0:adda:10::1) 56 data bytes
64 bytes from fd44:4ff0:adda:10::1: icmp_seq=1 ttl=64 time=1.09 ms
64 bytes from fd44:4ff0:adda:10::1: icmp_seq=2 ttl=64 time=1.10 ms

Et voila, rien de bien compliqué.

Si vous souhaitez ajouter une route statique ou par défaut, par exemple vers FD44:4FF0:ADDA:33::5

cisco(config)#ipv6 route ::/0 FD44:4FF0:ADDA:33::5

Pour vos ACL même genre (ipv6 access-list)

Un petit blog a lire avec quelques trucs et astuces Cisco et IPv6 : http://www.gho.no/tag/ipv6/

Vous pouvez donc déployer IPv6 dans votre LAN sans être routé sur Internet.

Bien évidemment, rien ne vous interdit d’utiliser les adresses IPv6 publiques dont vous disposez.

Voila pour une approche tout en douceur de l’IPv6, j’espère que ce billet vous a donner envie de manipuler un peu IPv6 et de vous préparer à la Fin du Monde :-D

Amusez-vous bien ;-)

12 Commentairess :, , , plus...

Cisco Etherchannel, VTP, OSPF et HSRP

par guiguiabloc le 11 oct, 2009, sous architecture, cisco, geekerie

Outch, la, on cumule :-D

Dans les précédentes aventures du Blog, je vous avais fait part de mon « acquisition » de 2 routeurs Cisco 3620.

Après avoir fait un peu « mumuse » avec (ah la la, les geeks et leurs joujoux…) il était temps de les racker dans ma baie et surtout de repenser un peu l’architecture de mon LAN.

Je vous propose donc aujourd’hui un billet un peu « rigolo » sur les technos Cisco mais surtout, comment appliquer en quelques minutes des configurations que vous avez de très fortes chances de rencontrer dans un réseau d’entreprise.

Je ne détaillerais pas en nombreuses lignes le principe de fonctionnement des technologies mises en oeuvre (je vous laisse surfer sur le Nain Ternet pour plus de détails, ou, si vous le souhaitez, je pourrais m’attarder sur l’une d’entre elles sur un autre billet), mais je vous expliquerais l’essentiel (je pense) pour les utiliser.

D’ailleurs, je vous invite à farfouiller cet excellent site qui regorge de détails sur les technologies Cisco :

http://cisco.goffinet.org/

Bon, une tasse de café/guronsan/doliprane prête ? Les onglets sur YouPorn YouTube, P0rno.org AFP.com fermés ? On se concentre, et on y va.

(<privatejoke> Fred me susurre de se détendre avant l’effort, donc, oui, Fred, un peu de Karen Cheryl avant tout </privatejoke>)

  • Etats des lieux

Le rackage est achevé et la baie réseau de la maison ressemble à cela actuellement :

Baie Guiguiabloc

Baie Guiguiabloc

Donc une architecture normale de particulier…

Mon switch Cisco Catalyst commencant a être saturé, il est temps de mettre en fonction le catalyst 2950 qui me servait de Spare en cas de panne.

Pour schématiser ce que nous allons mettre en place, voici a quoi ressemble les branchements dans la baie (provisoirement il s’entend :-D )

La liaison entre les deux switchs se fait par câbles réseaux croisés (dans mon cas, j’en utilise deux), que je vais agréger dans un etherchannel.

  • ETHERCHANNEL

L’etherchannel est une technique d’interconnexion LAN entre switches (ou routeurs bien sûr) pour offrir sur un seul lien logique, plusieurs ports Fast ou Gigabit Ethernert.

Non seulement cela vous permet de créer une redondance en cas de panne d’une interface mais également d’agréger le débit disponible et/ou de faire de l’équilibrage de charge.

Sous Linux, vous trouverez cette technique sous le nom de « Channel Bonding » ou « Teaming » sous l’OS SALE.

La syntaxe entre le 2924 et le 2950 est différente, donc adaptons nous :

sw-2924 :

interface FastEthernet0/21
description --- portchannel sw-2950 fa 0/21 ---
duplex full
speed 100
port group 1 distribution destination
switchport trunk encapsulation dot1q
switchport mode trunk
!
interface FastEthernet0/22
description --- portchannel sw-2950 fa 0/22 ---
duplex full
speed 100
port group 1 distribution destination
switchport trunk encapsulation dot1q
switchport mode trunk
 
sw-2924#sh port group 1
Group  Interface              Transmit Distribution
-----  ---------------------  ---------------------
1  FastEthernet0/21       destination address
1  FastEthernet0/22       destination address

sw-2950 :

interface Port-channel1
switchport mode trunk
speed 100
duplex full
flowcontrol send off
 
interface FastEthernet0/21
description --- port-channel sw-2924 fa 0/21 ---
switchport mode trunk
speed 100
duplex full
no cdp enable
channel-group 1 mode on
!
interface FastEthernet0/22
description --- portchannel sw-2924 fa 0/22 ---
switchport mode trunk
speed 100
duplex full
no cdp enable
channel-group 1 mode on
 
sw-2950#sh interfaces port-channel 1 status
 
Port      Name               Status       Vlan       Duplex  Speed Type
Po1                          connected    trunk        full    100
 
sw-2950#sh interfaces port-channel 1 etherchannel
Age of the Port-channel   = 0d:00h:21m:02s
Logical slot/port   = 1/0          Number of ports = 2
GC                  = 0x00000000      HotStandBy port = null
Port state          = Port-channel Ag-Inuse
Protocol            =    -
 
Ports in the Port-channel:
 
Index   Load   Port     EC state        No of bits
------+------+------+------------------+-----------
0     00     Fa0/21   On/FEC             0
0     00     Fa0/22   On/FEC             0

Voila pour la partie liaison redondante des deux switches.

NB: Pour les puristes, je suis en mode « on » (etherchannel) car c’est le seul mode que comprend le 2924, bien évidemment, sur des gammes supérieures, essayez le mode active/passive/auto ou desirable suivant le protocole que vous souhaitez utiliser (LACP ou PAgP).

  • VTP

Comme je l’avais expliqué dans un précédent billet , j’utilise les Vlans dans mon réseau. Afin d’éviter de devoir renseigner les vlans dans chaque switches, nous allons utiliser VTP (Vlan Trunking Procotol), toujours en niveau 2, qui permet de centraliser la base de données des Vlans sur un switch et de le diffuser aux autres du même domaine.

Très pratique mais aussi très dangereux si vous y aller a la légère :-) .

Sur le 2924, je le définis comme « Server » :

sw-2924# vlan database
 
sw-2924# vtp server
 
sw-2924# vtp domain GUIGUIABLOCVTP
 
sw-2924# vtp password weshjesuislepatron
 
sw-2924# sh vtp status
VTP Version                     : 2
Configuration Revision          : 2
Maximum VLANs supported locally : 68
Number of existing VLANs        : 19
VTP Operating Mode              : Server
VTP Domain Name                 : GUIGUIABLOCVTP

Sur le 2950, il va falloir définir VTP en mode client (il existe 3 modes, serveur, client et transparent (ou autonome)).

ATTENTION : le champ « Configuration Revision » du futur client est très important, il faut absolument que sa valeur soit inférieure au « Server » sinon vous risquez de perdre vos vlans ! (expérience connue….).

Donc, première chose à faire, sauvegarder votre vlan.dat :

sw-2924#copy flash:vlan.dat tftp://10.154.12.1
Address or name of remote host [10.154.12.1]?
Destination filename [vlan.dat]?
!!
1396 bytes copied in 0.57 secs

Le plus simple étant de passer le client en mode « Transparent » d’abord, puis « Client » après, ce qui remettra a zéro le numéro de révision.

sw-2950(config)#vtp mode transparent
 
sw-2950#sh vtp status
VTP Version                     : 2
Configuration Revision          : 0
 
sw-2950(config)#vtp mode client
 
sw-2950(config)# vtp domain GUIGUIABLOCVTP
 
sw-2950(config)# vtp password weshjesuislepatron

Après quelques secondes, vous devriez voir les VLANs appris par le client :

sw-2950#sh vtp status
VTP Version                     : 2
Configuration Revision          : 2
Maximum VLANs supported locally : 128
Number of existing VLANs        : 19
VTP Operating Mode              : Client
VTP Domain Name                 : GUIGUIABLOCVTP

Désormais, les ajouts, suppressions, modifications de VLANs ne se feront que sur le 2924, qui les répercuteras sur le 2950.

  • OSPF

Ah, ah, ah. Alors là il faudrait quelques heures pour en faire le tour c’est pourquoi je ne vais pas m’attarder en détails. Surtout qu’il existe un excellent article de « Monsieur » hr du GCU-SQUAD dans le Jardin qui vous expliquera tout en détails :

http://www.unixgarden.com/index.php/administration-systeme/routage-dynamique-et-haute-disponibilite-partie-2

Pour résumer très basiquement, OSPF est un protocole de routage IP interne. Chaque routeur communique a ses voisins les réseaux auxquels il est directement connecté. Cette base connue de tous permet ensuite a chaque routeur de déterminer la route la plus courte vers chacun des réseaux. Ce protocole étant dynamique, un changement de route, une perte de lien est apprise en quelques secondes par les autres routeurs qui se chargeront ou de l’assimiler ou de trouver un autre chemin pour se rendre dans le réseau impacté.

Sur mon routeur principal, le 2611, on prépare la conf (les chiffres entre parenthèses vous amènent a l’explication) :

router ospf 1
log-adjacency-changes
area 0 authentication message-digest
redistribute connected metric-type 1 subnets (1)
redistribute static subnets (1)
passive-interface default (2)
no passive-interface FastEthernet0/0.100 (3)
network 10.154.100.0 0.0.0.255 area 0 (4)

(1) J’annonce tous les réseaux sur lesquels je suis directement connecté (également les subnets)

(2) Je désactive OSPF sur toutes les interfaces sauf celles explicitement nommées

(3) Je parle OSPF sur la sub-interface fa 0/0.100

(4) J’annonce le réseau 10.154.100.0/24 en tant qu’area0, réseau qui correspond a mon backbone.

On prépare les deux routeurs 3620 :

rt-3620-a

interface Loopback1
ip address 10.154.13.8 255.255.255.255
 
router ospf 1
log-adjacency-changes
area 0 authentication message-digest
redistribute connected subnets
passive-interface default
no passive-interface FastEthernet0/0.100
network 10.154.100.248 0.0.0.0 area 0

rt-3620-b

interface Loopback1
ip address 10.154.13.9 255.255.255.255
 
router ospf 1
log-adjacency-changes
area 0 authentication message-digest
redistribute connected subnets
passive-interface default
no passive-interface FastEthernet0/0.100
network 10.154.100.249 0.0.0.0 area 0

Roulez jeunesse, le temps que ca converge (quelques secondes) et les routes sont apprises de partout :

rt-2611#sh ip ospf neighbor
 
Neighbor ID     Pri   State           Dead Time   Address         Interface
10.154.13.8       1   FULL/DROTHER    00:00:33    10.154.100.248  FastEthernet0/0.100
10.154.13.9       1   FULL/BDR        00:00:33    10.154.100.249  FastEthernet0/0.100

FULL = nous sommes voisins et échangeons les routes

DROTHER = nous ne sommes ni DR (designated router) ni BDR (backup designated router)

BDR = nous sommes le « backup designated router » de ce réseau

rt-2611# sh ip route
 
...
 
O E2    10.154.13.9/32
[110/20] via 10.154.100.249, 00:00:05, FastEthernet0/0.100
O E2    10.154.13.8/32
[110/20] via 10.154.100.248, 00:00:05, FastEthernet0/0.100
...
 
rt-3620-b#sh ip route
...
 
C       10.154.13.9/32 is directly connected, Loopback1
O E2    10.154.13.8/32
[110/20] via 10.154.100.248, 00:00:40, FastEthernet0/0.100
O E1    10.154.13.1/32
[110/21] via 10.154.100.253, 00:00:40, FastEthernet0/0.100
...

Mouahhh c’est beau :-D

  • HSRP

Dernière étape et non la moindre, mise en place d’HSRP.

Le Hot Standby Router Protocol est un protocole propriétaire de Cisco que vous connaissez sûrement sous d’autres noms dans d’autres environnements comme VRRP ou (et surtout), CARP sous *BSD dont je vous ai souvent parler. (ICI ou LA)

Ce protocole permet de « partager » une IP Virtuelle qui sera affectée au routeur « Maitre ». En cas de panne de ce routeur, le routeur « Esclave » s’approprie cette adresse IP et reprend donc la continuité de service.

Pour une solution de continuité de service, c’est quand même ce qu’il se fait de mieux (qui a dit VSS au fond ? :-) :-) )

Nous allons configuré une interface de routage pour le Vlan 600, en 10.154.60.254 que se partageront le rt-3620-a, le Maître en 10.154.60.248 et le rt-3620-b, l’Esclave en 10.154.60.249 dans le groupe 10 (ce n’est qu’un identifiant pour HSRP et ses membres)

rt-3620-a(config)#int fa 0/0.600
rt-3620-a(config-subif)#encapsulation dot1Q 600
rt-3620-a(config-subif)#ip address 10.154.60.248 255.255.255.0
rt-3620-a(config-subif)#standby 10 priority 100
rt-3620-a(config-subif)#standby 10 ip 10.154.60.254
rt-3620-b(config)#int fa 0/0.600
rt-3620-b(config-subif)#encapsulation dot1Q 600
rt-3620-b(config-subif)#ip address 10.154.60.249 255.255.255.0
rt-3620-b(config-subif)#standby 10 priority 80
rt-3620-b(config-subif)#standby ip 10.154.60.254

On vérifie que ca ping :

Guiguiabloc-a:~# ping 10.154.60.254
PING 10.154.60.254 (10.154.60.254) 56(84) bytes of data.
64 bytes from 10.154.60.254: icmp_seq=1 ttl=255 time=1.44 ms
64 bytes from 10.154.60.254: icmp_seq=2 ttl=255 time=1.69 ms

Le traceroute me confirme le routeur Maître :

Guiguiabloc-a:~# traceroute 10.154.60.254
traceroute to 10.154.60.254 (10.154.60.254), 30 hops max, 40 byte packets
1  *
2  10.154.100.248 (10.154.100.248)  7.797 ms * *

Sur le rt-3620-b, on voit que l’interface est en attente :

FastEthernet0/0.600 is up, line protocol is up
Internet protocol processing disabled

Ne reste qu’a couper l’interface pour avoir une bascule transparente :-D

rt-3620-a(config)#int fa 0/0.600
rt-3620-a(config-subif)#shut
Guiguiabloc-a:~# traceroute 10.154.60.254
traceroute to 10.154.60.254 (10.154.60.254), 30 hops max, 40 byte packets
1  *
2  10.154.100.249 (10.154.100.249)  7.705 ms

Magique :-D

Voila donc en « quelques » lignes une approche de diverses techonologies que vous croiserez sûrement dans un LAN d’entreprise.

Il est évident qu’a petite échelle c’est un régal a mettre en place, sur une grosse infra, on est beaucoup plus enclin a réfléchir avant d’appuyer sur la touche « entrée »…

Espérant avoir titiller votre fibre réseau, amusez vous bien :-)

7 Commentairess :, , , , plus...

Sauvegarde et Versionning automatique des confs Cisco avec Rancid

par guiguiabloc le 29 juil, 2008, sous cisco

Je discutais dernièrement avec Pascal_1, un fidèle lecteur du blog (merci :-D ) , et utilisateur d’un Cisco Pix (donc quelqu’un de bien :-) ).

Donc ce petit billet lui est spécialement dédicacé mais je ne doute pas qu’ils servent à d’autres :-D .

 

Précédemment, je vous avais expliqué comment mettre en oeuvre une authentification centralisée via Tacacs+ sur vos Ciscos.

Nous allons nous servir de cette fonctionnalité pour sauvegarder automatiquement nos configurations et bien entendu, mettre en place un versionning CVS nous permettant de comparer les modifications apportés et pouvoir faire un retour arrière en cas de soucis.

 

Je partirais d’un serveur sous Gnu/Linux Debian qui servira de centralisateur des confs.

Les paquets à installer :

#apt-get install apache2 

#apt-get install expect

#apt-get install cvs

#apt-get install cvsweb

 

Création d’un user « rancid » pour l’application :

 

 #useradd -d /opt/rancid rancid

(j’installe mes programmes compilés toujours sous /opt mais je vous laisse libre de votre choix :-) )

 

On récupère l’excellentissime logiciel RANCID :

ftp://ftp.shrubbery.net/pub/rancid/rancid-2.3.1.tar.gz

 

#tar xvfz rancid-2.3.1.tar.gz

Maintenant, nous pouvons compiler et installer Rancid :

#cd /usr/local/src/rancid-2.3.1#./configure --prefix=/opt/rancid 

#checkinstall

 

Ceci va installer Rancid dans le dossier /opt/rancid. Si vous n’avez pas la commande checkinstall sur votre système ou si vous désirez des informations sur cet outil, un article ICI.

 

Maintenant, nous pouvons débuter le paramétrage de Rancid. Nous allons configurer le fichier /opt/rancid/etc/rancid.conf pour créer des groupes d’équipements. Au moins un groupe doit être configuré.

L’ajout des lignes ci-dessous crée un groupe appelé « Mes_confs_a_moi » où tous les configurations des équipements sont stockées:

LIST_OF_GROUPS= »Mes_confs_a_moi »

Il peut être utile de créer plusieurs groupes si vous avez une grand nombre d’équipements et vous voulez les séparer par localisation géographique par exemple, pour améliorer la lisibilité.

LIST_OF_GROUPS= »Brest Toulon Trifouilly-les-oies »

Les noms de groupe doivent être séparés par un espace.

Il est nécessaire de configurer un fichier appelé “.cloginrc” contenant les mot de passe nécessaire à accéder aux composants réseaux.

Pour le créer, il faut renommer le fichier “cloginrc.sample” en “.cloginrc”.

#cp /opt/rancid/share/rancid/cloginrc.sample /opt/rancid/.cloginrc

Ensuite, nous éditons le nouveau fichier “.cloginrc” où on peut trouver des exemples de syntaxe basées sur le type d’équipement (Cisco, Juniper, etc…) et de connexion (telnet, ssh, …)

Dans notre exemple, nous allons utiliser ssh pour accéder à un switch Cisco ayant une adresse IP de 10.156.1.1 (et donc la connexion est controlé par notre serveur Tacacs+)

Ouvrez /opt/rancid/.cloginrc :

add user 10.156.1.1 lulu (l’utilisateur lulu, opérateur que j’avais crée dans mon tac_plus.conf)

add password 10.156.1.1 motdepasse_de_lulu motdepasse_mode_enable

 

Ajouter un # au début de chaque ligne à l’exception bien entendu des lignes qui paramètrent vos connexions.

Soyez EXTRÊMEMENT attentif avec les permissions du fichier .cloginrc parce que les mots de passe inclus dans ce fichier ne sont pas encryptés.

Donc le seul moyen de protéger ces mots de passe critiques est de restreindre les droits d’accès au fichier.

Pour le faire, changez les droits d’accès à 600, ce qui veut dire que le propriétaire du fichier a les permissions lecture et écriture tandis que les autres utilisateurs n’ont aucune permission du tout.

Puis, la propriété du dossier /opt/rancid ainsi que tous les fichiers et dossiers qu’il inclus est transféré à l’utilisateur rancid.

   #chmod 600 /opt/rancid/.cloginrc

   #chown -R rancid:rancid /opt/rancid

   #chmod 770 /opt/rancid

 

Création de l’architecture CVS :

Connectez-vous en temps que rancid:

   #su rancid

   rancid@linux#/opt/rancid/bin/rancid-cvs

Ajouter des équipements aux groupes:

   /opt/rancid/var/rancid/"group_name"/router.db
   La syntaxe est la suivante:
   "ip_address or FQDN":"device_type":"status"
   10.156.1.1:cisco:up

   nom_dns:cisco:up

Un script permet de vérifier les paramétrages de connexion qui sont présents dans le fichier .cloginrc:

rancid@linux:~/bin$ /opt/rancid/bin/clogin 10.156.1.1

10.156.1.1 spawn telnet 10.156.1.1 Trying 10.156.1.1… Connected to 10.156.1.1. Escape character is ‘^]’.

User Access Verification

Password: Router>enable Password: Router#

Démarrez rancid:

rancid@linux$/opt/rancid/bin/rancid-run

Vous pouvez vérifier les journaux (logs) dans le répertoire /opt/rancid/var/rancid/logs/ .

Nous devons maintenant installer la plate-forme pour voir les configurations avec un navigateur web.

CVSWEB

Nous devons ajouter une ligne dans le fichier /etc/cvsweb/cvsweb.conf avec l’utilisateur root pour créer le nouveau dépôt (repository) CVS.

Rechercher la ligne commençant par “@CVSrepositories” et ajouter la ligne en gras ci-dessous:

   @CVSrepositories = (

   #'local' => ['Local Repository', '/var/lib/cvs'],

      'rancid' => ['rancid', '/opt/rancid/var/CVS/'],

   #'freeebsd' => ['FreeBSD', '/var/ncvs'],

   #'openbsd' => ['OpenBSD', '/var/ncvs'],

   #'netbsd' => ['NetBSD', '/var/ncvs'],

   #'ruby' => ['Ruby', '/var/anoncvs/ruby'],

   );

Si le dossier contenant les icônes csvweb et les fichiers css sont pas dans le dossier /var/www, il est nécessaire d’ajouter un lien symbolique:

 ln -s /usr/share/cvsweb /var/www/cvsweb

Nous pouvons tester l’interface cvsweb avec un navigateur internet :

   http://127.0.0.1/cgi-bin/cvsweb

Optionnellement, vous pouvez configurer Rancid pour vous envoyer un mail quand une configuration a été changée après le lancement du script rancid-run.

L’outil Rancid est paramètré pour envoyer des courriels à deux destinataires par groupe.

   rancid-"nom_du_groupe"

   rancid-admin-"nom_du_groupe"

Le premier destinataire ci-dessus va recevoir un rapport après un changement de configuration, le deuxième est envoyé quand il y a des messsages d’erreur.

Pour rappel le ou les groupes sont configurés dans le fichier /opt/rancid/etc/rancid.conf.

Par exemple, si vous avez un groupe appelé Mes_confs_a_moi, les mails seront envoyés aux adresses rancid-Mes_confs_a_moi et rancid-admin-Mes_confs_a_moi.

La dernière chose à faire est de créer des aliases pour vos destinataires. Ouvrez le fichier /etc/aliases:

   rancid-mes_confs_a_moi
   votre_email@chezvous.com

   rancid-admin-mes_confs_a_moi
   votre_email@chezvous.com

Nous avons utilisés ici notre groupe exemple appelé Mes_confs_a_moi.

Pour terminer, initialiser la base de données d’alias:

   #newaliases

Nous avons besoin de créer un cron job pour lancer rancid-run régulièrement.

   crontab -e -u rancid
   # Veuillez, svp, lancer le script rancid-run tous les jours à 00:30

   30 00 * * * /opt/rancid/bin/rancid-run

La commande crontab va mettre à jour le fichier /var/spool/cron/crontabs/rancid.

La très utile commande “find” peut être ajoutée au crontab pour supprimer les anciens logs.

La commande suivante supprime les fichiers de plus de 30 jours dans le dossier /opt/rancid/var/logs/:

   # supprime les anciens logs tous les premiers jours de chaque mois à 00:15

   15 00 1 * * find /opt/rancid/var/logs -type f -mtime +30 -exec rm {} \;

Et voila, désormais vous retrouverez l’intégralité de vos configurations préférées avec un versionning vous permettant de réparer vos erreurs que heureusement, nous faisons tous :-p

SOURCE

Bon courage :-)

 


 

Laisser un commentaire :, , , plus...

J’ai envie de PIXer…

par guiguiabloc le 19 mai, 2008, sous cisco, matériel

Oui je sais, le titre de ce billet est nul :-D mais j’aurais pu faire pire, genre « Tu veux pas que je te la tienne pour aller PIXer ?… » :-)

Bon d’accord, j’adore les vannes à 2 euros ;-) (1)

A la découverte donc du Cisco PIX 515-R.

L’accès à la console se fait comme pour tout Cisco, via un câble série sur le port Console.

Pour ceux qui connaissant déjà l’IOS, ils ne seront pas perdu, c’est quasiment pareil (a part le complétement automatique qui ne marche :-( et ça, c’est très désagréable !).

pix# sh version

Cisco PIX Firewall Version 6.3(5)
Cisco PIX Device Manager Version 2.0(2)

Compiled on Thu 04-Aug-05 21:40 by morlee

pix up 8 mins 30 secs

Hardware: PIX-515, 32 MB RAM, CPU Pentium 200 MHz
Flash i28F640J5 @ 0×300, 16MB
BIOS Flash AT29C257 @ 0xfffd8000, 32KB

0: ethernet0: address is 0003.e300.3e9e, irq 11
1: ethernet1: address is 0003.e300.3e9f, irq 10
2: ethernet2: address is 00d0.b76b.3ab0, irq 9
Licensed Features:
Failover: Disabled
VPN-DES: Enabled
VPN-3DES-AES: Disabled
Maximum Physical Interfaces: 3
Maximum Interfaces: 5
Cut-through Proxy: Enabled
Guards: Enabled
URL-filtering: Enabled
Inside Hosts: Unlimited
Throughput: Unlimited
IKE peers: Unlimited

This PIX has a Restricted (R) license.

La première chose qui m’a « dérangé, c’est le fait d’avoir le 3des/aes désactivé, et effectivement, lors de ma première connexion ssh dessus, le message d’erreur fut sans appel :

ssh 192.168.1.1
Selected cipher type <unknown> not supported by server.

Résolu par un : ssh -c des admin@192.168.1.1 mais bon…

Ensuite, lors de l’accès à l’interface graphique PDM en https, Iceweasel (le Firefox des gens biens ;-) ), me jetait gentiment…

Résolu également en autorisant un niveau d’encryptage plus bas :

Taper: about:config dans la barre d’adresse et passer la valeur security.ssl3.rsa_rc4_40_md5 à true.

Cela fonctionnait mais ce niveau de cryptage me dérangeait. Un petit tour sur Google et surtout sur le riche site de Cisco aller me donner la réponse que j’attendais :

Cisco fournit gratuitement une clé d’activation de licence pour les PIX pour ceux qui le demande !!! (lire ici )

Bien sûr il faut s’enregistrer mais nul besoin d’être un client Cisco, un simple compte « Guest » suffit pour obtenir la licence. Ayant déjà un compte chez Cisco, c’était plus simple pour moi.

Une fois enregistré, allez ici : http://www.cisco.com/go/license

Tout en haut, cliquez sur : If you do not have a Product Authorization Key (PAK), please click here for available licenses.

En bas de la liste, vous trouverez le choix : Cisco PIX Security Appliance 3DES/AES License

Remplissez tout les champs (le formulaire est très… pointilleux) avec bien sur le numéro de série de votre PIX et quelques minutes plus tard, oh joie, une clé d’activation dans ma Boite aux Lettres.

Retour sur la console du PIX, passage en mode config :

pix(config)#activation-key 54bf4b80 b7237e20 05022c63 f09e3302
Updating flash...Done.

(ne rêvez pas, c’est pas le vrai numéro hein… On est pas dans le monde des Bisounours non plus…)

Un reload du PIX et :

VPN-3DES-AES: Enabled

Mouah :-D :-D

On reconfigure ses clés :

ca gen rsa key 1024

(si le pix gueule que vous avez déjà des clés, passer la commande : ca zero rsa )

puis : ca save all

reload et voila, du 3DES au lieu d’un pauvre DES :-) (visible par un show ssh session)

PS: Bien sûr, j’ai passé outre dans mes explications le fait de configurer le hostname et le domain du PIX, ainsi que les accès sur l’interface Inside (LAN) du genre : ssh 192.168.1.52 255.255.255.255 inside (pour autoriser la machine 192.168.1.52 a accèder en ssh sur l’interface Inside).

Le PIX a trois interfaces, INSIDE (qui correspond au LAN), OUTSIDE (qui correspond au WAN ou accès au net) et DMZ pour… la DMZ ;-)

A chaque interface on définit un niveau définit par une valeur.
Le Pix interdit toute communication émanent d’une interface ayant un niveau de sécurité bas vers une interface de niveau élevé.

Il faut donc attribuer un niveau de sécurité de 0 pour l’interface connectée à Internet et un niveau de 100 pour l’interface connecter au LAN mais seulement dans le cas ou celle-ci se nomme inside.

Dans le cas contraire on est forcer de prendre une valeur de sécurité inférieur, par exemple 99.

Pour la DMZ (zone démilitarisée), on met un niveau de sécurité à 50.

Simple à comprendre et terriblement efficace.

Les ACL ressemblent à celle de l’IOS donc si vous connaissez déjà les Cisco, vous ne serez pas perdu.

Pour les autres, des centaines de tutos existent sur Internet et bien sur, je vous recommande chaudement le site de Cisco qui est une mine d’information.

(commencer la : CISCO PIX )

Une des choses que je voulais voir aussi, c’est le PDM ou Pix Device Manager, une interface web en Java qui permet de tout faire graphiquement.

Je ne suis pas un fan des trucs graphiques et pour moi, rien ne vaut la CLI, mais par curiosité, j’ai essayer.

Mon show version m’indiquait : Cisco PIX Device Manager Version 2.0(2)

J’ai donc regarder si je n’avais pas une version plus récente :

guiguiabloc@monpc:~/$ ls -lrt /mnt/lamule

Cisco Pix 6.3(5) And Pdm 3.0(4)

Parfait :-D

La mise a jour se fait comme pour un IOS, via tftp.

pix#copy tftp flash
Address or name of remote host [127.0.0.1]? 192.168.1.52
Source file name [cdisk]?pdm-304.bin
copying tftp://192.168.1.52/pdm-304.bin to flash
[yes|no|again]?yes

L’accès en https (n’oubliez pas les ACL…) et voici quelques copies d’écrans :

PDM1

PDM2

PDM3

PDM4

PDM5

PDM6

Intéressant non ?

Les possibilités sont très nombreuses et le PDM permet de vérifier vos ACL, voir même de les optimiser.

De plus, tout ce qui est config VPN, remontée de Logs, Monitoring etc… est inclus.

Je pense donc l’utiliser en plus de la CLI pour gérer ce petit bijou qu’est le PIX :-D

Ne me reste plus maintenant à savoir ou le mettre… Oui je sais ICI

(1) C’est l’histoire de deux oeufs sur une poële.
Le premier dit au deuxième : « Tu trouves pas qu’il fait chaud ? »

L’autre se met alors a crier : « AAAAh ! Un oeuf qui parle ! « 

Ok…je –>[]

 

 

6 Commentairess :, , plus...

Vous cherchez quelque chose ?

Utilisez le formulaire ci-dessous:

Vous ne trouvez pas ce que vous voulez ? Laisser un Commentaire sur un Billet !

Special Copinage!

Quelques sites amis ou recommandés...