Tag: openvpn
Déploiement d’IPv6… A bloc…
par guiguiabloc le 11 mai, 2010, sous architecture, cisco, linux, réseau
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
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
?
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
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
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
), 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
(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
Amusez-vous bien

