Нет устройства для настройки в гостевой lxc для openvpn
Я пытаюсь настроить сервер openvpn внутри гостя lxc. Тем не менее, он показывает, что в контейнере нет доступного устройства настройки.
Запуск openvpn внутри контейнера дает мне эту ошибку:
Tue Sep 18 13:04:18 2012 Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
Tue Sep 18 13:04:18 2012 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Tue Sep 18 13:04:18 2012 /sbin/ifconfig 10.6.0.1 pointopoint 10.6.0.2 mtu 1500
SIOCSIFADDR: No such device
: ERROR while getting interface flags: No such device
SIOCSIFDSTADDR: No such device
: ERROR while getting interface flags: No such device
SIOCSIFMTU: No such device
Tue Sep 18 13:04:18 2012 Linux ifconfig failed: external program exited with error status: 1
Tue Sep 18 13:04:18 2012 Exiting
В моей конфигурации контейнеров я вижу следующее:
#tun
lxc.cgroup.devices.allow = c 10:200 rwm
Я бы предположил, что это включило устройства Tun для контейнера, но modprobe tun дает мне еще одну ошибку:
FATAL: Could not load /lib/modules/3.2.0-30-generic/modules.dep: No such file or directory
Я предполагаю, что мне не хватает разрешения или чего-то в моем контейнере. Может кто-нибудь сказать мне, что это?
4 ответа
Я не знаком с lxc, но попробуйте следующие команды:
# mkdir /dev/net
# mknod /dev/net/tun c 10 200
# chmod 666 /dev/net/tun
Ответы выше на самом деле не работают сейчас с текущими версиями lxc
, Создание устройства персонажа вручную с mknod
не имеет никакого эффекта - устройство не видно внутри контейнера. Использование autodev
функциональность в lxc
необходимо.
- Для систем с
systemd
См. LXC Config на Arch Linux Wiki для OpenVPN в Linux-контейнерах. - В контейнере Alpine Linux (без
systemd
) Я использую:
lxc.cgroup.devices.deny = a
lxc.cgroup.devices.allow = c 10:200 rwm
lxc.hook.autodev = sh -c "modprobe tun; cd ${LXC_ROOTFS_MOUNT}/dev; mkdir net; mknod net/tun c 10 200; chmod 0666 net/tun"
Порядок важен - deny
должен быть первым.
В дополнение к ответу кванты. Также убедитесь, что у вас есть эта строка в конфигурации lxc:
mknod / dev / net / tun c 10 200
Это правильный синтаксис:
#tun
lxc.cgroup.devices.allow = c 10:200 rwm
По предложению нашего хостинг-провайдера EURO-SPACE, вот шаги по включению TUN/TAP в контейнерах Proxmox LXC:
Убедитесь, что ваш контейнер ПРИВИЛЕГИРОВАН, если нет, то сделайте резервную копию контейнера, затем восстановите его и отметьте «Привилегированный контейнер».
Завершите работу контейнера и отредактируйте его файл конфигурации, расположенный в /etc/pve/lxc/CTID.conf (CTID — это идентификатор вашего контейнера).
Добавьте следующие строки в конец файла:
lxc.cgroup.devices.allow: c 10:200 rwm
lxc.hook.autodev: sh -c "modprobe tun; cd ${LXC_ROOTFS_MOUNT}/dev; mkdir net; mknod net/tun c 10 200; chmod 0666 net/tun"
Сохраните файл конфигурации и запустите контейнер.
Убедитесь, что TUN включен, выполнив следующую команду:
кот /dev/net/tun
Это должно вывести следующее:
cat: /dev/net/tun: дескриптор файла в плохом состоянии
Теперь вы можете запустить VPN.