Obtenir une IPv6 grâce au VPN
Malgré l'année dans laquelle nous vivons, certains fournisseurs d'accès ne proposent toujours pas de connectivité IPv6. Vous pouvez heureusement proposer vos services en IPv6 après avoir configuré un VPN vers un fournisseur qui en dispose : openbsd.amsterdam, vultr... (voir il y a quelques chapitres la partie "Quelqu'un peut-il héberger OpenBSD pour moi?").
On va pour cela mettre en place un VPN avec wireguard comme vu précédemment, en y ajoutant la connectivité ipv6.
Prérequis
- Vous devez disposer d'un accès à un serveur distant disposant d'une ipv6. Une machine virtuelle par exemple.
- Une rangée d'IPv6 privée. Dans cet exemple, on utilisera fd9c:f774:0bfa:acfc. Il pourrait s'agir plus simplement de fd42::1, fd42::2, ... Ça fonctionnera, mais ce n'est pas très rigoureux.
Ce site vous aide à générer une rangée ipv6 privée
Sur le serveur distant :
Pensez à activer l'option d'ip forwarding pour l'ipv6 dans "/etc/sysctl.conf":
net.inet.ip.forwarding=1 net.inet6.ip6.forwarding=1
Le fichier "/etc/hostname.wg0" servant à configurer wireguard doit désormais préciser l'ipv6 du point de sortie du VPN. Ici, c'est "fd9c:f774:0bfa:acfc::1/64".
Chaque client doit pouvoir disposer aussi de son ipv6. On ajoute tout simplement une nouvelle option "wgaip" en plus de l'ancienne. La configuration ressemble alors à ceci :
# cat /etc/hostname.wg0 inet 10.0.0.1/24 inet6 fd9c:f774:0bfa:acfc::1/64 wgkey [...snip...] wgport 4545 # peer 1 wgpeer [...snip...] wgaip 10.0.0.2/32 wgaip fd9c:f774:0bfa:acfc::2/128 # peer 2 wgpeer [...snip...] wgaip 10.0.0.3/32 wgaip fd9c:f774:0bfa:acfc::3/128 # peer 3 wgpeer [...snip...] wgaip 10.0.0.4/32 wgaip fd9c:f774:0bfa:acfc::4/128 up
⚠ C'est important que chaque ipv6 des clients soit bien précisée avec à la fin "/128".
Sur la machine qui veut récupérer une ipv6 :
Dans le fichier "/etc/hostname.wg0", on doit ajouter quelques éléments par rapport à précédemment :
- Dans la section "wgpeer", il FAUT ajouter "wgaip ::0/0" pour autoriser l'accès en ipv6.
- On précise l'ipv6 de l'interface avec une ligne "inet6" indiquant l'ip privée, c'est à dire celle à l'intérieur du tunnel qui a été définie dans la section précédente sur le serveur pour identifier ce client.
- Ajouter une nouvelle route pour faire passer le traffic ipv6 par défaut par le point de sortie du VPN.
La configuration de wireguard ressemble à ceci :
# cat /etc/hostname.wg0 wgkey [...snip...] wgpeer [...snip...] \ wgendpoint <XX.XX.XX.XX> 4545 \ wgaip 0.0.0.0/0 # <--- ! \ wgaip ::0/0 \ wgpka 25 inet 10.0.0.3/24 inet6 fd9c:f774:0bfa:acfc::3/64 # <--- ! wgrtable 1 up !route add -inet default 10.0.0.1 !route add -inet6 default fd9c:f774:0bfa:acfc::1 # <--- !
Et voilà, vous disposez désormais d'un accès ipv6 au travers du VPN.
Vérifiez-le par exemple avec cette commande :
curl -6 https://ifconfig.co