Есть много вопросов, связанных с этой ошибкой, и предлагается ручное исправление, которое работает хорошо, но постоянного решения нет. Как я могу решить эту проблему навсегда? У меня эта проблема на сервере debian wheezy, использующем клиент OpenVPN для подключения к серверу OpenVPN.
Предлагаемое исправление приведено ниже. Похоже, / dev / net не создается автоматически и, конечно, исчезает при каждой перезагрузке.
mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun
Думаю, что возможное решение - настроить систему на загрузку tun
модуль ядра во время запуска. Для этого перечислите tun
имя модуля в /etc/modules
файл:
# echo tun >> /etc/modules
udev
компонент системы, который создает и обслуживает узлы устройств в /dev
папка в соответствии с загруженными модулями ядра и подключенными аппаратными устройствами. Я считаю, что загружая tun
модуль ядра во время загрузки, система создаст /dev/net/tun
узел устройства при каждом запуске.
Я надеюсь, что это помогает.
РЕДАКТИРОВАТЬ: Я немного устарел. После запуска образа Debian Wheezy, опубликованного в Веб-сайт Vagrant Cloud, Я понял, что udev
фактически обрабатывает разрешения, права собственности и символические ссылки в отношении уже существующих узлов устройства. Узлы устройств фактически создаются самим ядром и доступны в пользовательском пространстве через devtmpfs
псевдо-файловая система.
devtmpfs
файловая система монтируется во время initramfs. Файл /usr/share/initramfs-tools/init
, который выполняется один раз grub
извлекает initramfs в память, представляет код, который монтирует devtmpfs
файловую систему в /dev
, возвращаясь к стандарту tmpfs
файловая система в случае неудачи.
Кроме того, чтобы иметь devtmpfs
файловая система доступна, ядро Debian Wheezy поставляется с CONFIG_DEVTMPFS=y
включен.
debian wheezy не поддерживается с мая 2018 г. (https://www.debian.org/releases/wheezy/), вы не должны больше использовать его в 2020 году для производства.
Теперь, когда это решено, вы можете добавить команды, которые временно исправят вашу проблему, добавив эти команды в сценарий bash, который вы добавляете в свой корневой crontab с ником @reboot (man 5 crontab).
Итак, создайте сценарий bash где-нибудь в вашей файловой системе примерно так:
#!/bin/bash
mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun
/etc/init.d/openvpn restart
Сохраните его с разрешениями 755 и измените корневой crontab:
# crontab -e
с этим содержанием хотя бы
@reboot /path/to/where/you/saved/the/script
И после перезагрузки он должен был успешно запустить openvpn.