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

Réponses:


14

Tu veux:

lxc config device add CONTAINER tun unix-char path=/dev/net/tun

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


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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.