Как исправить ошибку 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:
- Ubuntu 22 на WSL
- 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-системах.
Содержание
- Причины ошибки
- Решения для Ubuntu/WSL
- Решения для Alpine Linux
- [Специальные случаи (контейнеры, Docker)]#spetsialnye-sluchayi-konteynery-docker)
- Проверка работоспособности
- Заключение
Причины ошибки
Основные причины, по которым возникает эта ошибка:
- Отсутствие модуля TUN в ядре - виртуальный сетевой драйвер не загружен
- Отсутствие файла устройства -
/dev/net/tunне существует в файловой системе - Ограничения WSL - WSL не поддерживает TUN/TAP устройства в стандартной конфигурации
- Ограничения контейнеров - контейнеры (LXC, Docker) работают без необходимых привилегий
- Проблемы с ядром - после обновления ядра модули могут находиться в другом месте
- Проблемы с правами доступа - недостаточные права для доступа к устройству
Решения для Ubuntu/WSL
Временное решение
Для быстрого устранения проблемы выполните команды:
# Загрузка модуля TUN
sudo modprobe tun
# Создание директории и файла устройства
sudo mkdir -p /dev/net
sudo mknod /dev/net/tun c 10 200
sudo chmod 600 /dev/net/tun
Постоянное решение
Добавьте команды в crontab для автоматического выполнения при загрузке системы:
sudo crontab -e
Добавьте строку:
@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 устройства не поддерживаются вообще. Варианты решения:
- Использовать WSL 2 с улучшенной сетевой поддержкой
- Использовать Windows клиент OpenVPN вместо Linux клиента
- Настроить Port Forwarding между Windows и WSL
Согласно исследованиям, WSL не поддерживает TUN/TAP устройства, и попытки создать их приводят к ошибке “function is not implemented”.
Решения для Alpine Linux
Базовая настройка
# Загрузка модуля 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
Настройка сервиса
# Добавление OpenVPN в автозагрузку
rc-update add openvpn default
# Запуск сервиса
rc-service openvpn start
Пример конфигурации для OpenVPN в Alpine
Создайте файл конфигурации с правильными настройками:
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 контейнера добавьте необходимые флаги:
docker run --cap-add=NET_ADMIN --device=/dev/net/tun -it openvpn-client
Или используйте privileged режим:
docker run --privileged -it openvpn-client
Для LXC контейнеров
Добавьте в конфигурацию контейнера (/etc/pve/lxc/ID.conf):
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 используйте:
# На хосте
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
Проверка работоспособности
После выполнения всех настроек проверьте, что устройство корректно работает:
# Проверка наличия устройства
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. Основные шаги для решения:
- Для Ubuntu/WSL: создайте устройство и настройте автозагрузку через crontab
- Для Alpine Linux: загрузите модуль, создайте устройство и добавьте в автозагрузку
- Для контейнеров: используйте необходимые привилегии и монтирование устройств
- Для WSL: рассмотрите переход на WSL 2 или используйте Windows клиент
Если вы используете VirtualBox, убедитесь, что в настройках виртуальной машины включена опция “Включить VT-x/AMD-V” для поддержки виртуализации, что может быть необходимо для работы TUN/TAP устройств.