Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| Divers:Wireguard_er2c5t4rt4yh1hawd4f6072:start [2025/11/02 09:05] – [Configurer Wireguard sur le client nomade - Configure Wireguard on the nomade client :] err404 | Divers:Wireguard_er2c5t4rt4yh1hawd4f6072:start [2025/11/27 22:16] (Version actuelle) – supprimée err404 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | source: https:// | ||
| - | ====== mettre en place un tunnel VPN Wireguard====== | ||
| - | par defaut, wireguard fait passer tous les paquets à travers un nœud de sortie (et c'est justement ce que je recherche) | ||
| - | ce qui permet d' | ||
| - | |||
| - | ====== Nœud de sortie ====== | ||
| - | ===== Configuration ===== | ||
| - | |||
| - | Définir les adresses ip publiques dans le fichier interfaces - Set public ip addresses in the interfaces file | ||
| - | (actuelement un proxmox avec un bridge en vmbr0) | ||
| - | |||
| - | ==== fichier '' | ||
| - | |||
| - | Le fichier doit ressembler à ça - The file should look like this : | ||
| - | <code bash> | ||
| - | auto lo | ||
| - | iface lo inet loopback | ||
| - | |||
| - | auto eno1 | ||
| - | iface eno1 inet manual | ||
| - | iface eno1 inet6 manual | ||
| - | |||
| - | auto vmbr0 | ||
| - | iface vmbr0 inet dhcp | ||
| - | bridge-ports | ||
| - | bridge-stp off | ||
| - | bridge-fd 0 | ||
| - | post-up ip a a 192.168.1.5/ | ||
| - | post-up ip a a 2a02: | ||
| - | post-up ip r a default via fe80:: | ||
| - | post-up echo " | ||
| - | post-up nft -f / | ||
| - | |||
| - | </ | ||
| - | # Save and quit (CTRL+O, CTRL+X) | ||
| - | |||
| - | Redémarrer le réseau - restart the network | ||
| - | |||
| - | ''/ | ||
| - | |||
| - | Autoriser la redirections des paquets IPV4 et IPV6 - Allow forwarding of IPV4 and IPV6 packets | ||
| - | |||
| - | ==== fichier ''/ | ||
| - | <code bash> | ||
| - | # Uncomment the following lines: | ||
| - | net.ipv4.ip_forward = 1 | ||
| - | net.ipv6.conf.all.forwarding = 1 | ||
| - | </ | ||
| - | # Save and quit (CTRL+O, CTRL+X) | ||
| - | appliquer les modifications dans ''/ | ||
| - | '' | ||
| - | |||
| - | sinon un '' | ||
| - | |||
| - | ==== Installation et configuration de Wireguard - installation and configuration of Wireguard : ===== | ||
| - | |||
| - | Installer Wireguard sur le VPS et sur le serveur YunoHost (Les utilisateurs ayant des versions de Debian plus anciennes que Bullseye doivent d’abord activer les rétroportages) Install Wireguard on the VPS and on the YunoHost server (Users with Debian releases older than Bullseye should first enable backports) | ||
| - | |||
| - | '' | ||
| - | |||
| - | WireGuard nécessite des clés publiques et privées codées en base64. Celles-ci peuvent être générées en utilisant l’utilitaire wg. Des deux côtés, faites: | ||
| - | WireGuard requires base64-encoded public and private keys. These can be generated using the wg utility. On both side do : | ||
| - | '' | ||
| - | '' | ||
| - | '' | ||
| - | '' | ||
| - | '' | ||
| - | '' | ||
| - | ==== Configurer Wireguard sur le nœud de sortie - Configure Wireguard on the exit node : ==== | ||
| - | |||
| - | ==== fichier '' | ||
| - | <code bash> | ||
| - | [Interface] | ||
| - | Address = 10.6.0.1/24 | ||
| - | Address = fd42: | ||
| - | #SaveConfig = true | ||
| - | #PostUp = bash / | ||
| - | #PostDown = bash / | ||
| - | PostUp = logger Wireguard " | ||
| - | PostUp = wg set %i private-key / | ||
| - | PostDown = logger Wireguard " | ||
| - | ListenPort = 1820 | ||
| - | #PrivateKey = XXXXXXXXXXXXXXXXXXXXXX | ||
| - | |||
| - | [Peer] | ||
| - | # e17 | ||
| - | PublicKey = XZXZXZXZXZXZXZXZXZXZ | ||
| - | AllowedIPs = 10.6.0.2/ | ||
| - | #AllowedIPs = 10.6.0.2/ | ||
| - | #Endpoint = [2a02: | ||
| - | |||
| - | [Peer] | ||
| - | # ssd1 | ||
| - | PublicKey = WXWXWXWXWXWXWXWXWXW | ||
| - | AllowedIPs = 10.6.0.3/ | ||
| - | #AllowedIPs = 10.6.0.3/ | ||
| - | |||
| - | |||
| - | |||
| - | </ | ||
| - | |||
| - | |||
| - | Rendre les deux scripts exécutables Make both scripts executable | ||
| - | |||
| - | '' | ||
| - | '' | ||
| - | |||
| - | ====== sur le client nomade ====== | ||
| - | ==== Installation et configuration de Wireguard - installation and configuration of Wireguard : ==== | ||
| - | |||
| - | Installer Wireguard sur le VPS et sur client nomade | ||
| - | |||
| - | '' | ||
| - | |||
| - | WireGuard nécessite des clés publiques et privées codées en base64. Celles-ci peuvent être générées en utilisant l’utilitaire wg. Des deux côtés, faites: | ||
| - | WireGuard requires base64-encoded public and private keys. These can be generated using the wg utility. On both side do : | ||
| - | '' | ||
| - | '' | ||
| - | '' | ||
| - | '' | ||
| - | '' | ||
| - | '' | ||
| - | ==== fichier ''/ | ||
| - | Je n' | ||
| - | <code bash> | ||
| - | [Interface] | ||
| - | Address = 10.6.0.2/24 | ||
| - | Address = fd42: | ||
| - | #SaveConfig = true | ||
| - | #PostUp = bash / | ||
| - | #PostDown = bash / | ||
| - | PostUp = echo " | ||
| - | PostUp = echo " | ||
| - | PostUp = chattr +i / | ||
| - | PostUp = logger Wireguard " | ||
| - | PostDown = chattr -i / | ||
| - | PostDown = logger Wireguard " | ||
| - | ListenPort = 1820 | ||
| - | PostUp = wg set %i private-key / | ||
| - | #PrivateKey = ZZZZZZZZZZZZZZZZZZZZZZZZ | ||
| - | # choose your DNS - for instance FDN DNS resolver | ||
| - | # you need to install resolvconf package to use this option | ||
| - | #DNS = fd42: | ||
| - | |||
| - | [Peer] | ||
| - | #miou2 | ||
| - | PublicKey = WWWWWWWWWWWWWWWWWWWWWWWWW | ||
| - | AllowedIPs = 0.0.0.0/0, ::0/0 | ||
| - | PersistentKeepalive = 25 | ||
| - | Endpoint = 77.129.238.159: | ||
| - | Endpoint = [2a02: | ||
| - | |||
| - | </ | ||
| - | |||
| - | |||
| - | ====== Activer le VPN des deux cotés, Enable VPN on both sides : ====== | ||
| - | |||
| - | Sur le VPS puis sur le serveur YunoHost exécuter les commandes suivantes On the VPS and then on the YunoHost server run the following commands : | ||
| - | |||
| - | '' | ||
| - | '' | ||
| - | |||
| - | Afin de permettre la génération automatique des certificats Let’s Encrypt des domaines/ | ||
| - | ==== fichier ''/ | ||
| - | <code bash> | ||
| - | ::1 | ||
| - | 127.0.0.1 | ||
| - | </ | ||
| - | |||
| - | ====== routes coté nœud de sortie ====== | ||
| - | |||
| - | '' | ||
| - | < | ||
| - | ip r | ||
| - | default via 192.168.1.1 dev vmbr0 | ||
| - | 10.6.0.0/24 dev wg-hive proto kernel scope link src 10.6.0.1 | ||
| - | 172.18.42.0/ | ||
| - | 192.168.1.0/ | ||
| - | </ | ||
| - | '' | ||
| - | < | ||
| - | 2a02: | ||
| - | fd42: | ||
| - | fe80::/64 dev fwpr104p0 proto kernel metric 256 pref medium | ||
| - | fe80::/64 dev vmbr0 proto kernel metric 256 pref medium | ||
| - | fe80::/64 dev hive proto kernel metric 256 pref medium | ||
| - | default via fe80:: | ||
| - | </ | ||
| - | ====== firewall coté nœud de sortie ====== | ||
| - | rien de particulier pour wireguard | ||
| - | (la chaine '' | ||
| - | |||
| - | '' | ||
| - | < | ||
| - | Chain INPUT (policy ACCEPT) | ||
| - | target | ||
| - | ACCEPT | ||
| - | |||
| - | Chain FORWARD (policy ACCEPT) | ||
| - | target | ||
| - | ACCEPT | ||
| - | |||
| - | Chain OUTPUT (policy ACCEPT) | ||
| - | target | ||
| - | </ | ||
| - | |||
| - | '' | ||
| - | < | ||
| - | table ip filter { | ||
| - | chain incoming { | ||
| - | type filter hook input priority filter; policy accept; | ||
| - | tcp dport { 514, 3000 } iif " | ||
| - | udp dport { 514, 3000 } iif " | ||
| - | } | ||
| - | |||
| - | chain FORWARD { | ||
| - | type filter hook forward priority filter; policy accept; | ||
| - | } | ||
| - | |||
| - | chain outgoing { | ||
| - | type filter hook output priority filter; policy accept; | ||
| - | } | ||
| - | } | ||
| - | table ip6 filter { | ||
| - | chain incoming { | ||
| - | type filter hook input priority filter; policy accept; | ||
| - | udp dport { 22, 53, 514, 3000, 8006 } iif " | ||
| - | tcp dport { 22, 53, 514, 3000, 8006 } iif " | ||
| - | } | ||
| - | |||
| - | chain FORWARD { | ||
| - | type filter hook forward priority filter; policy accept; | ||
| - | } | ||
| - | |||
| - | chain outgoing { | ||
| - | type filter hook output priority filter; policy accept; | ||
| - | } | ||
| - | } | ||
| - | table ip firewall { | ||
| - | chain postrouting { | ||
| - | type nat hook postrouting priority srcnat; policy accept; | ||
| - | iif " | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | ====== routes coté client nomade ====== | ||
| - | |||
| - | '' | ||
| - | < | ||
| - | default via 192.168.1.1 dev eno1 proto dhcp src 192.168.1.228 metric 100 | ||
| - | 10.6.0.0/24 dev wg-hive proto kernel scope link src 10.6.0.2 | ||
| - | 192.168.1.0/ | ||
| - | </ | ||
| - | '' | ||
| - | < | ||
| - | 2a02: | ||
| - | fd42: | ||
| - | fe80::/64 dev eno1 proto kernel metric 1024 pref medium | ||
| - | default via fe80:: | ||
| - | </ | ||
| - | |||
| - | comme on peut de voir, il n'y a pas de remplacement de la route par défaut que ce soit en ipv4 ou en ipv6. | ||
| - | pourtant un traceroute montre bien un passage à travers le nœud de sortie: | ||
| - | |||
| - | '' | ||
| - | < | ||
| - | traceroute to openbsd.org (199.185.178.80), | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | </ | ||
| - | |||
| - | '' | ||
| - | < | ||
| - | traceroute to openbsd.org (2620: | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | 10 * * * | ||
| - | 11 * * * | ||
| - | 12 * * * | ||
| - | 13 * * * | ||
| - | 14 * * * | ||
| - | 15 * * * | ||
| - | 16 * * * | ||
| - | 17 2001: | ||
| - | 18 2-0.ATLNGAMASD3.zip.zayo.com (2001: | ||
| - | 19 2001: | ||
| - | 20 gw-openbsd.yycix.ca (2001: | ||
| - | 21 bb-pf.openbsd.org (2620: | ||
| - | 22 2620: | ||
| - | </ | ||
| - | |||
| - | cela est du à wg-quick qui va modifier les règles de firewall plutôt que de compter uniquement sur le routage: | ||
| - | ====== firewall coté client nomade ====== | ||
| - | |||
| - | on voit bien les règles de firewall rajoutées par wg-quick | ||
| - | |||
| - | '' | ||
| - | < | ||
| - | Chain INPUT (policy ACCEPT) | ||
| - | target | ||
| - | |||
| - | Chain FORWARD (policy ACCEPT) | ||
| - | target | ||
| - | |||
| - | Chain OUTPUT (policy ACCEPT) | ||
| - | target | ||
| - | </ | ||
| - | '' | ||
| - | < | ||
| - | table inet filter { | ||
| - | chain input { | ||
| - | type filter hook input priority filter; policy accept; | ||
| - | } | ||
| - | |||
| - | chain forward { | ||
| - | type filter hook forward priority filter; policy accept; | ||
| - | } | ||
| - | |||
| - | chain output { | ||
| - | type filter hook output priority filter; policy accept; | ||
| - | } | ||
| - | } | ||
| - | table ip6 wg-quick-wg-hive { | ||
| - | chain preraw { | ||
| - | type filter hook prerouting priority raw; policy accept; | ||
| - | iifname != " | ||
| - | } | ||
| - | |||
| - | chain premangle { | ||
| - | type filter hook prerouting priority mangle; policy accept; | ||
| - | meta l4proto udp meta mark set ct mark | ||
| - | } | ||
| - | |||
| - | chain postmangle { | ||
| - | type filter hook postrouting priority mangle; policy accept; | ||
| - | meta l4proto udp meta mark 0x0123456 ct mark set meta mark | ||
| - | } | ||
| - | } | ||
| - | table ip wg-quick-wg-hive { | ||
| - | chain preraw { | ||
| - | type filter hook prerouting priority raw; policy accept; | ||
| - | iifname != " | ||
| - | } | ||
| - | |||
| - | chain premangle { | ||
| - | type filter hook prerouting priority mangle; policy accept; | ||
| - | meta l4proto udp meta mark set ct mark | ||
| - | } | ||
| - | |||
| - | chain postmangle { | ||
| - | type filter hook postrouting priority mangle; policy accept; | ||
| - | meta l4proto udp meta mark 0x0123456 ct mark set meta mark | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | ====== Test et déploiement Testing and deployment: ====== | ||
| - | |||
| - | |||
| - | * Assurer vous que votre zone DNS est configurer de sorte que le champs A pointe vers l’IPV4 de votre VPS et le champs AAAA pointe vers l’IPV6 de votre VPS. | ||
| - | * Une fois la propagation DNS effective, vous pouvez configurer les reverse DNS des IPV4 et IPV6 du VPS vers votre nom de domaine sur le site du fournisseur du VPS. | ||
| - | * Faite un diagnostique sur l’API d’administration YunoHost, normalement tout est vert ! | ||
| - | * Make sure that your DNS zone is configured so that the A field points to the IPV4 of your VPS and the AAAA field points to the IPV6 of your VPS. | ||
| - | * Once the DNS propagation is effective, you can configure the reverse DNS of the VPS IPV4 and IPV6 to your domain name on the VPS provider’s website. | ||
| - | * Do a diagnostic on the YunoHost administration API, normally everything is green! | ||
| - | |||
| - | |||
| - | |||