Установка WireGuard-сервера на Synology NAS в Docker: пошаговое руководство
Подробная инструкция по развертыванию WireGuard-сервера на Synology NAS с использованием Docker. Настройка контейнера, генерация ключей, маршрутизация и подключение клиентов.
Содержание
WireGuard — это современный VPN-протокол, который сочетает высокую производительность с простотой настройки. Установка WireGuard-сервера на Synology NAS через Docker позволяет быстро развернуть собственный VPN без необходимости компилировать модули ядра или устанавливать сторонние пакеты. Docker-контейнер изолирует окружение и упрощает обновление, а Synology предоставляет удобный интерфейс для управления контейнерами.
Подготовка Synology NAS к запуску WireGuard в Docker
Перед началом установки убедитесь, что ваша модель Synology поддерживает технологию виртуализации. Docker (или Container Manager в DSM 7) доступен на большинстве моделей с 64-битным процессором x86_64, а также на некоторых ARM-устройствах. Проверьте список совместимости в документации Synology для вашей модели.
Обновите операционную систему DSM до актуальной версии. Для работы с Container Manager рекомендуется DSM 7.0 или новее, но инструкция актуальна и для более ранних версий с пакетом Docker. Установите пакет Container Manager (или Docker) из центра пакетов Synology.
Кроме того, назначьте статический IP-адрес на NAS в настройках сети или настройте DDNS, чтобы подключаться к серверу извне по доменному имени. Это необходимо для создания корректного endpoint в конфигурациях клиентов.
Установка и настройка контейнера WireGuard
Запустите Container Manager и перейдите в раздел «Реестр». В поиске найдите образ linuxserver/wireguard — это популярный и поддерживаемый образ, который автоматически генерирует ключи и конфигурации. Нажмите «Загрузить», чтобы скачать образ, а затем «Запустить», чтобы создать контейнер.
В мастере настройки контейнера укажите следующие параметры:
- Переменные окружения: задайте
PUIDиPGID(идентификаторы пользователя и группы, обычно 1024 для Synology),TZ(часовой пояс, например, Europe/Moscow),SERVERURL(ваш DDNS или IP-адрес),SERVERPORT(порт, по умолчанию 51820),PEERS(число клиентских конфигураций, например, 5),PEERDNS(IP-адрес DNS-сервера, например, 1.1.1.1),INTERNAL_SUBNET(внутренняя подсеть, например, 10.13.13.0/24). - Проброс портов: добавьте правило UDP-порта
51820на тот же порт контейнера. Порт можно изменить, но не забудьте потом открыть его на роутере. - Тома: подключите локальную папку (например,
/docker/wireguard) к/configвнутри контейнера. Также обязательно смонтируйте/lib/modulesс хоста, чтобы контейнер имел доступ к модулям ядра для работы WireGuard.
Запустите контейнер. При первом старте будут автоматически сгенерированы ключи, создан файл wg0.conf в папке конфигурации, а также файлы-конфигурации для каждого клиента (peer1.conf, peer2.conf и т.д.).
Создание конфигурации сервера и клиентов WireGuard
Откройте папку, которую вы смонтировали в /config, и изучите содержимое. Основной файл wg0.conf содержит настройки сервера: приватный ключ сервера, адрес в подсети, правила маршрутизации. Вам нужно отредактировать этот файл, чтобы задать корректный адрес сервера и настроить NAT для доступа клиентов в интернет.
Пример базовой конфигурации wg0.conf:
[Interface]
Address = 10.13.13.1/24
PrivateKey = /etc/wireguard/privatekey
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# peer1
PublicKey = <публичный ключ клиента>
AllowedIPs = 10.13.13.2/32
Обратите внимание, что в образе linuxserver/wireguard уже настроены скрипты для автоматического применения правил NAT, но вы можете дополнительно изменить их под свою сеть.
Конфигурационные файлы клиентов создаются автоматически и содержат все необходимые параметры: приватный ключ клиента, адрес в подсети, endpoint сервера (ваш DDNS или IP и порт). Вам нужно передать эти файлы пользователям. Для этого скачайте их из папки конфигурации или отправьте по электронной почте.
После внесения изменений в wg0.conf перезапустите контейнер, чтобы применить настройки.
Открытие портов и проверка подключения
Чтобы WireGuard-сервер был доступен из интернета, необходимо настроить проброс порта на вашем роутере. Найдите раздел «Проброс портов» (Port Forwarding) в интерфейсе роутера и создайте правило для UDP-порта 51820, указав локальный IP-адрес вашего Synology NAS. Если на NAS включен брандмауэр, добавьте аналогичное правило в настройки DSM (Панель управления → Правила брандмауэра).
После этого проверьте работу сервера. Откройте терминал внутри контейнера (в Container Manager есть вкладка «Терминал») и выполните команду:
wg show
Вы должны увидеть статус интерфейса, открытый порт и список подключенных клиентов (если они уже есть). Затем на клиентском устройстве (телефон, компьютер) установите официальное приложение WireGuard, импортируйте сгенерированный файл .conf и активируйте туннель. Проверьте доступ к ресурсам локальной сети и интернету.
Частые ошибки и способы их устранения
При работе с WireGuard на Synology могут возникать типичные проблемы. Рассмотрим их.
- Контейнер не запускается или падает с ошибкой. Чаще всего это связано с некорректными правами на папку конфигурации или с отсутствием доступа к
/lib/modules. Убедитесь, что вы смонтировали том и указали правильныеPUID/PGIDдля вашего пользователя DSM. - Нет доступа в интернет через VPN. Проверьте правила NAT и маршрутизации в
wg0.conf. Убедитесь, что включён IP forwarding в ядре. В образе linuxserver/wireguard обычно он активируется автоматически, но для некоторых ядер DSM может потребоваться ручное включение на хосте. - Клиент не может подключиться. Убедитесь, что порт правильно проброшен на роутере и открыт в брандмауэре Synology. Проверьте, что в клиентском конфиге указан корректный endpoint (домен или IP, не устарел ли DDNS). Также проверьте, что на сервере нет конфликта подсетей.
- После перезагрузки NAS контейнер не запускается. В настройках контейнера в Container Manager установите политику перезапуска «Всегда» или «Если не остановлен». Кроме того, проверьте, что папка конфигурации находится на томе, который монтируется автоматически при старте системы.
Следуя этой инструкции, вы сможете развернуть собственный WireGuard-сервер на Synology NAS и пользоваться безопасным VPN-подключением с любых устройств. Не забывайте регулярно обновлять образ контейнера, чтобы получать исправления безопасности и новые функции.
Мини-чеклист
- Проверьте, что ваша модель Synology поддерживает Container Manager (Docker) и DSM версии 7 (или актуальную для вашей модели).
- Смонтируйте папку для конфигурации и /lib/modules в контейнер с правильными правами (PUID/PGID).
- Пробросьте UDP-порт 51820 на роутере и разрешите его в брандмауэре Synology.
- Проверьте статус WireGuard командой wg show после запуска контейнера и тест подключения клиента.
Частые ошибки
- Забывают смонтировать /lib/modules, из-за чего WireGuard не может загрузить модуль ядра.
- Указывают неправильные переменные окружения (например, SERVERURL содержит http:// или порт с TCP, хотя WireGuard использует UDP).
- Не редактируют wg0.conf после первого запуска, оставляя автоматически сгенерированные ключи и адреса, что приводит к конфликтам.
- Не открывают порт в брандмауэре роутера или Synology, думая, что проброса достаточно.
Источники и документация
FAQ
Можно ли использовать WireGuard в Docker на Synology без статического IP?
Да, для доступа извне достаточно настроить DDNS в DSM и указать полученный домен в переменной SERVERURL. Роутер должен поддерживать проброс портов, а NAS — иметь локальный IP, который не меняется.
Как добавить нового клиента к уже работающему серверу WireGuard?
Измените параметр PEERS в настройках контейнера (увеличьте количество) и перезапустите контейнер. Образ linuxserver/wireguard автоматически сгенерирует новый файл конфигурации, который нужно передать пользователю.
Что делать, если после обновления DSM перестал работать WireGuard?
Обновление системы может заменить модули ядра. Перезапустите контейнер WireGuard, чтобы он пересобрал модули. Если ошибка сохраняется, проверьте журнал контейнера и при необходимости обновите образ linuxserver/wireguard до последней версии.
Хотите перейти сразу к рабочему доступу?
Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.
Получить доступ