Esta pregunta es similar a No tun device in lxc guest for openvpn . El LXC ha evolucionado y los contenedores LXC sin privilegios se introdujeron recientemente que ofrecen otra capa de seguridad contra la ruptura de la cárcel.
Necesito crear un servidor OpenVPN dentro de uno de los contenedores sin privilegios. No sé cómo dejar que el contenedor cree un dispositivo de red tun privado.
Anexé lxc.cgroup.devices.allow = c 10:200 rwma la ~/.local/share/lxc/mylxc/config.
Después de comenzar el contenedor, mknod /dev/net/tun c 10 200regresa mknod: '/dev/net/tun': Operation not permitteddentro del contenedor.
Utilizo un Ubuntu 14.04 de 64 bits de vainilla como host y un contenedor creado con
lxc-create -t download -n mylxc -- -d ubuntu -r trusty -a amd64
¿Alguien logró hacer que el /dev/tundispositivo se ejecute bajo LXC sin privilegios?

lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=fileal archivo de configuración del contenedor, como se describe aquí: superuser.com/a/1205662/130915 Luego, ejecuté openvpn como root con sudo dentro del contenedor.Respuestas:
Debe agregar explícitamente la capacidad CAP_MKNOD a su contenedor .
También puede intentar automatizar esto (si lo usa
systemddentro del contenedor) usando:que puede apuntar a un script en ejecución
mknod.Usar
dockeresto es muy fácil de lograr. Por defecto, los contenedores no tienen privilegios .En este ejemplo, estoy extrayendo un
trustycontenedor del registro:Y lo estoy iniciando en modo interactivo informando sobre la capacidad que necesito dentro:
Opuesto a:
fuente
CAP_MKNODdespués del trabajo.lxc.cap.keep = CAP_MKNODconfiguración a hace un errorSimultaneously requested dropping and keeping caps. He comprobado todas las configuraciones añadidas de forma recursiva (ubuntu.userns.conf,ubuntu.common.confycommon.conf) y se encontró sólo una línea conlxc.cap.drop:lxc.cap.drop = mac_admin mac_override sys_time sys_module. Pero eso es irrelevante, ¿no?