« Wireguard ipv6 GUA » : différence entre les versions
| (24 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
Configurer WireGuard avec une IPv6 unicast globale.<br /> | Configurer WireGuard avec une IPv6 unicast globale.<br /> | ||
Un simple tunnel VPN à double pile avec prise en charge IPv6 globale.<br /> | Un simple tunnel VPN à double pile avec prise en charge IPv6 globale.<br /> | ||
WireGuard devient populaire auprès des utilisateurs de Linux en tant que VPN car il est intégré au noyau Linux, ce qui offre de meilleures performances | WireGuard devient populaire auprès des utilisateurs de Linux en tant que VPN car il est intégré au noyau Linux, ce qui offre de meilleures performances. | ||
Cependant, de nombreux tutoriels et scripts qui configurent WireGuard le font avec NATing de l'adresse IPv6 et donnent à l'utilisateur une adresse IPv6 locale de lien. Cela amène le système d'exploitation à préférer IPv4 à IPv6. | Cependant, de nombreux tutoriels et scripts qui configurent WireGuard le font avec NATing de l'adresse IPv6 et donnent à l'utilisateur une adresse IPv6 locale de lien. Cela amène le système d'exploitation à préférer IPv4 à IPv6.<br /> | ||
⚠️ Wireguard sur Raspberry Pi OS (bookworm)< | ⚠️ <strong>Wireguard IPV6 sur Raspberry Pi OS (bookworm) derrière une Freebox et un routeur OpenWRT</strong><br /> | ||
Ajout d'un sous-réseau avec /80.<br /> | Ajout d'un sous-réseau avec /80.<br /> | ||
| Ligne 34 : | Ligne 34 : | ||
</pre> | </pre> | ||
== Activer l'IP forwarding == | == Activer l'IP forwarding == | ||
Assurez-vous d'ajouter les éléments suivants à /etc/sysctl.d/99-pivpn.conf | Assurez-vous d'ajouter les éléments suivants à /etc/sysctl.d/99-pivpn.conf<br /> | ||
< | (Permet à l'interface d'accepter les messages IPv6 RA | ||
quand la transmission est permise) | |||
<pre> | |||
net.ipv4.ip_forward = 1 | net.ipv4.ip_forward = 1 | ||
net.ipv6.conf.all.forwarding = 1 | net.ipv6.conf.all.forwarding = 1 | ||
net.ipv6.conf.ens5.accept_ra = 2 | net.ipv6.conf.ens5.accept_ra = 2 | ||
</ | </pre> | ||
puis, pour appliquer les modifications: <code>sudo sysctl --system</code><br /> | puis, pour appliquer les modifications: <code>sudo sysctl --system</code><br /> | ||
== Configuration de l'interface wg0 == | == Configuration de l'interface wg0 == | ||
* Dans les règles IPv4, nous effectuons un NAT pour l'adresse IPv4.<br /> | |||
<pre> | <pre> | ||
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; | PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; | ||
| Ligne 50 : | Ligne 52 : | ||
</pre> | </pre> | ||
* Dans les règles IPv6, nous ajoutons une règle pour transférer le trafic vers l'interface Internet.<br /> | |||
<pre> | <pre> | ||
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;ip6tables -A FORWARD -i eth0 -o wg0 -j ACCEPT; ip6tables -A FORWARD -i wg0 -j ACCEPT; | PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;ip6tables -A FORWARD -i eth0 -o wg0 -j ACCEPT; ip6tables -A FORWARD -i wg0 -j ACCEPT; | ||
| Ligne 57 : | Ligne 58 : | ||
</pre> | </pre> | ||
* Version nftables avant l'ipv6 | |||
<pre> | <pre> | ||
PostUp = nft add table ip wireguard;nft add chain ip wireguard wireguard_chain {type nat hook postrouting priority srcnat\; policy accept\;};nft add rule ip wireguard wireguard_chain counter packets 0 bytes 0 masquerade;nft add table ip6 wireguard;nft add chain ip6 wireguard wireguard_chain {type nat hook postrouting priority srcnat\; policy accept\;};nft add rule ip6 wireguard wireguard_chain counter packets 0 bytes 0 masquerade; | PostUp = nft add table ip wireguard;nft add chain ip wireguard wireguard_chain {type nat hook postrouting priority srcnat\; policy accept\;};nft add rule ip wireguard wireguard_chain counter packets 0 bytes 0 masquerade;nft add table ip6 wireguard;nft add chain ip6 wireguard wireguard_chain {type nat hook postrouting priority srcnat\; policy accept\;};nft add rule ip6 wireguard wireguard_chain counter packets 0 bytes 0 masquerade; | ||
| Ligne 63 : | Ligne 64 : | ||
</pre> | </pre> | ||
* Version nftables avec l'ipv6 | |||
<pre> | <pre> | ||
PostUp = nft add table ip wireguard;nft add chain ip wireguard wireguard_chain {type nat hook postrouting priority srcnat\; policy accept\;};nft add rule ip wireguard wireguard_chain counter packets 0 bytes 0 masquerade; nft add table ip6 wireguard;nft add chain ip6 wireguard wireguard_chain {type nat hook postrouting priority srcnat\; policy accept\;};nft add rule ip6 wireguard wireguard_chain counter packets 0 bytes 0 masquerade;nft add chain ip6 wireguard FORWARD { type filter hook forward priority filter\; };nft add rule ip6 wireguard FORWARD iifname "eth0" oifname "wg0" ct state related,established counter accept;nft add rule ip6 wireguard FORWARD iifname "wg0" counter accept; | PostUp = nft add table ip wireguard;nft add chain ip wireguard wireguard_chain {type nat hook postrouting priority srcnat\; policy accept\;};nft add rule ip wireguard wireguard_chain counter packets 0 bytes 0 masquerade; nft add table ip6 wireguard;nft add chain ip6 wireguard wireguard_chain {type nat hook postrouting priority srcnat\; policy accept\;};nft add rule ip6 wireguard wireguard_chain counter packets 0 bytes 0 masquerade;nft add chain ip6 wireguard FORWARD { type filter hook forward priority filter\; };nft add rule ip6 wireguard FORWARD iifname "eth0" oifname "wg0" ct state related,established counter accept;nft add rule ip6 wireguard FORWARD iifname "wg0" counter accept; | ||
| Ligne 118 : | Ligne 119 : | ||
</pre> | </pre> | ||
--- | ---- | ||
== Notes: == | == Notes: == | ||
* Traduire les régles iptables en nftables | |||
<pre> | <pre> | ||
ip6tables-translate -A FORWARD -i eth0 -o wg0 -j ACCEPT | ip6tables-translate -A FORWARD -i eth0 -o wg0 -j ACCEPT | ||
| Ligne 137 : | Ligne 138 : | ||
sudo nft add rule ip6 wireguard FORWARD iifname "wg0" counter accept | sudo nft add rule ip6 wireguard FORWARD iifname "wg0" counter accept | ||
</pre> | </pre> | ||
* Pour effacer les règles: | |||
<pre> | <pre> | ||
sudo wg-quick down wg0 | sudo wg-quick down wg0 | ||
| Ligne 143 : | Ligne 144 : | ||
</pre> | </pre> | ||
* Pour contrôler les règles: | |||
<pre> | <pre> | ||
| Ligne 149 : | Ligne 150 : | ||
</pre> | </pre> | ||
* Résultat | |||
<pre> | <pre> | ||
table inet filter { | table inet filter { | ||
| Ligne 184 : | Ligne 185 : | ||
</pre> | </pre> | ||
=== Freebox === | |||
Dans la configuration IPv6 du serveur freebox | |||
* Activer le firewall IPv6 | |||
*⚠️ Décocher, Firewall sur les préfixes secondaires. | |||
=== Routeur Firewall === | |||
*⚠️ Sécurité: Le trafic entrant IPv4 et IPv6 du <code>wan/wan6</code> doit être bloqué sur le routeur derrière la freebox. | |||
* https://port.tools/port-checker-ipv6/ | |||
* https://ipv6.chappell-family.com/ipv6tcptest/ | |||
* Dans le firewall, faire le transfert du port <code>51820</code> vers l'ipv4 locale du raspberry pi et ajouter une règle de firewall pour ouvrir le wan vers le port <code>51820</code> de l'ipV6 publique statique du raspberry pi. | |||
Source: https://blog.miyuru.lk/setup-wireguard-with-global-ipv6/ | Source: https://blog.miyuru.lk/setup-wireguard-with-global-ipv6/ | ||
[[ | [[Catégorie: Raspian]] [[Catégorie: Debian]] [[category:VPN]] | ||