Другое

Как исправить ошибку TUN/TAP в OpenVPN

Узнайте причины и решения ошибки Cannot open TUN/TAP dev в OpenVPN для Ubuntu, WSL и Alpine Linux. Пошаговые инструкции по созданию устройства TUN/TAP и настройке VPN.

Что означает ошибка “ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)” при подключении к OpenVPN?

У меня есть две разные системы Linux:

  1. Ubuntu 22 на WSL
  2. Alpine Linux на VirtualBox

В обеих системах я установил клиент OpenVPN из репозитория:

  • Для Alpine: apk add openvpn
  • Для Ubuntu: apt-get install openvpn

При выполнении команды:

openvpn 1.ovpn

Я получаю следующую ошибку:

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

Полный вывод ошибки:

root@WIN-..[CUTED]:/mnt/c/tmp# sudo openvpn 1.ovpn
2025-11-05 18:34:13 Unrecognized option or missing or extra parameter(s) in 1.ovpn:30: block-outside-dns (2.6.9)
2025-11-05 18:34:13 Note: --cipher is not set. OpenVPN versions before 2.5 defaulted to BF-CBC as fallback when cipher negotiation failed in this case. If you need this fallback please add '--data-ciphers-fallback BF-CBC' to your configuration and/or add BF-CBC to --data-ciphers.
2025-11-05 18:34:13 WARNING: file '. [CUTED]>.key' is group or others accessible
2025-11-05 18:34:13 OpenVPN 2.6.9 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] [DCO]
2025-11-05 18:34:13 library versions: OpenSSL 3.0.13 30 Jan 2024, LZO 2.10
2025-11-05 18:34:13 DCO version: N/A
2025-11-05 18:34:13 TCP/UDP: Preserving recently used remote address: [AF_INET]1.[CUTED]D>:495
2025-11-05 18:34:13 Attempting to establish TCP connection with [AF_INET]1.[CUTED]>:495
2025-11-05 18:34:13 TCP connection established with [AF_INET]1.[CUTED]D>:495
2025-11-05 18:34:13 TCPv4_CLIENT link local: (not bound)
2025-11-05 18:34:13 TCPv4_CLIENT link remote: [AF_INET]1 [CUTED]9:495
2025-11-05 18:34:14 [l.[CUTED]>] Peer Connection Initiated with [AF_INET]1.[CUTED]D>:495
2025-11-05 18:34:14 WARNING: You have specified redirect-gateway and redirect-private at the same time (or the same option multiple times). This is not well supported and may lead to unexpected results
2025-11-05 18:34:14 sitnl_send: rtnl: generic error (-101): Network is unreachable
2025-11-05 18:34:14 ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
2025-11-05 18:34:14 Exiting due to fatal error

Что означает эта ошибка и как её исправить?

Ошибка “ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)” возникает, когда OpenVPN не может найти или получить доступ к виртуальному сетевому интерфейсу TUN/TAP, который необходим для создания VPN-туннеля. Это одна из самых распространенных проблем при настройке OpenVPN в Linux-системах.

Содержание

Причины ошибки

Основные причины, по которым возникает эта ошибка:

  1. Отсутствие модуля TUN в ядре - виртуальный сетевой драйвер не загружен
  2. Отсутствие файла устройства - /dev/net/tun не существует в файловой системе
  3. Ограничения WSL - WSL не поддерживает TUN/TAP устройства в стандартной конфигурации
  4. Ограничения контейнеров - контейнеры (LXC, Docker) работают без необходимых привилегий
  5. Проблемы с ядром - после обновления ядра модули могут находиться в другом месте
  6. Проблемы с правами доступа - недостаточные права для доступа к устройству

Решения для Ubuntu/WSL

Временное решение

Для быстрого устранения проблемы выполните команды:

bash
# Загрузка модуля TUN
sudo modprobe tun

# Создание директории и файла устройства
sudo mkdir -p /dev/net
sudo mknod /dev/net/tun c 10 200
sudo chmod 600 /dev/net/tun

