Como executar o openvpn em um contêiner LXC dentro do host debian?

3

Estou executando o debian stretch no meu host e tento configurar o openvpn dentro de um convidado xenial LXC do Ubuntu.

Como o openvpn precisa de um dispositivo tun, eu segui guias como link para permitir a criação do dispositivo tun dentro do contêiner.

Infelizmente, a configuração de lxc.cgroup.devices.allow = c 10:200 rwm no arquivo de configuração do contêiner me dá este erro:

  lxc-start ERROR    lxc_cgfsng - cgroups/cgfsng.c:cgfsng_setup_limits:1949 - No such file or directory - Error setting devices.allow to c 10:200 rwm for ubuntu
  lxc-start ERROR    lxc_start - start.c:lxc_spawn:1236 - Failed to setup the devices cgroup for container "ubuntu".
  lxc-start ERROR    lxc_start - start.c:__lxc_start:1346 - Failed to spawn container "ubuntu".

Editar

Estou tentando conseguir isso em um contêiner LXC sem privilégios, aqui está a configuração completa desse contêiner:

# Distribution configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.include = /usr/share/lxc/config/ubuntu.userns.conf
lxc.arch = x86_64

# Container specific configuration
lxc.id_map = u 0 100000 65536
lxc.id_map = g 0 100000 65536
lxc.rootfs = /home/myuser/.local/share/lxc/ubuntu/rootfs
lxc.rootfs.backend = dir
lxc.utsname = ubuntu

# Network configuration
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.hwaddr = 00:11:22:aa:bb:cc
lxc.network.ipv4 = 192.168.1.101/24
lxc.network.ipv4.gateway = 192.168.1.1

# trying to get /dev/net/tun inside container
lxc.cgroup.devices.allow = c 10:200 rwm

Quando não defino a opção devices.allow para poder iniciar o contêiner, vejo que os processos dentro do contêiner estão no cgroup /sys/fs/cgroup/devices/user.slice (seu PID, visto de fora do contêiner, está, na verdade, no arquivo cgroup.procs deste subdiretório) e daqui:

$ cat devices.list 
a *:* rwm

mas de dentro do contêiner

# mknod /dev/net/tun c 10 200
mknod: /dev/net/tun: Operation not permitted
    
por omega 24.04.2017 / 15:17

1 resposta

1

Adicionando

lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file

no arquivo de configuração do container bind-mount o dispositivo tun char dentro do container que resolve o problema.

    
por 03.05.2017 / 17:06