Как мне разрешить / dev / net / Tun в LXD-управляемом контейнере LXC?

9

Я пытаюсь запустить Openvpn внутри контейнера LXD / LXC и перенаправить трафик, поступающий в контейнер, в VPN.

Цель состоит в том, чтобы заменить полноценную виртуальную машину, которая делает именно это (и играет с LXD :-)

Мне удалось получить IP с моего основного сервера DHCP, настроить правила iptables для маскировки / пересылки трафика, но когда я пытаюсь запустить openvpn, он блокируется отсутствием (доступа к) / dev / net / tun устройства ,

Я наткнулся на этот пост на ServerFault /server/429461/no-tun-device-in-lxc-guest-for-openvpn , но, похоже, он не работает с текущей версией LXC и / или LXD управляет конфигурацией ...

РЕДАКТИРОВАТЬ: Я пытался использовать это заклинание, но это не удалось:

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

EDIT2: попробовал, lxc config device add mycontainer tun unix-char path=/dev/net/tun major=10 minor=200но на следующей остановке / старте, я получил

ошибка: не удалось настроить устройство tun: не реализовано

Теперь я не могу даже, lxc config device remove mycontainer tunкак он выдает ту же ошибку Не реализовано. Контейнер, похоже, потерян ...

ALCI
источник

Ответы:

14

Ты хочешь:

lxc config device add CONTAINER tun unix-char path=/dev/net/tun
stgraber
источник
1
Это решило ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)ошибку, которую я получал, пытаясь инициировать соединение OpenVPN из контейнера. Упоминание об этом здесь в надежде добавить этот ответ в поиски Google по этой ошибке. Если это также решило вопрос @alci, этот ответ должен быть принят.
Джонатан Я.
Теперь я получаю ERROR: Cannot open TUN/TAP dev /dev/net/tun: Operation not permitted (errno=1)вместоERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
Джей _silly_evarlast_ Рен
3

Я изо всех сил пытался сделать это также в непривилегированном контейнере. То, что я закончил, было

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

затем внутри контейнера

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

Это означало, что мне не нужно было вносить какие-либо изменения в lxc conf

Кент
источник
0

Вам нужно сделать устройство tun на хосте, прежде чем запускать контейнер: sudo mknod /path/to/your/container/dev/net/tun c 10 200

sмurf
источник
Спасибо. Я создал узел. Я сменил владельца: группа на 100000: 100000. Но я все еще не могу видеть это изнутри контейнера ...
Alci