Постоянное решение

Добавьте команды в crontab для автоматического выполнения при загрузке системы:

bash
sudo crontab -e

Добавьте строку:

bash
@reboot mkdir -p /dev/net && mknod /dev/net/tun c 10 200 && chmod 600 /dev/net/tun && /etc/init.d/openvpn restart

Особенности для WSL

В WSL 1 TUN/TAP устройства не поддерживаются вообще. Варианты решения:

  1. Использовать WSL 2 с улучшенной сетевой поддержкой
  2. Использовать Windows клиент OpenVPN вместо Linux клиента
  3. Настроить Port Forwarding между Windows и WSL

Согласно исследованиям, WSL не поддерживает TUN/TAP устройства, и попытки создать их приводят к ошибке “function is not implemented”.

Решения для Alpine Linux

Базовая настройка

bash
# Загрузка модуля TUN
modprobe tun

# Создание устройства
mkdir /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun

# Добавление в автозагрузку
echo "tun" >> /etc/modules-load.d/tun.conf

Настройка сервиса

bash
# Добавление OpenVPN в автозагрузку
rc-update add openvpn default

# Запуск сервиса
rc-service openvpn start

Пример конфигурации для OpenVPN в Alpine

Создайте файл конфигурации с правильными настройками:

ini
client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
cipher AES-256-CBC
verb 3

Специальные случаи (контейнеры, Docker)

Для Docker контейнеров

При запуске Docker контейнера добавьте необходимые флаги:

bash
docker run --cap-add=NET_ADMIN --device=/dev/net/tun -it openvpn-client

Или используйте privileged режим:

bash
docker run --privileged -it openvpn-client

Для LXC контейнеров

Добавьте в конфигурацию контейнера (/etc/pve/lxc/ID.conf):

ini
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"

Для Proxmox LXC

В Proxmox используйте:

bash
# На хосте
mkdir /var/lib/lxc/ID/rootfs/dev/net
mknod /var/lib/lxc/ID/rootfs/dev/net/tun c 10 200
chmod 0666 /var/lib/lxc/ID/rootfs/dev/net/tun

# В конфигурации контейнера
lxc.cgroup.devices.allow: c 10:200 rwm
unprivileged: 0

Проверка работоспособности

После выполнения всех настроек проверьте, что устройство корректно работает:

bash
# Проверка наличия устройства
ls -la /dev/net/tun
# Должно показать: crw-rw---- 1 root root 10, 200 Nov 5 18:34 /dev/net/tun

# Проверка модуля в ядре
lsmod | grep tun
# Должен показать: tun 16587 0 - Live 0xbf0e1000

# Тестовое чтение устройства
cat /dev/net/tun
# Должно показать: File descriptor in bad state

Если после выполнения всех шагов проблема остается, попробуйте перезагрузить систему, так как некоторые изменения требуют перезапуска ядра.

Заключение

Ошибка “Cannot open TUN/TAP dev /dev/net/tun” обычно легко решается путем создания необходимого устройства и загрузки модуля TUN. Основные шаги для решения:

  1. Для Ubuntu/WSL: создайте устройство и настройте автозагрузку через crontab
  2. Для Alpine Linux: загрузите модуль, создайте устройство и добавьте в автозагрузку
  3. Для контейнеров: используйте необходимые привилегии и монтирование устройств
  4. Для WSL: рассмотрите переход на WSL 2 или используйте Windows клиент

Если вы используете VirtualBox, убедитесь, что в настройках виртуальной машины включена опция “Включить VT-x/AMD-V” для поддержки виртуализации, что может быть необходимо для работы TUN/TAP устройств.

Источники

  1. Server Fault - OpenVPN TUN/TAP error solutions
  2. Unix Stack Exchange - TUN module loaded but device missing
  3. Alpine Linux OpenVPN setup guide
  4. WSL TUN device limitations
  5. Proxmox LXC OpenVPN configuration
  6. Docker OpenVPN container setup
Авторы
Проверено модерацией
Модерация