Comment autoriser / dev / net / Tun dans un conteneur LXC géré par LXD?

9

J'essaie de faire fonctionner Openvpn à l'intérieur d'un conteneur LXD / LXC et de rediriger le trafic venant du conteneur vers le VPN.

Le but est de remplacer une machine virtuelle à part entière qui fait exactement cela (et de jouer avec LXD :-)

J'ai réussi à obtenir une IP de mon serveur DHCP principal, à configurer les règles iptables pour masquer / transférer le trafic, mais lorsque j'essaie de lancer openvpn, il est bloqué par le manque (d'accès à) / dev / net / tun device .

Je suis tombé sur ce post sur ServerFault /server/429461/no-tun-device-in-lxc-guest-for-openvpn , mais il ne semble pas fonctionner avec la version actuelle de LXC et / ou LXD gérant la configuration ...

EDIT: J'ai essayé d'utiliser cette incantation, mais cela n'a pas réussi:

lxc config set mycontainer raw.lxc 'lxc.cgroup.devices.allow = c 10:200 rwm'

EDIT2: essayé lxc config device add mycontainer tun unix-char path=/dev/net/tun major=10 minor=200mais au prochain arrêt / démarrage, j'ai

erreur: échec de la configuration du réglage de périphérique: non implémenté

Maintenant, je ne peux même pas lxc config device remove mycontainer tuncar il génère la même erreur non implémentée. Le conteneur semble perdu ...

alci
la source

Réponses:

14

Tu veux:

lxc config device add CONTAINER tun unix-char path=/dev/net/tun
stgraber
la source
1
Cela a résolu l' ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)erreur que j'obtenais en essayant d'initier une connexion OpenVPN à partir d'un conteneur. Le mentionner ici dans l'espoir d'ajouter cette réponse aux recherches Google sur cette erreur. Si cela a également résolu la question de @alci, cette réponse doit être acceptée.
Jonathan Y.
Je reçois maintenant ERROR: Cannot open TUN/TAP dev /dev/net/tun: Operation not permitted (errno=1)au lieu deERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
Jay _silly_evarlast_ Wren
3

J'avais du mal à le faire aussi à l'intérieur d'un conteneur non privilégié. J'ai fini par faire

mknod /path/to/your/container/root/tun c 10 200
chown 100000:100000 /path/to/your/container/root/tun

puis à l'intérieur du conteneur

mkdir /dev/net
ln -s /root/tun /dev/net/tun

Cela signifiait que je n'avais pas à apporter de modifications à lxc conf

Kent
la source
0

Vous devez créer le périphérique tun sur l'hôte, avant de démarrer le conteneur: sudo mknod /path/to/your/container/dev/net/tun c 10 200

sмurf
la source
Merci. J'ai créé le nœud. J'ai changé son propriétaire: group en 100000: 100000. Mais je ne peux toujours pas le voir de l'intérieur du conteneur ...
alci