Как загрузить модуль Tun в Linux?

Я не могу загрузить tun модуль в моей коробке ArchLinux. Я пытаюсь подключиться к OpenVPN, но в журнале написано:

nm-openvpn[6662]: Note: Cannot open TUN/TAP dev /dev/net/tun: No such device (errno=19)

lsmod | grep tun

Ничего не возвращает:

Если я бегу:

sudo modprobe tun

Он возвращает ошибку, но сообщения об ошибке нет, а lsmod по-прежнему не имеет tun, Модуль, кажется, существует, так как есть tun.ko.gz в /lib/modules/,

Я действительно не знаю, что еще попробовать.

6 ответов

Решение

Этот ответ, вероятно, немного запоздал, но я столкнулся с проблемой, точно так же, как описано, я сам.

Запуск OpenVPN приведет к:

Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)

И работает tunctl будет производить:

Failed to open '/dev/net/tun' : No such file or directory

И эта команда не имела выхода:

lsmod | grep tun

При попытке добавить tun модуль через:

modprobe tun

modprobe выйдет с кодом ошибки (1), и ничего не изменится.

Я нашел альтернативный способ активации модуля TUN через insmod, Сначала найдите модуль с помощью этой команды:

find /lib/modules/ -iname 'tun.ko.gz'

Затем используйте insmod с возвращенным путем (я получил только одно совпадение), например:

insmod /lib/modules/3.6.9-1-ARCH/kernel/drivers/net/tun.ko.gz

Для меня запуск этой команды сработал, и tunctl и OpenVPN работал нормально потом.

Я столкнулся с подобной проблемой при попытке запустить openvpn на OVH Cloud VPS, openvpn жалуется, что не может найти интерфейс TUN.

modprobe всегда возвращает модуль не найден:

$ sudo modprobe tun
FATAL: Module tun not found.

Наконец, я обнаружил, что tun - это не модуль, а встроенное ядро, поэтому я решил создать отсутствующие dir и nod:

$ sudo mkdir /dev/net
$ sudo mknod /dev/net/tun c 10 200

И тогда openvpn может найти и использовать устройство tun.

Следует отметить, что после этого modprobe все равно выдаст ошибку, поскольку tun не является модулем.

$ sudo modprobe tun
FATAL: Module tun not found.

В Arch Linux установка networkmanager-vpnc пакет решит проблему

Обязательно выполните проверку ядра перед запуском modprobe. См. примечание здесь

Самый простой способ — сравнить результаты

      uname -r

и

      pacman -Q linux

Если они разные, перезагрузитесь. Это должно исправить ошибку modprobe.

У меня была проблема, когда мой /lib/modules/.../modules.alias не содержит строки

alias char-major-10-200 tunode_tunnel

Так что даже если вы сделали mknod /dev/net/tun и имеют tun.ko где-то в /lib/modules/..., он не будет загружаться, если modules.alias имеет правильное заклинание.

Самым простым решением было бы перезагрузить систему, а затем выполнитьmodprobe tunот имени пользователя root, потому что наиболее вероятной причиной неудачного вызова modprobe является несоответствие версии ядра версии модуля (у меня так и было).

Видите ли, после обновления системы (при условии, что ядро ​​также обновлено) вы продолжаете использовать старое ядро, но модули устанавливаются из новой версии ядра. Вот почему вы не можете сделать modprobe сразу после обновления.

Другие вопросы по тегам