Aller au contenu

[TUTO][Docker] linuxserver/wireguard + Wireguard-UI


Messages recommandés

Posté(e)

@loli71, j'aimerais éclaircir certains points du compose.

Comment faut-il renseigner les variables PEERS (celle-ci est optionnelle), PEERDNS, INTERNAL_SUBNET (optionnelle elle-aussi), LOG_CONFS, WGUI_ENDPOINT_ADDRESS ?

J'imagine que pour WGUI_DNS on indique l'adresse locale du serveur DNS ? Par contre je ne sais pas ce qu'il faut indiquer dans WGUI_SERVER_INTERFACE_ADDRESSES.

Posté(e)

@CyberFr je te 'accorde, je n'ai pas été très clair concernant cette partie du compose. J'y suis allé en tâtonnant pour le coup, et il faudrait

Première chose à comprendre: les variables qui commencent par "WGUI_" servent à remplir la configuration par défaut de l'interface web (wireguard-ui), les autres permettent de configurer le serveur wireguard lui-même, donc tu retrouveras des valeurs écrites deux fois souvant (une pour définir le serveur, l'autre pour définir la valeur par défaut dans le web)

Reprenons cette partie du  compose pour essayer de l'expliquer (j'ai enlevé ce qui était vraiment optionnel et qui n'avait pas d’intérêt dans notre cas):

      - SERVERURL=<monnas.synology.me> # A REMPLACER 
      - SERVERPORT=51820
      - PEERDNS=192.168.1.1
      - INTERNAL_SUBNET=10.13.13.0
      - ALLOWEDIPS=192.168.1.0/24, 10.13.13.0/24 # exemple donnant accès uniquement au lan local au travers du VPN, pour faire passer tout traffic mettre 0.0.0.0/0
      - LOG_CONFS=false # Affiche ou non le QR codes généré dans la log docker
      # pour wg-ui
      - SESSION_SECRET=<une chaine aléatoirement> # A REMPLACER
      - WGUI_USERNAME=<le compte admin> # A REMPLACER
      - WGUI_PASSWORD=<le mot de passe admin> # A REMPLACER
      - WGUI_ENDPOINT_ADDRESS=<monnas.synology.me> # A REMPLACER
      - WGUI_DNS=192.168.1.1
      - WGUI_SERVER_INTERFACE_ADDRESSES=10.13.13.0/24
      - WGUI_SERVER_LISTEN_PORT=51820
      - WGUI_DEFAULT_CLIENT_ALLOWED_IPS=192.168.1.0/24, 10.13.13.0/24 # exemple donnant accès uniquement au lan local au travers du VPN, pour faire passer tout traffic mettre 0.0.0.0/0
      - WGUI_SERVER_POST_UP_SCRIPT=iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE
      - WGUI_SERVER_POST_DOWN_SCRIPT=iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth+ -j MASQUERADE
  • SERVERURL et WGUI_ENDPOINT_ADDRESS: doivent contenir le nom qui sera utilisé par les clients pour se connecter (on mets le nom fourni par DDNS si pas d'ip fixe sur la box). Ex: monnas.synology.me
  • SERVERPORT et WGUI_SERVER_LISTEN_PORT: contiennent la valeur du port UDP définie dans la partie serveur (en écoute) et dans la configuration du client
  • PEERDNS et WGUI_DNS: contiennent l'IP du serveur DNS qui sera envoyé aux clients pour qu'ils l'utilisent (dans notre cas, il s'agit de l'ip de la box 192.168.1.1 afin de pouvoir résoudre mes noms internes)
  • INTERNAL_SUBNET et WGUI_SERVER_INTERFACE_ADDRESSES: contiennent la définition du réseau qu'utilisera Wireguard, la variable est optionnelle si tu ne veux pas la spécifier car elle est mise par défaut à 10.13.13.0/24
  • ALLOWEDIPS et WGUI_DEFAULT_CLIENT_ALLOWED_IPS: contiennent la liste des réseaux qui seront routés depuis le clients vers le serveur, donc notre cas le réseau interne de wireguard bien sûr mais aussi le réseau local 192.168.1.0/24. Cela permet un accès aux machines du Lan local, mais le reste du traffic (internet) ne sera pas envoyé dans le VPN depuis le client. Si l'on veut que tout le traffic du client passe par le VPN, il suffit de mettre à la place "0.0.0.0/0"
  • LOG_CONFS: Affiche ou non le QR codes généré dans la log docker, dans notre cas, on aura les QR codes dans l'interface web, donc j'ai mis à false
  • WGUI_SERVER_POST_UP_SCRIPT et WGUI_SERVER_POST_DOWN_SCRIPT: règles iptables nécessaires pour le bon fonctionnement du serveur wireguard (trouvé dans plusieurs autres tutos)

Je vais mettre ces explications dans le tuto aussi 😉

Posté(e)

@loli71, non seulement tu maîtrises Wireguard d'où ce superbe tuto mais tu sais aussi te montrer pédagogue. Compliments !

J'ai la réponse aux questions que je me posais. Et ça tombe bien car je n'aime pas mettre en œuvre quelque chose sans rien comprendre à ce que je fais. J'aurai appris bien des choses, merci 😀

Bon, maintenant il me reste du boulot pour tout mettre en œuvre mais je crois que le plus dur est fait.

Posté(e)
il y a 4 minutes, CyberFr a dit :

Il est trop vieux mon DS220+

je peux te donner le paquet synology-wireguard (1.0.20220627) dont je parlais dans mon tuto en cas d'erreur wireguard module non actif ... je l'ai compilé et installé sur mon DS220+ pour faire ce tuto justement  🙂

Posté(e)
il y a 1 minute, loli71 a dit :

je peux te donner le paquet synology-wireguard (1.0.20220627) dont je parlais dans mon tuto en cas d'erreur wireguard module non actif ... je l'ai compilé et installé sur mon DS220+ pour faire ce tuto justement  🙂

Volontiers. Il remplacerait l'image actuelle ? Merci en tout cas.

Posté(e) (modifié)
il y a 4 minutes, CyberFr a dit :

Volontiers. Il remplacerait l'image actuelle ? Merci en tout cas.

Non pas du tout, c'est un paquet qui permet d'inclure dans le kernel de ton syno les modules afin de supporter wireguard et de ne plus avoir l'erreur au démarrage de ton container docker.

Voici le paquet pour DS220+ en DSM 7.1 uniquement

WireGuard-geminilake-1.0.20220627.spk

Modifié par loli71
Posté(e)

Tu me fais faire des choses dangereuses 😀 Je suis franchement déçu qu'un NAS de 2020 soit considéré comme obsolète, ils sont gonflés les développeurs de Wireguard.

Posté(e) (modifié)
il y a 27 minutes, CyberFr a dit :

Tu me fais faire des choses dangereuses 😀 Je suis franchement déçu qu'un NAS de 2020 soit considéré comme obsolète, ils sont gonflés les développeurs de Wireguard.

Sur notre"vieux" DS220+ comme tu dis:

root@monnas:~# uname -a
Linux monnas 4.4.180+ #42962 SMP Mon May 29 14:37:50 CST 2023 x86_64 GNU/Linux synology_geminilake_220+

Sur le site de wireguard (https://git.zx2c4.com/wireguard-linux-compat/about/ ) :

Citation

 

Backports of the WireGuard kernel module for Linux to 3.10 ≤ kernel ≤ 5.5.y

WireGuard was merged into the Linux kernel for 5.6. This repository contains a backport of WireGuard for kernels 3.10 to 5.5, as an out of tree module.

 

Donc pas le choix, faut installer le backport, c'est ce que fait le paquet que je t'ai donné et qui vient de là:

github https://github.com/vegardit/synology-wireguard et  https://github.com/runfalk/synology-wireguard

il y a 5 minutes, CyberFr a dit :

Ah zut, je suis sous DSM 7.2.

tu peux me donner la sortie de la commande commande uname -a sur ton DS220+ en DSM 7.2 stp ?

Je te compile la version pour DSM7.2 si tu ne préfère pas prendre celui dispo ici :https://www.blackvoid.club/wireguard-spk-for-your-synology-nas/

Modifié par loli71
Posté(e)
il y a 2 minutes, loli71 a dit :

Il semblerait qu'en DSM7.2, wireguard soit inclue dans le kernel ... alors tu peux peut-être migrer, c'est plus sûr non ?

Ne remue pas le couteau dans la plaie 😀

Bon, je suis fatigué, je verrai ça demain.

Posté(e)
Il y a 16 heures, loli71 a dit :

tu peux me donner la sortie de la commande commande uname -a sur ton DS220+ en DSM 7.2 stp ?

Citation

lionel_a@DS220:~$ uname -a
Linux DS220 4.4.302+ #64570 SMP Sat Jun 3 00:00:25 CST 2023 x86_64 GNU/Linux synology_geminilake_220+

J'attends ton verdict.

Posté(e)
Il y a 3 heures, loli71 a dit :

Donc on n'est pas prêt d'avoir les modules wireguard inclus directement dans le kernel 5.6 sur Syno

Il y a 1 heure, MilesTEG1 a dit :
Linux Syno-DS920Plus 4.4.302+ #64570 SMP Sat Jun 3 00:00:25 CST 2023 x86_64 GNU/Linux synology_geminilake_920+

La marque ne devrait plus s'appeler Synology mais Vieilleries... Et en plus ça rime !

Il y a 3 heures, loli71 a dit :

En tout cas voilà en pièce jointe le paquet pour DS220+ en DSM 7.2 uniquement que j'ai compilé hier.

Un grand Merci !

Au fait on l'installe comment ?

Posté(e)
il y a une heure, CyberFr a dit :

Au fait on l'installe comment ?

A partir du centre de paquets, bouton installation manuelle. Il faut le charger mais ne pas le lancer car il faut d'abord faire le paramétrage.

Et il me semble par ailleurs que pour 7.2 il faille redémarrer le NAS pour que le spk soit acté.

Posté(e)
Il y a 18 heures, Mic13710 a dit :

A partir du centre de paquets, bouton installation manuelle. Il faut le charger mais ne pas le lancer car il faut d'abord faire le paramétrage.

Et il me semble par ailleurs que pour 7.2 il faille redémarrer le NAS pour que le spk soit acté.

Effectivement, c'est bien ce qui est indiqué dans le tuto que j'avais mis comme lien dans le mien: https://www.blackvoid.club/wireguard-spk-for-your-synology-nas/

Citation

⚠️ SPKs for DSM 7.2
NOTE: Make sure to uncheck the option to run the package after installation. You will run the package via SSH after the installation is complete.
NOTE: If you are on DSM 7.2 be sure to reboot the NAS before running the startup script!
Next, jump back to the SSH prompt as root and run the following command to start the package: /var/packages/WireGuard/scripts/start.

 

  • 3 semaines après...
Posté(e)

J'ai aussi réécrit le petit script qui va mettre à jour ou installer wireguard-ui :
 

#!/bin/bash
# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ Script pour télécharger la dernière version de Wiregaurd-UI              ║
# ╚══════════════════════════════════════════════════════════════════════════╝
#
#   https://github.com/ngoduykhanh/wireguard-ui/releases
#

# Commande pour créer les dossiers :
#     mkdir -p /volume4/docker/wireguard_avec_ui/{config,custom-files/{custom-cont-init.d,custom-services.d},wireguard-ui,db}


# Changer ici en true pour imposer une version particulière.
# Sinon ce sera la dernière version disponible qui sera utilisée.
VERSION_Overwrite="false"
VERSION="v0.5.1"    # Changer la version pour pointer sur la version de votre choix.
                    # Ne sera pris en compte que si VERSION_Overwrite="true"

ARCHI="linux-amd64"   # Changer architecture si besoin

docker_volume="volume4"     # Changer pour le volume dans lequel se trouve le dossier docker
# Par exemple : volume4
nom_conteneur="wireguard_avec_ui"   # Changer par le nom du conteneur qui sera créé.
                                    # Servira comme nom de dossier dans le dossier docker


# ====================================================================================== #

# Construction du chemin d'accès
working_path="/${docker_volume}/docker/${nom_conteneur}/wireguard-ui"

# Vérification des dossiers
if [ ! -d "${working_path}" ]; then
    printf "Le chemin d'accès '%s' n'existe pas.\nLe script ne peux pas continuer.\n" "${working_path}"
    exit 1
fi

if [[ "${VERSION_Overwrite}" == "false" ]]; then
    printf "Vérification de la dernière version sur GitHub..."
    VERSION=$(curl -sL https://api.github.com/repos/ngoduykhanh/wireguard-ui/releases/latest | jq -r ".tag_name")
    # VERSION="${latest_gh_version:1}" # ENlève le v devant le n° de version. Inutile ici, mais laissé pour la postérité.
    printf "  qui est est la : %s\n" "$VERSION"
else
    printf "La version imposée qui sera téléchargée sur GitHub est la : %s\n" $VERSION
fi

cd "${working_path}" || exit 1
printf "\tTéléchargement en cours..."
wget --no-hsts -q -O "wireguard-ui-${VERSION}-${ARCHI}.tar.gz" "https://github.com/ngoduykhanh/wireguard-ui/releases/download/${VERSION}/wireguard-ui-${VERSION}-${ARCHI}.tar.gz" || exit 1
printf "... Téléchargement terminé.\n"

tar -zxf "wireguard-ui-${VERSION}-${ARCHI}.tar.gz" && mv wireguard-ui "wg-ui" && rm -f "wireguard-ui-${VERSION}-${ARCHI}.tar.gz"

# Fin du script

Il va mettre à jour avec la dernière version automatiquement, sauf si on fixe la version.

Posté(e)

@loli71Bonsoir,

J'ai suivi ton tuto (et même essayé de générer le .spk pour mon 920+ mais sans succès, je me suis rabbatu alors sur le spk de blackvoid).
Le conteneur s'est bien créé, mais il ne finit pas de démarrer en faisant une erreur (l'interface web de wg-ui n'est pas accessible...)

Voilà le log :
 

╔═════════════════════════════════════════════════════════════════════════╗
║                                                                         ║
║        Some of the contents of the folder /custom-services.d            ║
║            are not owned by root, which is a security risk.             ║
║                                                                         ║
║  Please review the permissions of this folder and its contents to make  ║
║     sure they are owned by root, and can only be modified by root.      ║
║                                                                         ║
╚═════════════════════════════════════════════════════════════════════════╝
╔═════════════════════════════════════════════════════════════════════════╗
║                                                                         ║
║        Some of the contents of the folder /custom-cont-init.d           ║
║            are not owned by root, which is a security risk.             ║
║                                                                         ║
║  Please review the permissions of this folder and its contents to make  ║
║     sure they are owned by root, and can only be modified by root.      ║
║                                                                         ║
╚═════════════════════════════════════════════════════════════════════════╝
[custom-init] Service files found in /custom-services.d
[custom-init] watch.sh: service detected, copying...
[custom-init] watch.sh: copied
[custom-init] wg-ui.sh: service detected, copying...
[custom-init] wg-ui.sh: copied
[migrations] started
[migrations] no migrations found
───────────────────────────────────────

      ██╗     ███████╗██╗ ██████╗ 
      ██║     ██╔════╝██║██╔═══██╗
      ██║     ███████╗██║██║   ██║
      ██║     ╚════██║██║██║   ██║
      ███████╗███████║██║╚██████╔╝
      ╚══════╝╚══════╝╚═╝ ╚═════╝ 

   Brought to you by linuxserver.io
───────────────────────────────────────

To support the app dev(s) visit:
WireGuard: https://www.wireguard.com/donations/

To support LSIO projects visit:
https://www.linuxserver.io/donate/

───────────────────────────────────────
GID/UID
───────────────────────────────────────

User UID:    1066
User GID:    65538
───────────────────────────────────────

Uname info: Linux d03dc1410870 4.4.302+ #64570 SMP Tue Jun 13 21:39:55 CST 2023 x86_64 GNU/Linux
**** It seems the wireguard module is already active. Skipping kernel header install and module compilation. ****
**** As the wireguard module is already active you can remove the SYS_MODULE capability from your container run/compose. ****
**** Client mode selected. ****
**** No client conf found. Provide your own client conf as "/config/wg0.conf" and restart the container. ****

 

 

Et aussi, une idée de comment ne plus avoir l'avertissement "... are not owned by root" ?

Posté(e) (modifié)

Bon j'ai du ajouter une variable d'environement pour que ça passe :

      - PEERS=iPhone,MBA-M2         # Number of peers to create confs for. Required for server mode. Can also be a list of names: myPC,myPhone,myTablet (alphanumeric only)

 

Mais je n'arrive pas à me connecter avec les ID spécifiés dans le docker-compose :

cD4Om2o.png

Quelqu'un a-t-il eu cette erreur ?

Edit : pour cette erreur, c'est moi qui suit trop con... dans le compose j'ai mis wg-admin XD

Il est à noter que si une telle bourde arrive, il faut supprimer le conteneur, le contenu du dossier db et recréer le conteneur.

Modifié par MilesTEG1
Posté(e)

Bon et bien je galère, ça ne fonctionne pas.

J'ajoute bien un client dans l'interface web. Je récupère le QR-Code que j'utilise avec le client iOS.
Depuis la 4G uniquement de mon mobile, je lance la connexion au serveur wireguard, elle semble se faire car j'ai le logo VPN qui s'affiche, mais j'ai ceci qui s'affiche en boucle dans le journal de l'application :

[NET] peer(asdazda...zdazd) - Sending handshake initiation
[NET] peer(asdazda...zdazd) - Handshake did not complete after 5 seconds, retying (try 2)
...

Et peut importe ce que je tente, ça ne passe pas...

Posté(e) (modifié)
Le 01/07/2023 à 15:25, MilesTEG1 a dit :

Je suis en train de suivre ton tuto, et je viens de percuter que le wireguard-ui n'est pas un conteneur, mais un binaire.
Pourquoi ne pas avoir choisi un conteneur pour ça ?

Bonjour MilesTE1, j'ai expliqué en tout début du point 3. pourquoi ce choix : "Le fait d'inclure le binaire wireguard-ui dans linuxserver/docker-wireguard permet entre autre de voir aussi facilement les peers connectés et leurs stats.". Je n'ai pas réussi à avoir les stats en me servant d'un containeur wireguard-ui et d'un containeur wireguard séparés.

 

Il y a 10 heures, MilesTEG1 a dit :

[NET] peer(asdazda...zdazd) - Sending handshake initiation [NET] peer(asdazda...zdazd) - Handshake did not complete after 5 seconds, retying (try 2) ...

Si je me souviens bien, cela ressemble à un problème d'ouverture de flux entre ton client IOS et ton containeur wireguard.
As-tu bien ouvert le bon port externe sur ta box pour le rediriger vers le bon port de ton synology et ce port est-il bien mappé dans ton docker-compose ?

En se basant sur mon fichier docker-compose.yaml fourni dans ce tuto, il faut forwarder le port externe 51820 vers le l'adresse interne du nas sur le port 51820 en UDP .

Et bien sûr s'assurer que ce même port 51820/UDP est bien ouvert aussi sur ton syno si tu as activé le firewall

Modifié par loli71
Posté(e)
Il y a 3 heures, loli71 a dit :

Bonjour MilesTE1, j'ai expliqué en tout début du point 3. pourquoi ce choix : "Le fait d'inclure le binaire wireguard-ui dans linuxserver/docker-wireguard permet entre autre de voir aussi facilement les peers connectés et leurs stats.". Je n'ai pas réussi à avoir les stats en me servant d'un containeur wireguard-ui et d'un containeur wireguard séparés.

OK je comprends ^^

 

Il y a 3 heures, loli71 a dit :

Si je me souviens bien, cela ressemble à un problème d'ouverture de flux entre ton client IOS et ton containeur wireguard.
As-tu bien ouvert le bon port externe sur ta box pour le rediriger vers le bon port de ton synology et ce port est-il bien mappé dans ton docker-compose ?

En se basant sur mon fichier docker-compose.yaml fourni dans ce tuto, il faut forwarder le port externe 51820 vers le l'adresse interne du nas sur le port 51820 en UDP .

Et bien sûr s'assurer que ce même port 51820/UDP est bien ouvert aussi sur ton syno si tu as activé le firewall

J'ai aussi pensé à cela. Et oui, j'ai transféré le port 51820 vers l'IP du NAS dans mon routeur '(qui est en dmz de ma freebox pop), ce qui a ouvert le port dans le pare-feu du routeur.
Ce port est bien sûr ouvert dans le parefeu du NAS.

 

Je retenterais plus tard de tout refaire.

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.