Wie erlaube ich / dev / net / Tun in einem LXD-verwalteten LXC-Container?

9

Ich versuche, Openvpn in einem LXD / LXC-Container zum Laufen zu bringen und den zum Container kommenden Datenverkehr zum VPN umzuleiten.

Der Zweck ist es, eine vollwertige VM zu ersetzen, die genau das tut (und mit LXD zu spielen :-)

Ich habe es geschafft, eine IP von meinem Haupt-DHCP-Server abzurufen und die iptables-Regeln für das Maskieren / Weiterleiten des Datenverkehrs einzurichten. Wenn ich jedoch versuche, openvpn zu starten, wird dies durch das Fehlen (Zugriff auf) / dev / net / tun-Gerät blockiert .

Ich bin auf diesen Beitrag auf ServerFault /server/429461/no-tun-device-in-lxc-guest-for-openvpn gestoßen , aber er scheint nicht mit der aktuellen Version von LXC und / oder zu funktionieren LXD verwaltet die Konfiguration ...

EDIT: Ich habe versucht, diese Beschwörung zu verwenden, aber es ist nicht gelungen:

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

EDIT2: versucht, lxc config device add mycontainer tun unix-char path=/dev/net/tun major=10 minor=200aber beim nächsten Stopp / Start habe ich bekommen

Fehler: Fehler beim Konfigurieren der Geräteeinstellung: Nicht implementiert

Jetzt kann ich nicht einmal, lxc config device remove mycontainer tunda es den gleichen nicht implementierten Fehler auslöst. Container scheint verloren zu sein ...

alci
quelle

Antworten:

14

Sie wollen:

lxc config device add CONTAINER tun unix-char path=/dev/net/tun
stgraber
quelle
1
Dies löste den ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)Fehler, den ich beim Versuch hatte, eine OpenVPN-Verbindung von einem Container aus zu initiieren. Erwähnen Sie dies hier in der Hoffnung, diese Antwort zu Google-Suchanfragen zu diesem Fehler hinzuzufügen. Wenn dies auch die Frage von @alci löste, sollte diese Antwort akzeptiert werden.
Jonathan Y.
Ich bekomme jetzt ERROR: Cannot open TUN/TAP dev /dev/net/tun: Operation not permitted (errno=1)stattERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
Jay _silly_evarlast_ Wren
3

Ich hatte Mühe, dies auch in einem nicht privilegierten Container zu tun. Was ich am Ende tat, war

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

dann in den Behälter

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

Dies bedeutete, dass ich keine Änderungen an lxc conf vornehmen musste

Kent
quelle
0

Sie müssen das Tun-Gerät auf dem Host erstellen, bevor Sie den Container starten: sudo mknod /path/to/your/container/dev/net/tun c 10 200

sмurf
quelle
Vielen Dank. Ich habe den Knoten erstellt. Ich habe den Besitzer geändert: group in 100000: 100000. Aber ich kann es immer noch nicht aus dem Container sehen ...
alci