Como permito / dev / net / Tun em um contêiner LXC gerenciado por LXD?

9

Estou tentando executar o Openvpn dentro de um contêiner LXD / LXC e redirecionar o tráfego que chega ao contêiner para a VPN.

O objetivo é substituir uma VM de pleno direito que faça exatamente isso (e brincar com o LXD :-)

Consegui obter um IP do meu servidor DHCP principal, configurei as regras do iptables para mascarar / encaminhar o tráfego, mas quando tento iniciar o openvpn, ele é bloqueado pela falta de (acesso ao) / dev / net / tun device .

Eu vim através desta postagem no ServerFault /server/429461/no-tun-device-in-lxc-guest-for-openvpn , mas parece não funcionar com a versão atual do LXC e / ou LXD gerenciando a configuração ...

EDIT: Tentei usar este encantamento, mas não teve êxito:

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

EDIT2: tentei, lxc config device add mycontainer tun unix-char path=/dev/net/tun major=10 minor=200mas na próxima parada / início, recebi

erro: falha ao configurar o tun do dispositivo: não implementado

Agora eu não posso nem lxc config device remove mycontainer tuncomo ele lança o mesmo erro não implementado. O container parece estar perdido ...

alci
fonte

Respostas:

14

Você quer:

lxc config device add CONTAINER tun unix-char path=/dev/net/tun
stgraber
fonte
1
Isso resolveu o ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)erro que eu estava tentando iniciar uma conexão OpenVPN a partir de um contêiner. Mencionar isso aqui na esperança de adicionar esta resposta às pesquisas do Google sobre esse erro. Se isso também resolveu a pergunta de @alci, essa resposta deve ser aceita.
Jonathan Y.
Agora eu recebo, em ERROR: Cannot open TUN/TAP dev /dev/net/tun: Operation not permitted (errno=1)vez deERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
Jay _silly_evarlast_ Wren
3

Eu estava lutando para fazer isso também dentro de um contêiner sem privilégios. O que acabei fazendo foi

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

então dentro do recipiente

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

Isso significava que eu não precisava fazer alterações no lxc conf

Kent
fonte
0

Você precisa criar o dispositivo tun no host antes de iniciar o contêiner: sudo mknod /path/to/your/container/dev/net/tun c 10 200

surf
fonte
Obrigado. Eu criei o nó. Mudei o proprietário: group para 100000: 100000. Mas eu ainda não consigo vê-lo de dentro do recipiente ...
alci