« 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.<br /><br />
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)<br /><br />
⚠️ <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 />
<code>
(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
</code>
</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 />
* 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 />
* 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
* 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
* 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
* 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:
* 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:
* Pour contrôler les règles:


<pre>
<pre>
Ligne 149 : Ligne 150 :
</pre>
</pre>


# Résultat
* 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/
[[Category:Private]]
[[Catégorie: Raspian]] [[Catégorie: Debian]] [[category:VPN]]