Как исправить проблему с отсутствием устройства Tun в Docker при использовании Gluetun

Решение проблемы с TUN-устройством в Docker на Synology NAS

При использовании Docker для создания виртуальных сетевых соединений с помощью TUN-устройства, иногда возникают проблемы, которые могут затруднить работу. Одной из распространенных проблем является сообщение об ошибке: ERROR checking TUN device: TUN device is not available: open /dev/net/tun: no such device. Эта статья описывает шаги к решению данной проблемы на примере настройки Gluetun на Synology NAS с операционной системой DSM6.

Описание проблемы

Недавно пользователь столкнулся с проблемой, когда его настройка Docker на Synology NAS перестала работать после перезапуска оборудования. В файле docker-compose.yml была определена конфигурация сервиса Gluetun с использованием OpenVPN. Однако при запуске с помощью команды docker-compose up -d возникла ошибка, связанная с отсутствием TUN-устройства.

Попытки решения проблемы

Пользователь предпринял несколько шагов для устранения проблемы, включая создание TUN-устройства вручную с помощью следующих команд:

mkdir -p /dev/net 
mknod /dev/net/tun c 10 200 
chmod 666 /dev/net/tun

Однако это не решило проблему, несмотря на то что запуск нового контейнера с проверкой доступа к устройству TUN проходил успешно. Ошибки также не уходили после добавления флага privileged: true в конфигурацию docker-compose.yml.

Другими мерами были перезагрузка Docker и повторная загрузка образа Gluetun, но ничего не помогало.

Шаги для устранения проблемы

В конечном итоге пользователь нашел решение проблемы. Вот последовательность шагов, которые помогли восстановить работу TUN-устройства на NAS:

  1. Удаление ранее созданного TUN-устройства:

    rm -rf /dev/net
  2. Загрузка модуля TUN:

    insmod /lib/modules/tun.ko
  3. Проверка, что TUN-устройство успешно загружено:

    lsmod | grep tun
  4. Создание скрипта для автоматической перезагрузки модуля: Поскольку в DSM6 модуль TUN не загружается автоматически при перезагрузке, пользователь создал стартовый скрипт в директории /usr/local/etc/rc.d/. Для этого использовалось:

    vi /usr/local/etc/rc.d/tun.sh

    С содержимым:

    #!/bin/sh
    case "$1" in
       start)
           insmod /lib/modules/tun.ko
           ;;
       stop)
           rmmod tun
           ;;
    esac
    exit 0
  5. Установка прав на выполнение скрипта:
    chmod +x /usr/local/etc/rc.d/tun.sh 

Заключение

Следуя вышеперечисленным шагам, пользователь смог восстановить работоспособность TUN-устройства и вновь запустить контейнер Gluetun с использованием OpenVPN. Важно помнить, что корректная настройка сетевых устройств в Docker требует внимательного подхода и проведения периодических проверок для устранения возможных ошибок. Если вы столкнетесь с подобной проблемой, сохранение данной инструкции поможет вам быстро и эффективно решить проблему.

Источник

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *