Proxmox es un sistema de virtualización de código abierto que se ha convertido en uno de los principales a la hora de virtualizar servidores, y ahora ordenadores domésticos (como en mi caso con passthrough). El problema, es que saber cómo habilitar tun o tap en proxmox para los contenedores, y luego también solucionar los problemas que casi seguro vas a encontrar.
Pero bueno, como yo ya he pasado por eso por la última instalación que he hecho, simplemente te lo dejo aquí para que lo tuyo sea como un suspiro. De todas formas, si en algún paso tienes problemas simplemente déjame un comentario y te echo un cable para solucionarlo.
Cómo activar TUN/TAP en contenedores Proxmox (openVZ)
En la mayoría de tutoriales que te encuentras por ahí hay algunas instrucciones que no funcionan, sobretodo si usas la última versión. En este caso, lo he probado en Proxmox 5 y Proxmox 6 sin problemas en instalaciones limpias.
Si tienes la solución para versiones anteriores, o lo has probado y también funciona dímelo y lo pongo en la lista de compatibles. También ten en cuenta que Proxmox está diseñado para funcionar sobre Debian, de hecho es la distribución que ellos ofrecen con el instalador.
Para habilitar TUN y TAP en un contenedor, el host tiene que dar permisos, ya que en producción no deberías ejecutar contenedores sin privilegios por seguridad. Como seguramente el tuyo no los tiene y por eso no te funciona (unprivileged).
Deberías añadir esta línea como todos comentan en la configuración:
lxc.cgroup.devices.allow: c 10:200 rwm
El problema, es que no suele funcionar, y eso es porque si estás usando lxc tienes que hacer otra cosa.
Abre proxmox, o conéctate por ssh y para el contenedor a modificar:
pct stop <id_contenedor>
Ahora edita el archivo de configuración:
nano /etc/pve/lxc/<id_contenedor>.conf o vim /etc/pve/lxc/<id_contenedor>.conf
Vete a la última línea, y añade una nueva con:
lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file
Guarda y pon en marcha de nuevo el contenedor. Desde aquí te debería dejar crear la nueva conexión de red para la vpn dentro del contenedor.
Cómo solucionar el error Resource temporarily unavailable (errno=11)
Ahora bien, es posible que cuando estés dentro del contenedor, y vayas a ejecutar openvpn, te suelte este error:
daemon() failed or unsupported: Resource temporarily unavailable (errno=11)
Si es así tienes que hacer un pequeño cambio en el servicio de openvpn, edita este archivo:
vim /lib/systemd/system/[email protected]
Y en la línea del limit nproc descoméntala:
#LimitNPROC=10 cambialo por LimitNPROC=10
Guarda, cierra y ejecuta el siguiente comando para recargar los servicios:
systemctl daemon-reload
Ahora cuando lo vuelvas a ejecutar debería ponerse directamente en marcha sin soltar ningún error.
Si estás teniendo otros problemas deja un comentario y te echaré un cable para solucionarlos.
¿Usas proxmox para virtualizar? ¿Qué tipo de servicios tienes virtualizados? Comenta y comparte.