Aller au contenu

loli71

Membres
  • Compteur de contenus

    680
  • Inscription

  • Dernière visite

  • Jours gagnés

    10

Messages posté(e)s par loli71

  1. Il y a 7 heures, baobab379 a dit :

    Bonjour a tous,

    avez vous une solution à m'apporter, car âpres avoir suivis le tuto je vois bien le container Wireguard avec la stack malheureusement mon syno (418play) me dit que le .spk télécharger sur le lien communiquer et casser et doit être réparé mais n'y parviens pas.

    Savez vous d’où cela peut il provenir ?

     

    Merci par avance

    Tu as quoi comme modèle de Synology et quelle version de DSM ?
    Tu parles de quel lien communiqué exactement ? ce post commence à être long pour tout retrouver ...
     

  2. Le 25/12/2023 à 8:02 PM, Shiraz Adama a dit :

    je n'arrive pas à y accéder via mon navigateur

    Si tu ping bien c'est que les flux sont ouverts, si tu n'accèdes pas aux équipements via un navigateur (donc avec potentiellement un nom au lieu de l'ip), cela provient peut être d'un problème de configuration de la partie DNS dans wireguard.

    Dans mon exemple, j'ai positionné comme DNS distant l'ip de mon routeur:

    PEERDNS=192.168.1.1
    WGUI_DNS=192.168.1.1
    
    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) 

    Mais j'ai aussi coché la case suivante dans la partie config client :

    image.png.b15f390b848938151326ee3a66f29d74.png

    Sinon c'est le serveur DNS du réseau où tu te trouves qui est utilisé et non pas le serveur DNS de ton réseau distant (box)

  3. Il y a 15 heures, @cidflash a dit :

    Du coup, impossible d'avoir l'interface web... J'aimerai utiliser le client wireguard pour me connecter à mon autre serveur wireguard distant ...  J'ai le fichier .conf distant avec moi ! 
    Savez-vous comment je pourrez faire en ssh ou depuis le syno ? 

    Merci

    Dans un premier temps, le Tuto que j'ai fait permet de créer et gérer un wireguard configuré en Serveur, et non en client qui permettrait de te connecter à ton serveur distant.

     

    Concernant ta question : "pourquoi tu n'a as accès à l'interface Wireguard", la réponse est dans les deux premières lignes de ton log du même post:

    Citation

     

    2023/10/02 01:00:22stdout****  If you have an old kernel without wireguard support built-in, you can try using the legacy tag for this image to compile the modules from scratch.   ****

    2023/10/02 01:00:22stdout**** The wireguard module is not active. If you believe that your kernel should have wireguard support already, make sure that it is activated via modprobe! ****

     

     

    De plus, cette erreur est décrite dans mon tuto:

    Citation

     

    Si vous avez l'erreur suivante, cela veut dire que votre version de kernel n'inclue pas les modules nécessaires, vous devez alors installer ces modules manuellement.
     

    RTNETLINK answers: Not supported
    **** The wireguard module is not active. If you believe that your kernel should have wireguard support already, make sure that it is activated via modprobe! ****
    ****  If you have an old kernel without wireguard support built-in, you can try using the legacy tag for this image to compile the modules from scratch.   ****

    Vous pouvez vous appuyer sur ce tuto https://www.blackvoid.club/wireguard-spk-for-your-synology-nas/ ou les projets github suivants:

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

    https://github.com/runfalk/synology-wireguard (avec patch https://github.com/runfalk/synology-wireguard/issues/154#issuecomment-1169393940 pour DSM7.1)

     

     

  4. Le 25/08/2023 à 17:04, Sebastien Muller a dit :

    Du coup, comment dois-je faire pour donner les droits roor à ces dossier?

    Et comment faire pour passer cette erreur "No client conf found" 

    Hello Sebastien,

    Je viens de vérifier les droits positionnés sur les différents répertoires lors de mon installation, et je te confirme que les différents dossiers appartiennent à mon compte utilisateur du DSM (pas besoin de les faire appartenir à root).

    D'ailleurs on voit bien dans ton post que malgré les warning de droits, l'application voit et déclare bien les deux services watch.sh et wg-ui.sh qui se trouvent dans ces répertoires.

     

    Par contre, je viens de me rendre compte d'une chose sur mon installation, c'est que pour la déclaration du PGID dans le docker-compose.yaml, j'ai utilisé l'ID du groupe "administrators" et non pas l'ID du groupe "users" retourné par la commande id

    image.png.18bdd77e2fea200bfaeb9aa2d479c4c6.png

    Ce qui me donne:

        environment:
          - PUID=1026
          - PGID=101

     

    Je pense que cela pourrait régler ton problème de problème de "no client conf found"

  5. 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

  6. Juste pour vous dire que j'ai "résolu" mon problème d'utilisation de l'interface virtuelle ...

    Bon j'ai bien mis résolu entre parenthèses, car je l'ai enlevé pour ne pas perturber ce pauvre DSM, et j'ai trouvé que je pouvais configurer les DNS WAN de mon routeur pour utiliser un DNS interne ... du coup sur mon réseau c'est bien mon routeur qui fait serveur DNS (distribué par le DHCP), il utilise mon AdGuardHome du syno en docker avec macvlan.

    Et plus de souci de syno qui ne sait pas interroger adguard en docker avec macvlan sans interface virtuelle puisqu'il interroge le routeur.

  7. 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.

     

  8. 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/

  9. 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

  10. @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 😉

  11. Il y a 2 heures, Michel91 a dit :

    User UID: 1027

    User GID: 100

    ───────────────────────────────────────

    Uname info: Linux ab6becf6df52 4.4.302+ #64561 SMP Fri May 19 01:25:55 CST 2023 x86_64 GNU/Linux

    RTNETLINK answers: Not supported

    **** The wireguard module is not active. If you believe that your kernel should have wireguard support already, make sure that it is activated via modprobe! ****

    **** If you have an old kernel without wireguard support built-in, you can try using the legacy tag for this image to compile the modules from scratch. ****

    Dis moi, juste comme ça @Michel91 .. cette erreur ne ressemblerait-elle pas justement à l'erreur que j'ai décrite dans mon tuto ? 🙂

    Citation

    Si vous avez l'erreur suivante, cela veut dire que votre version de kernel n'inclue pas les modules nécessaires, vous devez alors installer ces modules manuellement.
     

    RTNETLINK answers: Not supported
    **** The wireguard module is not active. If you believe that your kernel should have wireguard support already, make sure that it is activated via modprobe! ****
    ****  If you have an old kernel without wireguard support built-in, you can try using the legacy tag for this image to compile the modules from scratch.   ****

    Vous pouvez vous appuyer sur ce tuto https://www.blackvoid.club/wireguard-spk-for-your-synology-nas/ ou les projets github suivants:

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

    https://github.com/runfalk/synology-wireguard (avec patch https://github.com/runfalk/synology-wireguard/issues/154#issuecomment-1169393940 pour DSM7.1)

     Ton nas n'inclue pas encore wireguard dans le kernel et tu dois en passer par la phase installation du paquet wireguard.spk pour ajouter les modules wiregaurd.

    il y a 53 minutes, CyberFr a dit :

    As-tu corrigé le tuto en conséquence ?

    @CyberFr oui comme je l'avais indiqué dans la réponse que je t'ai faite

  12. Il y a 7 heures, CyberFr a dit :

    @loli71, je viens d'essayer et j'ai de nouveau droit à l'erreur 404.

    oups ... désolé @CyberFr ... j'avais corrigé seulement les dernières lignes (qui parle de la mise à jours automatique), mais j'avais oublié de corriger les lignes qui permettent de récupérer le binaire au tout début du tuto....

    Correction faite maintenant et je remets ici les lignes à utiliser:

    export VERSION=v0.5.1 # Changer la version pour pointer sur la dernière
    export ARCHI=linux-amd64   # Changer architecture si besoin
    
    cd /tmp/
    wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/${VERSION}/wireguard-ui-${VERSION}-${ARCHI}.tar.gz
    tar -zxf wireguard-ui-${VERSION}-${ARCHI}.tar.gz
    mv wireguard-ui /volume1/docker/wireguard/wireguard-ui/wg-ui
    rm -f wireguard-ui-${VERSION}-${ARCHI}.tar.gz

     

    Il y a 4 heures, MilesTEG1 a dit :

    La ligne de commande reste nécessaire pour faire ce que tu veux faire , moi j’apporte juste une unification des commandes au sein d’un script car je n’aime pas taper les commandes les unes à la suite des autres 😜

    Le script de mise à jours automatique pourra être rajouté au scheduleur du DSM effectivement, mais il n'est aucunement obligatoire de passer par du ssh pour déployer la solution si la personne ne le souhaite pas (File station pur créer les dossiers et déposer le binaire de wireguard-ui récupéré et décompressé sur un pc, editeur de texte du DSM pour les fichiers et portainer pour le docker-compose)

    C'est pour cette raison que je pars du principe que tous les répertoires nécessaires sont créés en dehors du script 😉

    Il y a 1 heure, Michel91 a dit :

    J'essaie en vain de faire fonctionner le stack de portainer il me crée bien le container wireguard mais rien pour wireguard-ui, le répertoire db reste vide et je n'ai aucun message d'erreur dans portainer.

    Une idée sur ce problème?

    J'ai vérifié mes points de montage ils ont l'air bons enfin jusqu'aux doubles points.

     

    Tu as quoi dans les logs du container dans portainer ?

  13. il y a une heure, MilesTEG1 a dit :

    Pourtant, dans tes commandes, c'est pas /tmp que tu utilises :

    Je viens de corriger dans mon tuto, c'est une erreur de typo 😉

    @CyberFr tu peux continuer sans problème je pense, mise à part peut être des erreurs de typo ou oubli que je corrige à fur et à mesure de vos retour 🙂

    Le script de MilesTEG1 sera un plus pour ceux qui préfèrent utiliser le ssh plutôt que de tout faire en Web depuis le DSM et portainer.

     

    Et le script de mise à jours automatique de la version de wireguard-ui sera facile à ajouter ensuite si tu le souhaites.

  14. @CyberFr@Michel91: effectivement il y avait une petite erreur dans la définition des deux variables pour coller au lien de téléchargement réel sur le github.

    En utilisant les valeurs ci-dessous, cela fonctionne correctement chez moi avec mes commandes, j'ai mis à jour le Tuto aussi:

    Citation

    export VERSION=v0.5.1 # Changer la version pour pointer sur la dernière
    export ARCHI=linux-amd64   # Changer architecture si besoin

    @MilesTEG1 merci beaucoup pour le script que je n'avais pas encore eu le courage de faire 😉 Tu pourras mettre à jours pour utiliser les bonnes valeurs sinon ton wget retournera un 404 exactement comme mes commandes lol

    Par contre, ton script va créer un répertoire "tmp/" là où ils sera appelé, pour ma part j'avais utilisé le "/tmp" existant dans tous bon linux pour ne pas avoir à gérer cela.

    En plus tu créés le répertoire /${docker_volume}/docker/${nom_conteneur} s'il n'existe pas, mais normalement il doit être créé au début du tuto avec d'autres répertoires obligatoires :

    A la rigueur si tu préfères gérer la création des répertoires en ssh, utilise plutôt cette ligne qui fera tout en un seul coup:

    mkdir -p /${docker_volume}/docker/${nom_conteneur}/{config,custom-files/{custom-cont-init.d,custom-services.d},wireguard-ui,db}

     

  15. Il y a 3 heures, CyberFr a dit :

    Il y a un os dans le caviar lors de la récupération des binaires :

    root@DS220:/tmp# wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/${VERSION}/wireguard-ui-${VERSION}-${ARCHI}.tar.gz
    --2023-06-12 13:32:39--  https://github.com/ngoduykhanh/wireguard-ui/releases/download//wireguard-ui--.tar.gz
    Resolving github.com... 140.82.121.4

    @CyberFr Tu as dû oublié de mettre les deux premières lignes qui définissent la version et l'architecture avant de lancer la commande de récupération du binaire.. j'avais renseigné ceux que j'ai utilisé pour l'exemple et je pense que l'archi sera la même pour tout le monde pour le docker :

    export VERSION=0.5.1 # Changer la version pour pointer sur la dernière
    export ARCHI=amd64   # Changer architecture si besoin
    
  16. 1. Préambule

    Ce tutoriel a pour but d'installer un serveur VPN wireguard en docker incluant wireguard-ui pour faciliter l'administration du serveur et des clients.
    WireGuard est un protocole de communication et un logiciel libre et open source permettant de créer un réseau privé virtuel. Il est conçu avec les objectifs de facilité d'utilisation, de performances et de surface d'attaque basse.  

    2. Prérequis

        Avoir un NAS compatible Docker, voir la liste ici https://www.synology.com/fr-fr/dsm/packages/Docker.
        Savoir se connecter au NAS via SSH en root : https://www.nas-forum.com/forum/topic/57289-tuto-accès-ssh-et-root-via-dsm-6-et-7/
        Utiliser Docker-compose ou portainer
        
    3. Principe
    Dans ce tuto, j'utilise l'image docker linuxserver/docker-wireguard qui est maintenu à jour régulièrement ainsi que wireguard-ui (https://github.com/ngoduykhanh/wireguard-ui). 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.

    Sources:
    https://hub.docker.com/r/linuxserver/wireguard
    https://docs.linuxserver.io/images/docker-wireguard
    https://github.com/ngoduykhanh/wireguard-ui

    4. Mise en place

    Dans ce tuto j'utilise les informations suivantes, qui seront à adapter selon votre réseau et vos besoins (surtout dans le fichier docker-compose.yaml):

    Réseau LAN local: 192.168.1.0/24  
    Serveur DNS dans mon réseau Lan local (ma box): 192.168.1.1 qui permet la résolution entre autre des noms internes
    Réseau interne de Wireguard: 10.13.13.0/24 
    

    ATTENTION:

    Dans ce tuto, la configuration mise en place permet d'accéder au lan local depuis les clients, mais le reste du traffic internet ne passera pas par ce VPN.
    Pour faire passer l'ensemble du traffic d'un client par le VPN, utiliser "0.0.0.0/0" comme valeur dans le docker-compose pour les variables ALLOWEDIPS et WGUI_DEFAULT_CLIENT_ALLOWED_IPS

    4.1 Création des répertoires:
    Il faut créer les répertoires suivants dans le dossier partagé docker:

    wireguard/
    ├── config
    ├── custom-files
    │   ├── custom-cont-init.d
    │   └── custom-services.d
    ├── db
    └── wireguard-ui

    Vous pouvez utiliser File Station pour cela, le résultat doit être le suivant:

    image.thumb.png.519d8f7a42f44dd4680691ca726ddaab.png

    4.2 Création des fichiers:

    Il faut ensuite créer les fichiers suivants, soit en utilisant l'éditeur de texte du DSM soit en ssh avec vim

    wireguard/custom-files/custom-cont-init.d/init.sh:

    #!/usr/bin/with-contenv bash
    
    echo "**** installing inotify-tools ****"
    apk update && apk add inotify-tools

     

    wireguard/custom-files/custom-cont-init.d/install_wg-ui.sh:

    #!/usr/bin/with-contenv bash
    
    echo "**** installing wg-ui ****"
    cp /wireguard-ui/wg-ui /app/wg-ui
    chmod 755 /app/wg-ui
    
    if [ -r /wireguard-ui/wg_template.conf ]; then
        cp /wireguard-ui/wg_template.conf /wg_template.conf
    fi
    


    wireguard/custom-files/custom-services.d/watch.sh:

    #!/usr/bin/with-contenv bash
    
    while inotifywait -e modify -e create /config/wg0.conf; do
      wg-quick down wg0
      wg-quick up wg0
    done
    


    wireguard/custom-files/custom-services.d/wg-ui.sh:

    #!/usr/bin/with-contenv bash
    
    if netstat -apn | grep -q ":5000 "; then
      echo "Another service is using port 5000, disabling wg-ui"
      sleep infinity
    else
      echo $ENV
      echo "start wg-ui"
      exec \
        cd /app \
        ./wg-ui
    fi

    wireguard-ui/wg-ui (binaire):

    Récupérer la dernière version de l'exécutable pour l'archi correspondante à votre synology sur https://github.com/ngoduykhanh/wireguard-ui/releases décompressez la, et déposez l'exécutable wireguard-ui sous le nom wireguard-ui/wg-ui


    Exemple en ssh:

    export VERSION=v0.5.1 # Changer la version pour pointer sur la dernière
    export ARCHI=linux-amd64   # Changer architecture si besoin
    
    cd /tmp/
    wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/${VERSION}/wireguard-ui-${VERSION}-${ARCHI}.tar.gz
    tar -zxf wireguard-ui-${VERSION}-${ARCHI}.tar.gz
    mv wireguard-ui /volume1/docker/wireguard/wireguard-ui/wg-ui
    rm -f wireguard-ui-${VERSION}-${ARCHI}.tar.gz

     

    OPTIONNEL: Si vous souhaitez fournir votre propre template wireguard-ui, vous pouvez partir du fichier ci dessous:
    wireguard/wireguard-ui/wg_template.conf:

    # This file was generated using wireguard-ui (https://github.com/ngoduykhanh/wireguard-ui)
    # Please don't modify it manually, otherwise your change might get replaced.
    
    # Address updated at:     {{ .serverConfig.Interface.UpdatedAt }}
    # Private Key updated at: {{ .serverConfig.KeyPair.UpdatedAt }}
    [Interface]
    Address = {{$first :=true}}{{range .serverConfig.Interface.Addresses }}{{if $first}}{{$first = false}}{{else}},{{end}}{{.}}{{end}}
    ListenPort = {{ .serverConfig.Interface.ListenPort }}
    PrivateKey = {{ .serverConfig.KeyPair.PrivateKey }}
    {{if .globalSettings.MTU}}MTU = {{ .globalSettings.MTU }}{{end}}
    PostUp = {{ .serverConfig.Interface.PostUp }}
    PostDown = {{ .serverConfig.Interface.PostDown }}
    
    {{range .clientDataList}}{{if eq .Client.Enabled true}}
    # ID:           {{ .Client.ID }}
    # Name:         {{ .Client.Name }}
    # Email:        {{ .Client.Email }}
    # Created at:   {{ .Client.CreatedAt }}
    # Update at:    {{ .Client.UpdatedAt }}
    [Peer]
    PublicKey = {{ .Client.PublicKey }}
    {{if .Client.PresharedKey }}PresharedKey = {{ .Client.PresharedKey }}
    {{end}}AllowedIPs = {{$first :=true}}{{range .Client.AllocatedIPs }}{{if $first}}{{$first = false}}{{else}},{{end}}{{.}}{{end}}{{range .Client.ExtraAllowedIPs }},{{.}}{{end}}
    {{end}}{{end}}


    Vous devez obtenir le résultat suivant dans votre répertoire partagé docker:

    wireguard/
    ├── config/
    ├── custom-files/
    │   ├── custom-cont-init.d/
    │   │   ├── init.sh
    │   │   └── install_wg-ui.sh
    │   └── custom-services.d/
    │       ├── watch.sh
    │       └── wg-ui.sh
    ├── db/
    └── wireguard-ui1/
        ├── wg_template.conf # optionnel
        └── wg-ui

     

    7. Création du conteneur
    Récupérez le PUID/PGID à utiliser en vous connectant en ssh et tapez dans la console "id", on prendra alors note du uid/gid retourné.

    ATTENTION: il semblerait qu'il soit nécessaire d'utiliser le gid retourné pour le groupe "administrators" au lieu de celui retourné pour le groupe "users" dans la commande "id"

    docker-compose.yaml:

    version: "3.6"
    services:
      wireguard:
        image: lscr.io/linuxserver/wireguard:latest
        container_name: wireguard
        cap_add:
          - NET_ADMIN
          - SYS_MODULE
        sysctls:
          - net.ipv4.conf.all.src_valid_mark=1
          - net.ipv6.conf.all.disable_ipv6=1
          - net.ipv6.conf.default.disable_ipv6=1
        environment:
          - PUID=1026
          - PGID=101
          - TZ=Europe/Paris
          # pour wireguard partie serveur:
          - 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 la partie wireguard-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
          
        volumes:
          - /lib/modules:/lib/modules
          - /volume1/docker/wireguard/config:/config
          - /volume1/docker/wireguard/custom-files/custom-cont-init.d:/custom-cont-init.d:ro
          - /volume1/docker/wireguard/custom-files/custom-services.d:/custom-services.d:ro
          # pour wg-ui
          - /volume1/docker/wireguard/db:/app/db
          - /volume1/docker/wireguard/wireguard-ui:/wireguard-ui:ro
        ports:
          - 63710:51820/udp
          - 51821:5000/tcp
        restart: always

    ATTENTION: pensez bien à:

    • Modifier les points de montage pour qu'ils correspondent bien au chemin sur votre synology
    • Mettre vos propres valeurs lorsqu'il est indiqué en commentaire # A REMPLACER.

    Remarque:

    Les variables dans ce fichier semblent être déclarées en double, mais la première partie permet de configurer wireguard, et la deuxième partie (après pour wg-ui) permet de déclarer les valeurs par défaut utilisées dans l'interface Web.

    Explication des valeurs:

    • 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, dans notre cas le réseau interne de wireguard bien sûr mais aussi le LAN 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 vous souhaitez que tout le traffic des clients passe par le VPN, il suffit de mettre à la place "0.0.0.0/0" dans ces champs à la place.
    • 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)


    7.1 Via portainer

    Créer une nouvelle stack en utilisant le fichier docker-compose.yaml ci-dessus.

    Déployez le stack.

    7.2 Via ssh

    Créez le fichier wireguard/docker-compose.yaml  avec les informations ci-dessus.
    Pour créer le conteneur, connectez vous en ssh et passer les commandes suivantes en tant que root:

    cd /volume1/docker/wireguard
    docker-compose pull 

    Ce qui va télécharger la dernière version de l'image.
    Puis :

    docker-compose up -d

    Si pas d'erreur à la création (souvent dues à des caractères de  tabulation, une directive dans le fichier docker-compose mal  orthographiée ou désalignée, etc...), vous verrez un petit done apparaître en vert.

    Si vous avez l'erreur suivante, cela veut dire que votre version de kernel n'inclue pas les modules nécessaires, vous devez alors installer ces modules manuellement.
     

    RTNETLINK answers: Not supported
    **** The wireguard module is not active. If you believe that your kernel should have wireguard support already, make sure that it is activated via modprobe! ****
    ****  If you have an old kernel without wireguard support built-in, you can try using the legacy tag for this image to compile the modules from scratch.   ****

    Vous pouvez vous appuyer sur ce tuto https://www.blackvoid.club/wireguard-spk-for-your-synology-nas/ ou les projets github suivants:

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

    https://github.com/runfalk/synology-wireguard (avec patch https://github.com/runfalk/synology-wireguard/issues/154#issuecomment-1169393940 pour DSM7.1)

    8. Accès au Web-ui
    Vous pourrez désormés accéder au Web-UI par l'url http://<ip de votre syno:51821/
    Vous pouvez bien évidement ajouter une entrée dans le proxy inversé du DSM pour les accés en https avec un nom de domaine.

    REMARQUE:

    Si vous avez mis un autre port que le 51820 dans le fichier docker-compse.yaml pour la config du serveur et web-ui, il est nécessaire de sauvegarder et d'appliquer la configuration une première fois avant toute opération afin de modifier le fichier wg0.conf et de redémarre le serveur pour sa prose en compte.

    image.thumb.png.d896c44c61cb416fee1a7338c09cbbe0.png

    8.1 Forward de port:

    Il vous faudra aussi mettre en place le forward de port sur votre box/routeur interne pour permettre l'accès à votre serveur wireguard.

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

    Voici un exemple de mise en place sur un routeur Asus:

    image.thumb.png.c9675b2ef1da1273856f4248506a43c0.png

     

    9. Mise à jour:
    9.1 Mise à jour manuelle facile de wireguard-ui:

    Vous pouvez utiliser le script suivant pour mettre à jours facilement la version de wireguard-ui sans avoir à relancer le container docker:

    Connectez vous en ssh, puis en tant que root passez les commandes suivantes en prenant soin de bien renseigner les variable VERSION et ARCHI correspondant à vos besoins:

    export VERSION=v0.5.1 # Changer la version pour pointer sur la dernière
    export ARCHI=linux-amd64   # Changer architecture si besoin
    
    cd /tmp/
    wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/${VERSION}/wireguard-ui-${VERSION}-${ARCHI}.tar.gz
    tar -zxf wireguard-ui-${VERSION}-${ARCHI}.tar.gz
    # sauvegarde la version en place au cas où
    cp -f /volume1/docker/wireguard/wireguard-ui/wg-ui /volume1/docker/wireguard/wireguard-ui/wg-ui.sov
    mv wireguard-ui /volume1/docker/wireguard/wireguard-ui/wg-ui
    rm -f wireguard-ui-${VERSION}-${ARCHI}.tar.gz
    
    cat <<EOF | docker exec --interactive wireguard bash
    s6-rc stop custom-svc-wg-ui.sh
    cp -f /wireguard-ui/wg-ui /app/wg-ui
    s6-rc start custom-svc-wg-ui.sh
    EOF


    9.2 Mise à jour automatique:
    L'image docker linuxserver/wireguard peut être mise à jour automatiquement grace à watchtower.

    Pour wireguard-ui, on peut imaginer un script bash appelé en crontab qui ferait les actions suivantes:
    - Vérification de la présence d'une nouvelle version sur le github
    - Téléchargement de la version correspondant au synology
    - Décompression du binaire et dépose dans le répertoire dédié
    - Copie du binaire dans le docker au bon endroit et redémarrage du service associé

    PS: je suis en train de bosser sur ce fameux script de mise à jour de wireguard-ui

    Les pistes:
    Utilisation de l'api suivante pour détecter une nouvelle version .. mais comment la comparer à la version installée .. à creuser 😉
    https://api.github.com/repos/ngoduykhanh/wireguard-ui/releases/latest

  17. Il y a 2 heures, Michel91 a dit :

    Bonjour,

    J'ai installé linuxserver/Wireguard:lastest sur container manager, le conteneur semble fonctionner en tout cas il est en vert dans container manager. Mon problème est de créer des clients pour utiliser wireguard quelqu'un pourrait me donner un coup de pouce?

    Merci d'avance

    Il te faut un wireguard-ui pour faciliter la gestion du serveur et des clients

    https://github.com/ngoduykhanh/wireguard-ui/releases

     

    Je vais essayer de faire un petit tuto pour l'installation  de wireguard et wireguard-ui dans linuxserver/Wireguard vu que c'est exactement ce que j'utilise chez moi.

     

    En gros, ca donne cela en résultat:

    image.thumb.png.3959abf0feadecb39c1a3570a20d5aea.png

  18. Il y a 2 heures, MilesTEG1 a dit :

    Si par "gérer" tu entends placer une réservation dans le serveur DHCP, c'est pas trop gênant, tu le fais une fois ^^
    Mais s'il faut lancer cette commande régulièrement, ça va devenir pénible en effet 🙂 

    oui heureusement que ce n'est qu'une fois 😄

    il y a une heure, Jeff777 a dit :

    Sauf que depuiis j'ai redémarré le NAS pour voir et tout c'est bien passé.... ça a l'air résilient.

    Cela vient peut être bien de ce que je viens de constater  comme changement avant et après le passage de la commande "synonet --dhcp macvl0" en partant de 0. Du coup ta config d'interface est déclarée comme en DHCP, même après un reboot....

    Avant:

    cat /etc/sysconfig/network-scripts/ifcfg-macvl0
    
    BOOTPROTO=static

    Après:

    cat /etc/sysconfig/network-scripts/ifcfg-macvl0
    
    DEVICE=macvl0
    BOOTPROTO=dhcp
    ONBOOT=yes

    Donc essai suivant:

    pas de commande "synonet --dhcp macvl0" dans mon script de démarrage, mais par contre édition du fichier /etc/sysconfig/network-scripts/ifcfg-macvl0 pour y mettre les lignes suivantes:

    DEVICE=macvl0
    BOOTPROTO=static
    ONBOOT=yes
    IPV6INIT=off
    IPV6_ACCEPT_RA=1
    IPADDR=192.168.1.175
    NETMASK=255.255.255.255
    root@Nas:/etc/sysconfig/network-scripts# synonet --show
    System network interface list:
    
    Host Name: Nas
    Network interface: eth0
    Manual IP
    IP: 192.168.1.99
    Mask: 255.255.255.0
    Gateway: 192.168.1.1
    DNS: 192.168.1.161
    MTU Setting: 1500
    1000, full duplex, active mtu 1500
    RX bytes: 176839631
    TX bytes: 22958632
    
    Host Name: Nas
    Network interface: eth1
    DHCP
    IP: 169.254.95.125
    Mask: 255.255.0.0
    Gateway: 192.168.1.1
    DNS: 192.168.1.161
    MTU Setting: 1500
    65535, unknown duplex, active mtu 1500
    RX bytes: 0
    TX bytes: 0
    
    Host Name: Nas
    Network interface: macvl0
    Manual IP
    IP: 192.168.1.175
    Mask: 255.255.255.255
    Gateway: 192.168.1.1
    DNS: 192.168.1.161
    MTU Setting: 1500
    1000, full duplex, active mtu 1500
    RX bytes: 110510
    TX bytes: 23552

    et hop, plus de réservation dans le DHCP nécessaire, reste le test ultime du reboot  ...

    Résultat:

    On a bien une commande synonet --show qui répond correctement, et une conf du serveur VPN qui fonctionne correctement.

     

    PS: et comme rien n'est jamais parfait en ce bas monde... je viens de constater que certaines autres parties du DSM ne s'affichent pas correctement avec l'interface virtuelle créée (idem si on utilise la commande synonet --dhcp macvl0)

    Panneau de configuration > centre d'infos > Réseau: vide

    image.thumb.png.57e99fe4e2987d4a324fd8d4be8253cf.png

    Widgets > Santé du système : vide

    image.png.db5f130b45bedc86581e79f57d7cf86f.png

  19. Du coup, voici ce que j'ai fait pour normalement ne plus avoir de souci de config du serveur VPN tout en gardant mon réseaux macvlan et mon interface virtuelle macvl0 qui permet au synology d'accéder à tout ce qui est dans e réseau macvlan:

    • Suppression de l'ancienne interface virtuelle
     
    root@Nas:# mv /etc/sysconfig/network-scripts/ifcfg-macvl0 /root
    ip link del macvl0
    synonet --show
    
    root@Nas:# synonet --show
    System network interface list:
    
    Host Name: Nas
    Network interface: eth0
    Manual IP
    IP: 192.168.1.99
    Mask: 255.255.255.0
    Gateway: 192.168.1.1
    DNS: 127.0.0.1
    MTU Setting: 1500
    1000, full duplex, active mtu 1500
    RX bytes: 449968698070
    TX bytes: 10520784211
    
    Host Name: Nas
    Network interface: eth1
    DHCP
    IP: 169.254.95.125
    Mask: 255.255.0.0
    Gateway: 192.168.1.1
    DNS: 127.0.0.1
    MTU Setting: 1500
    65535, unknown duplex, active mtu 1500
    RX bytes: 0
    TX bytes: 0
    • Modification du script de création de l'interface virtuelle macvl0 (celui qui est appelé au démarrage du syno) pour ajouter à la fin du script la ligne suivante:
    #!/bin/bash
    
    sleep 60
    
    # Creation de l interface macvlan sur l hote
    ip link add macvl0 link eth0 type macvlan mode bridge
    ip addr add 192.168.1.175/32 dev macvl0
    ip link set dev macvl0 address 5E:00:01:02:03:45
    ip link set macvl0 up
    ip route add 192.168.1.160/28 dev macvl0
    synonet --dhcp macvl0   # permet de régler le problème d'interface mal reconnue par la commande synonet et donc d'éviter le bug dans le serveur VPN
    
    • Ajout dans mon DHCP la réservation d'IP correspondant à la MAC (5E:00:01:02:03:45)  et l'IP (192.168.1.175) se trouvant dans ce même script de création de l'interface virtuelle
    • Redémarrage du Synology

    Et voilà, tout fonctionne ... j'ai bien mon macvlan, mon interface virtuelle macvl0 (donc mon syno peut profiter à nouveau de  adguardhome qu'il héberge dans le réseau macvlan) et la config du serveur VPN est opérationnelle !!

    root@Nas:/etc/sysconfig/network-scripts# synonet --show
    System network interface list:
    
    Host Name: Nas
    Network interface: eth0
    Manual IP
    IP: 192.168.1.99
    Mask: 255.255.255.0
    Gateway: 192.168.1.1
    DNS: 127.0.0.1
    MTU Setting: 1500
    1000, full duplex, active mtu 1500
    RX bytes: 449973346355
    TX bytes: 10524904207
    
    Host Name: Nas
    Network interface: eth1
    DHCP
    IP: 169.254.95.125
    Mask: 255.255.0.0
    Gateway: 192.168.1.1
    DNS: 127.0.0.1
    MTU Setting: 1500
    65535, unknown duplex, active mtu 1500
    RX bytes: 0
    TX bytes: 0
    
    Host Name: Nas
    Network interface: macvl0
    DHCP
    IP: 192.168.1.175
    Mask: 255.255.255.0
    Gateway: 192.168.1.1
    DNS: 127.0.0.1
    MTU Setting: 1500
    1000, full duplex, active mtu 1500
    RX bytes: 524201
    TX bytes: 20004

    image.thumb.png.ca3a6cb9db77e2571a29b12d17343c17.png

    PS: je vais essayer de trouver ce qui se passe avec la commande synonet --dhcp qui permet de mettre l'interface virtuelle dans une configuration convenable pour le syno, car je préfèrerai quand même ne pas avoir à gérer le DHCP pour cette interface virtuelle...

     

  20. Euh, là je suis perdu @Jeff777, en gros tu nous dis que tu as tout désinstallé, redémarré, tout réinstallé comme avant (sauf que la création de l'interface virtuelle n'est pas planifiée dans la cron du syno) et que tout marche ?

     

    et tu as essayé de redémarrer le syno après toute cela (avec le création de l'interface virtuelle activée dans la cron) ?

×
×
  • 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.