Bonjour à tous,

Dans l'optique de mettre un place sur un Raspberry Pi 5 les conteneurs Docker suivants, j'ai effectué quelques tests après avoir suivit les vidéos de la chaine Youtube @xavki :

  • Un conteneur exécutant WireGuard connecté à un VPN servant d'interface réseau
  • Un conteneur exécutant Firefox connecté à Internet via le conteneur WireGuard
  • Un conteneur exécutant Transmission passant lui aussi par le conteneur WireGuard


Suivant les conseils de Xavki, j'ai compris qu'il était important de spécifier un utilisateur exécutant les commandes au sein du conteneur pour que ce ne soit pas root et ses privilèges qui les lance.
J'ai donc débuté mes tests avec un Dockerfile simple que voici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Partir de Debian bookworm slim
FROM debian@sha256:6dc38501802c1554f0fd858d1153a6f0e18c71006c6d0b31cf19fa778900e658

# Empêcher les demandes d'interaction pendant l'installation
ENV DEBIAN_FRONTEND=noninteractive

# Créer les variables utiles. Ici juste un utilisateur, inexistant sur la machine hôte.
ARG APP_USER=testuser

# Créer un utilisateur dédié et l'ajouter aux groupe sudo et testgroup
RUN adduser ${APP_USER} && echo "${APP_USER}:password" | chpasswd  && usermod -aG sudo,testgroup ${APP_USER}

# Activer l'utilisateur
USER ${APP_USER}:${APP_USER}

# Commande par défaut : terminal
CMD ["bash"]
Je construis mon image grâce à la commande docker build -t testimage . , il n'y a pas d'erreur et celle-ci est bien présente lorsque je fais un docker images.

Lorsque je lance un nouveau conteneur à partir de cette image grâce à la commande docker run -ti --name testconteneur --hostname testhost testimage je remarque les choses suivantes :

  • La session semble bien ouverte par l'utilisateur testuser, l'invite de commande commence par testuser@testhost
  • Résultat de la commande groups : testuser
  • Résultat de la commande groups testuser : testuser: testuser sudo users testgroup
  • Résultat de la commande sudo apt update : testuser is not in the sudoers file


Lorsque je lance un nouveau conteneur à partir de cette image grâce à la commande docker run -ti --name testconteneur --hostname testhost --user testuser testimage je remarque les choses suivantes :

  • La session semble bien ouverte par l'utilisateur testuser, l'invite de commande commence par testuser@testhost
  • Résultat de la commande groups : testuser sudo users testgroup
  • Résultat de la commande groups testuser : testuser: testuser sudo users testgroup
  • Résultat de la commande sudo apt update : All packages are up to date.


Pourquoi est-ce l'utilisateur exécutant les commandes dans le terminal du conteneur n'a pas l'air de faire partie des groupes dans lequel je l'ai ajouté si je n'utilise pas l'option --user testuser ?

Autre chose, pour utiliser une application graphique s'exécutant dans mon conteneur, j'ajoute la variable d'environnement et le montage suivant lorsque je lance le conteneur : -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix.
Est-ce nécessaire ou j'ai fait quelque chose de mal et je ne devrais pas avoir besoin de passer ces paramètres ?

Enfin est-ce qu'il y a quelque chose de particulier à faire pour que WireGuard fonctionne dans un conteneur ?
Je n'ai pas de problème avec Firefox et Transmission (simple installation et exécution, non configuré pour utiliser le réseau du conteneur WireGuard) mais je n'arrive pas à connecter WireGuard dans le conteneur au serveur VPN à partir d'un fichier .conf grâce à la commande sudo wg-quick up wgconf, l'erreur suivante est retournée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Warning: `/etc/wireguard/wgconf.conf' is world accessible
[#] ip link add wgconf type wireguard
RTNETLINK answers: Operation not permitted
Unable to access interface: Operation not permitted
[#] ip link delete dev wgconf
Cannot find device "wgconf"
Je pense avoir tout bien installé dans le conteneur (iproute2 wireguard wireguard-tools), l'utilisateur fait partie du groupe sudo, a l'autorisation d'utiliser wg-quick et le conteneur à accès à internet (je peux ping google).
A noter que sur ma machine hôte s'exécute NetworkManager et WireGuard, et que sur celle ci l'utilisation de la commande sudo wg-quick up wgconf fonctionne : l'intégralité des connexions de ma machine hôte passe par le VPN.

J'ai commencé à étudier les pistes suivantes :




Merci d'avance pour vos lumières