¿Cómo permito / dev / net / Tun en un contenedor LXC administrado por LXD?

9

Estoy tratando de ejecutar Openvpn dentro de un contenedor LXD / LXC y redirigir el tráfico que llega al contenedor a la VPN.

El propósito es reemplazar una máquina virtual completa que hace exactamente eso (y jugar con LXD :-)

Logré obtener una IP de mi servidor DHCP principal, configuré las reglas de iptables para enmascarar / reenviar el tráfico, pero cuando intento iniciar openvpn, se bloquea por la falta de (acceso a) / dev / net / tun dispositivo .

Encontré esta publicación en ServerFault /server/429461/no-tun-device-in-lxc-guest-for-openvpn , pero no parece funcionar con la versión actual de LXC y / o LXD gestionando la configuración ...

EDITAR: intenté usar este encantamiento, pero no tuvo éxito:

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

EDIT2: intenté lxc config device add mycontainer tun unix-char path=/dev/net/tun major=10 minor=200pero en la siguiente parada / inicio, obtuve

error: error al configurar el dispositivo tun: no implementado

Ahora no puedo incluso lxc config device remove mycontainer tuncuando arroja el mismo error No implementado. El contenedor parece estar perdido ...

alci
fuente

Respuestas:

14

Usted quiere:

lxc config device add CONTAINER tun unix-char path=/dev/net/tun
Stgraber
fuente
1
Esto resolvió el ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)error que he estado tratando de iniciar una conexión OpenVPN desde un contenedor. Mencionando esto aquí con la esperanza de agregar esta respuesta a las búsquedas de Google en ese error. Si esto también resolvió la pregunta de @alci, esta respuesta debería aceptarse.
Jonathan Y.
Ahora tengo en ERROR: Cannot open TUN/TAP dev /dev/net/tun: Operation not permitted (errno=1)lugar deERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
Jay _silly_evarlast_ Wren
3

Estaba luchando por hacer esto también dentro de un contenedor sin privilegios. Lo que terminé haciendo fue

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

luego dentro del contenedor

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

Esto significaba que no tenía que hacer ningún cambio en lxc conf

kent
fuente
0

Debe hacer el dispositivo tun en el host, antes de iniciar el contenedor: sudo mknod /path/to/your/container/dev/net/tun c 10 200

sмurf
fuente
Gracias. Creé el nodo. Cambié su propietario: grupo a 100000: 100000. Pero todavía no puedo verlo desde dentro del contenedor ...
alci