Как включить tun/tap внутри LXC контейнере
Чтобы включить интерфейс tun/tap в LXC контейнере, например для OpenVPN, нужно отредактировать файл конфигурации LXC.
Месторасположение файла по умолчанию:
/etc/lxc/default.conf
Вам нужно добавить
lxc.cgroup.devices.allow = c 10:200 rwm
Также работает в proxmox 4.0.
Чтобы использовать tun/tap интерфейс оно должно быть создано внутри контейнера при каждой загрузке, поэтому добавьте следующее в ваш файл /etc/rc.local внутри вашего контейнера:
if ! [ -d /dev/net ];then mkdir /dev/net fi if ! [ -c /dev/net/tun ]; then mknod /dev/net/tun c 10 200 chmod 666 /dev/net/tun fi
persistent devices
lxc guest have their dev recreated on each restart in a tmpfs. This means all devices are reset and are not read from rootfs dev directory. To make it persistent you can use an autodev script by adding the following to your lxc guest config
# tun (openvpn) lxc.cgroup.devices.allow = c 10:200 rwm # audodev script to add devices lxc.hook.autodev=/var/lib/lxc/CONTAINER/autodev
The autodev script would be as following:
#!/bin/sh
# dev is populated on earch container start.
# to make devices persistence we need to recreate them on each start.
cd ${LXC_ROOTFS_MOUNT}/dev
mkdir net
mknod net/tun c 10 200
chmod 0666 net/tun
И еще с итальянского сайтаConfigurar el contenedor
Llegados a este punto el contedor tiene permisos para acceder al dispositivo especial de caracteres
/dev/net/tun, sin embargo este dispositivo no existe en el contenedor LXC por ello es necesario crear un servicio systemd para automatizar la creación del archivo /dev/net/tunсat >> /etc/systemd/system/create-net-tun.service << EOF[Unit]Description=Create /dev/net/tun deviceDefaultDependencies=no[Service]Type=oneshotExecStart=/usr/bin/mkdir /dev/netExecStart=/usr/bin/mknod /dev/net/tun c 10 200ExecStart=/usr/bin/chmod 666 /dev/net/tun[Install]WantedBy=openvpn@.serviceEOF
systemctl enable create-net-tunНа этом всё.