
Sommaire :
Cette article a pour objectif la mise en place de l’IPv6 au travers un tunnel VPN IPv4.
Il y a plusieurs raison pouvant amener à mettre en place de l’IPv6.
- Votre fournisseur internet traîne…
- Vous voulez apporter de la connectivité IPv6 à vos serveur,
- ou bien tout autre raison…
De toute façon, il n’y a que des bonnes raisons de vouloir mettre l’IPv6 en place
I° – Prérequis
Nous nous appuierons sur le Serveur OPENVPN pour ces manipulations.
Nous considérons ici que le serveur OPENVPN est installé et configuré.
Le client se connecte en IPv4 sur le serveur VPN :
SERVEUR VPN (ip 10.10.30.1) ———- CLIENT VPN (ip 10.10.30.254)
Nous disposons du bloc IPv6 suivant pour l »exemple : 2001:0e0b:21a1::/48
Nous allons donc créer un Point 2 Point IPv6 de la manière suivante :
SERVEUR VPN (ip 2001:0e0b:21a1:30::1/64) ———- CLIENT VPN (ip 2001:0e0b:21a1:30::ffff/64)
Ce bloc est fournit pour ONLINE pour ceux que ça intéresse.
II° – Configuration OPENVPN IPv4
a – Coté serveur
Voici le fichier de configuration utilisé. Je vous laisse soin de gérer la PKI, qui ne sera pas abordé ici.
# Conf Serveur port 1195 proto udp dev tap dev-type tap ca keys/ca.crt cert keys/server.crt key keys/server.key tls-auth keys/ta.key 0 dh keys/dh1024.pem server 10.10.30.0 255.255.255.0 ifconfig-pool-persist ipp.txt float keepalive 10 120 cipher AES-256-CBC max-clients 2 user nobody group nogroup client-config-dir ccd persist-key persist-tun status-version 2 status /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn.log verb 4 mute 20
à adapter selon vos besoin
Note : j’ai utilisé la directive ifconfig-pool-persist ipp.txt pour fixer l’adresse IP du client en 10.10.30.254
b – Coté client
Voici la configuration cliente utilisée :
client dev tap1 proto udp remote monippublique 1195 resolv-retry infinite nobind user nobody group nogroup persist-key persist-tun tls-client ca keys/ca-v6.crt cert keys/client-v6.crt key keys/client-v6.key ns-cert-type server tls-auth keys/ta-v6.key 1 cipher AES-256-CBC verb 3 status /var/log/openvpn-status-v6.log log-append /var/log/openvpn-v6.log
Normalement, les 2 extremités du tunnel doivent se pinger :
root@serveur:/etc/openvpn# ping 10.10.30.254 -c2 PING 10.10.30.2 (10.10.30.2) 56(84) bytes of data. 64 bytes from 10.10.30.2: icmp_req=1 ttl=64 time=21.1 ms 64 bytes from 10.10.30.2: icmp_req=2 ttl=64 time=17.2 ms --- 10.10.30.2 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 17.245/19.185/21.125/1.940 ms
Et du client :
root@client:/etc/openvpn# ping 10.10.30.1 -c2 PING 10.10.30.1 (10.10.30.1) 56(84) bytes of data. 64 bytes from 10.10.30.1: icmp_req=1 ttl=64 time=35.7 ms 64 bytes from 10.10.30.1: icmp_req=2 ttl=64 time=18.2 ms --- 10.10.30.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 18.278/27.008/35.738/8.730 ms
Jusqu’ici tout va bien Sinon, je vous laisse corriger pour que cela fonctionne !
III° – Mise en place de l’IPv6
Nous allons monter maintenant les interfaces IPv6 sur le routeur puis sur le client.
Nous allons faire cela manuellement dans un 1er temps. Cela pourra être scripté ultérieurement.
Nous allons utilisé la plage d’IPv6 suivante : 2001:0e0b:21a1:300::1/64
Je sais.. ça fait beaucoup d’IP pour 2 adresses utilisés mais bon… libre à vous de les réduire
a – Coté serveur
De coté la, nous allons mettre en place un tunnel grâce au driver SIT : Simple Internet Transition . Ce driver est utilisé pour faire passer le trafic IPv6 dans le tunnel à travers un réseau IPv4
Pur ce faire, 2 petites commandes sont à passer pour monter le tunnel IPv4 dans lequel l’IPv6 va passer.
Les éléments en gras seront à adapter :
/sbin/ip tunnel add site300v6 mode sit ttl 255 remote 10.10.30.254 local 10.10.30.1 /sbin/ip link set dev site300v6 up
- site300v6 : nom de l’interface
- remote 10.10.30.254 : adresse IPv4 coté client
- local 10.10.30.1 : adresse IPv4 coté serveur
Dans les logs vous devriez avoir quelque chose comme ça :
dmesg | grep "IPv6 over IPv4 tunneling driver"
[ 1641.145791] IPv6 over IPv4 tunneling driver
Il ne reste plus qu’à attribuer l’adresse IPv6 à notre nouvelle interface et la route pour joindre le client :
/sbin/ip -6 addr add 2001:0e0b:21a1:30::1/64 dev site300v6 /sbin/ip -6 route add 2001:0e0b:21a1:30::/64 via 2001:0e0b:21a1:30::ffff dev site300v6 metric 1
Vérifions :
# ifconfig site300v6 site300v6 Link encap:IPv6-dans-IPv4 adr inet6: fe80::6464:1e01/128 Scope:Lien adr inet6: 2001:0e0b:21a1:30::1/64 Scope:Global UP POINTOPOINT RUNNING NOARP MTU:1480 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
L’interface est UP et l’IPv6 est configué pour la partie serveur.
b – Coté client
1° – Sous linux
Ba tout comme sur le serveur, nous allons monter l’interface avec le driver SIT (les élément en gras sont à adapter selon votre config) :
/sbin/ip tunnel add site300v6 mode sit ttl 255 remote 10.10.30.1 local 10.10.30.254 /sbin/ip link set dev site300v6 up
Dans les logs vous devriez avoir quelque chose comme ça :
dmesg | grep "IPv6 over IPv4 tunneling driver"
[ 1641.145791] IPv6 over IPv4 tunneling driver
Il ne reste plus qu’à attribuer l’adresse IPv6 à notre nouvelle interface et la route par défaut pour joindre le serveur et les autres IPv6 on the net :
/sbin/ip -6 addr add 2001:0e0b:21a1:30::ffff/64 dev site300v6 /sbin/ip route add ::/0 via 2001:0e0b:21a1:30::1
Vérifions l’interface :
# ifconfig site300v6 site300v6 Link encap:IPv6-dans-IPv4 adr inet6: 2001:0e0b:21a1:30::ffff/64 Scope:Global POINTOPOINT NOARP MTU:1480 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
2° – Sous FreeBSD
Ba la c’est le même principe.
Sous BSD l’équivalent est l’interface gif0, qui créer un tunnel IPv4 => IPv6
ifconfig gif0 create ifconfig gif0 tunnel 10.10.30.254 10.10.30.1 ifconfig gif0 inet6 2001:0e0b:21a1:30::ffff/64 route -n add -inet6 default 2001:0e0b:21a1:30::1 ifconfig gif0 up
IV° – Conclusion et suite
Ça semble bon tout ça !
Maintenant, testons le ping en IPv6 !
Pingons la gateway à partir du client :
# ping6 -c 4 2001:0e0b:21a1:30::1 PING 2001:0e0b:21a1:30::1(2001:0e0b:21a1:30::1) 56 data bytes 64 bytes from 2001:0e0b:21a1:30::1: icmp_seq=1 ttl=64 time=12.4 ms 64 bytes from 2001:0e0b:21a1:30::1: icmp_seq=2 ttl=64 time=10.2 ms 64 bytes from 2001:0e0b:21a1:30::1: icmp_seq=3 ttl=64 time=13.4 ms 64 bytes from 2001:0e0b:21a1:30::1: icmp_seq=4 ttl=64 time=20.5 ms --- 2001:0e0b:21a1:30::1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 10.241/14.144/20.524/3.856 ms
Pingons en v6 notre ami google :
# ping6 -nc 4 ipv6.google.com PING ipv6.google.com(2a00:1450:4009:803::1011) 56 data bytes 64 bytes from 2a00:1450:4009:803::1011: icmp_seq=1 ttl=53 time=26.8 ms 64 bytes from 2a00:1450:4009:803::1011: icmp_seq=2 ttl=53 time=27.2 ms 64 bytes from 2a00:1450:4009:803::1011: icmp_seq=3 ttl=53 time=26.5 ms 64 bytes from 2a00:1450:4009:803::1011: icmp_seq=4 ttl=53 time=28.1 ms --- ipv6.google.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 26.540/27.203/28.160/0.640 ms
Oulala !! ça ping en V6 !!!! Que d’émotion !!
Voila, vous devriez avoir un tunnel IPv6 fonctionnel !
Il ne reste plus qu’à attribuer une autre plage d’IPv6 sur l’autre patte de votre client VPN (ba oui c’est un routeur nan ?), monter un petit DHCPv6 et mettre en place les routes qui vont bien et hop ! un réseau IPv6 fonctionnel !!
Amusez vous bien !
Article lu 4954 fois
Laisser un commentaire
Vous devez être connecté pour publier un commentaire.