To content | To menu | To search


On va en boite ?

J'utilise un NAS QNap avec bonheur depuis quelques années, solution qui permet non seulement de stocker de nombreux films de vacances, mais aussi de faire joujou avec des machines virtuelles et autres conteneurs, entre autres Docker et LXC.

Un conteneur LXC est d'ailleurs la solution idéale pour avoir un accès shell pour pouvoir gérer le NAS et ne plus dépendre de l'interface web.

Malheureusement un bug très gênant faisait qu'il ne démarrait pas automatiquement au boot du NAS. Il était pourtant bien configuré avec "démarrage automatique", et le démarrage manuel se déroulait sans aucune erreur...

Après environ soixante-douze reboots, j'ai fini par trouvé d'où cela venait: utilisant OpenVPN il me fallait un device /dev/net/tun, que j'ai créé via les commandes magiques dans le fichier de configuration de mon conteneur LXC:

lxc.mount.entry = /dev/net dev/net none bind,create=dir
lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file 0 0
lxc.cgroup.devices.allow = c 10:200 rwm

Il semblerait que le nœud du problème soit lié aux montages bind, qui décidément ne sont vraiment plus ce qu'ils étaient (j'ai eu également de gros problèmes avec eux au taf sous CentOS7). J'ai donc abandonné cette voie et j'ai plutôt opté pour une autre méthode, créer le périphérique tun directement dans le conteneur. Et comme il ne survit évidemment pas au reboot, j'ai donc créé le script /usr/local/bin/mkdevtun.sh suivant:

#!/bin/sh

mkdir /dev/net
mknod /dev/net/tun c 10 200
chmod 0666 /dev/net/tun

que j'ai fait appeler par systemd:

[Unit]
Description=Make /dev/net/tun device for openvpn
After=tlp-init.service
Before=openvpn.service

[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/usr/local/bin/mkdevtun.sh

[Install]
WantedBy=multi-user.target

Et hop, un conteneur qui se lance maintenant correctement, et avec OpenVPN \o/

Add a comment

Comments can be formatted using a simple wiki syntax.

This post's comments feed