Cette question est similaire à No tun device in lxc guest for openvpn . Le LXC a évolué et les conteneurs non privilégiés LXC ont été introduits récemment qui offrent une autre couche de sécurité contre la rupture de la prison.
J'ai besoin de créer un serveur OpenVPN dans l'un des conteneurs non privilégiés. Je ne sais pas comment laisser le conteneur créer un périphérique réseau tun privé.
Je l'ai annexé lxc.cgroup.devices.allow = c 10:200 rwm
au ~/.local/share/lxc/mylxc/config
.
Après avoir démarré le conteneur, mknod /dev/net/tun c 10 200
revient mknod: '/dev/net/tun': Operation not permitted
à l'intérieur du conteneur.
J'utilise un vanunt Ubuntu 14.04 64bit comme hôte et un conteneur créé avec
lxc-create -t download -n mylxc -- -d ubuntu -r trusty -a amd64
Quelqu'un a-t-il réussi à faire /dev/tun
fonctionner l'appareil sous LXC non privilégié?
lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file
au fichier de configuration du conteneur, comme décrit ici: superuser.com/a/1205662/130915 Ensuite, j'ai exécuté openvpn en tant que root avec sudo à l'intérieur du conteneur.Réponses:
Vous devez ajouter explicitement la capacité CAP_MKNOD à votre conteneur .
Vous pouvez également essayer d'automatiser cela (s'il vous arrive d'utiliser
systemd
à l'intérieur du conteneur) en utilisant:qui peut pointer vers un script en cours d'exécution
mknod
.Son utilisation
docker
est très simple à réaliser. Par défaut, les conteneurs ne sont pas privilégiés .Dans cet exemple, je tire un
trusty
conteneur du registre:Et je le démarre en mode interactif, informant de la capacité dont j'ai besoin à l'intérieur:
Par opposition à:
la source
CAP_MKNOD
après le travail.lxc.cap.keep = CAP_MKNOD
config fait une erreurSimultaneously requested dropping and keeping caps
. J'ai vérifié tous les configs récursive ajoutés (ubuntu.userns.conf
,ubuntu.common.conf
etcommon.conf
) et a trouvé une seule ligne aveclxc.cap.drop
:lxc.cap.drop = mac_admin mac_override sys_time sys_module
. Mais ce n'est pas pertinent non?