Nenhum dispositivo tun no lxc guest para openvpn

17

Estou tentando configurar um servidor openvpn dentro de um convidado lxc. No entanto, parece que não há um dispositivo de afinação disponível no contêiner.

Iniciar o openvpn dentro do contêiner me dá este erro:

Tue Sep 18 13:04:18 2012 Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
Tue Sep 18 13:04:18 2012 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Tue Sep 18 13:04:18 2012 /sbin/ifconfig  10.6.0.1 pointopoint 10.6.0.2 mtu 1500
SIOCSIFADDR: No such device
: ERROR while getting interface flags: No such device
SIOCSIFDSTADDR: No such device
: ERROR while getting interface flags: No such device
SIOCSIFMTU: No such device
Tue Sep 18 13:04:18 2012 Linux ifconfig failed: external program exited with error status: 1
Tue Sep 18 13:04:18 2012 Exiting

Na configuração dos meus contêineres, vejo o seguinte:

#tun
lxc.cgroup.devices.allow = c 10:200 rwm

Eu assumiria que isso ativou os dispositivos tun para o contêiner, mas o modprobe tun me deu outro erro:

FATAL: Could not load /lib/modules/3.2.0-30-generic/modules.dep: No such file or directory

Estou assumindo que estou perdendo alguma permissão ou algo no meu contêiner. Alguém pode me dizer o que é?

Lawrence
fonte
Existe /dev/net?
quanta de
Não, / dev / net também não existe.
Lawrence

Respostas:

17

Não estou familiarizado com o lxc , mas tente os seguintes comandos:

# mkdir /dev/net 
# mknod /dev/net/tun c 10 200 
# chmod 666 /dev/net/tun
quanta
fonte
3
e no lxc config a seguinte linha: lxc.cgroup.devices.allow = c 10: 200 rwm
apagr
@apagr não funciona mais no Ubuntu 14.04 ...
Adam Ryczkowski
1
Funciona com lxc turnkey openvpn no proxmox 4.3
incorporado
6

As respostas acima não funcionam atualmente com as versões atuais do lxc. A criação manual de um dispositivo de caractere mknodsem efeito - o dispositivo não é visível dentro do contêiner. É necessário o uso da autodevfuncionalidade lxc.

lxc.cgroup.devices.deny = a

lxc.cgroup.devices.allow = c 10:200 rwm

lxc.hook.autodev = sh -c "modprobe tun; cd ${LXC_ROOTFS_MOUNT}/dev; mkdir net; mknod net/tun c 10 200; chmod 0666 net/tun"

A ordem é importante - denydeve ser a primeira.

Stuart Cardall
fonte
3

Além da resposta dos quanta. Verifique também se você possui esta linha na configuração do lxc:

mknod / dev / net / tun c 10 200

Esta é a sintaxe correta:

#tun
lxc.cgroup.devices.allow = c 10:200 rwm
A priori
fonte