Установка WireGuard на Synology NAS в DSM 7 и DSM 6

Всем привет!!!

Давно хотели запустить Wireguard на своем Synology NAS, но не могли найти как это сделать? Тогда вам сюда. В этой статье я выложу готовые сборки пакетов SPK WireGuard для DSM 7 и расскажу, где скачать пакеты для DSM 6.

А в самом низу инструкция от другого автора: wg-easy и управлять wireguard клиентами через GUI


!!! ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ !!!

Вы используете все здесь на свой страх и риск. Я не несу ответственности, если это сломает ваш NAS. Реально это не должно привести к потере данных, но это может сделать ваш NAS недоступным, если что-то пойдет не так.


Нужно отметить, что запуск и настройка пакета WireGuard для Synology NAS осуществляется через командную строку по протоколу SSH. Графического интерфейса нет!!! Поэтому вы должны обладать навыками работы в консоли Linux.

Стоит начать с того, откуда я это все взял. На github выложены исходники Wireguard и собраны готовые пакеты в релизах для DSM 6. Для DSM 7.2 информация была взята отсюда, но компилил я все пакеты самостоятельно.

Что бы узнать архитектуру вашего процессора перейдите на сайт помощи Synology.

Скачать готовые пакеты для DSM 6 лучше с сайта github. А вот для DSM 7 автор не выложил готовые пакеты. Поэтому я взялся за это дело самостоятельно, благо автор расписал как скомпилировать данные пакеты самостоятельно. Как это сделать я опишу в конце статьи.

Скачать готовые SPK пакеты WireGuard для DSM 7 можно отсюда. Если вашей архитектуры нет там, то пишите в комментариях, я сделаю.

Скачать готовые SPK пакеты WireGuard для DSM 7.2 можно отсюда. Если вашей архитектуры нет там, то пишите в комментариях, я сделаю.

Установка WireGuard на Synology NAS

Установка выполняется вручную через Центр пакетов в DSM. Но только для DSM 7 нужно во время установки убрать галочку “Запустить после установки”. В противном случаи пакет установится поврежденным. Это связано с предотвращением запуска пакетов, не подписанных Synology, с привилегиями root.

Установка wireguard на Synology NAS в DSM 7 и DSM 6

Затем, что бы запустить пакет нужно подключиться к NAS по SSH и ввести команду:

sudo /var/packages/WireGuard/scripts/start

Настройка Wireguard на Synology NAS

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

$ sudo su – 
# sudo mkdir /etc/wireguard
# cd /etc/wireguard
# umask 077; wg genkey | tee privatekey | wg pubkey > publickey
# vi wg0.conf (конфигурацию ниже вы можите скопировать и вставить в редактор)

[Interface]
Address = 10.0.1.1/16
PrivateKey = (server private key)
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]
PublicKey = (client public key)
AllowedIPs = 10.0.1.2/32

# cat privatekey (copy the privatekey)
# vi wg0.conf (paste the private key in the PrivateKey line)

После настройки клиента введите открытый ключ клиента в конфигурацию на Synology NAS. Добавьте открытый ключ клиента в соответствующий раздел PEER файла конфигурации сервера и сохраните изменения.

$ sudo vi /etc/wireguard/wg0.conf

Команды для управления сервисом:

$ sudo wg-quick up wg0 (Запустить WireGuard сервис)
$ sudo wg show wg0 (Проверка работы WireGuard) 
$ sudo wg-autostart enable wg0 (Запускать WireGuard сервис при старте системы)
$ sudo wg-autostart disable wg0 (Отключить авто старт WireGuard при старте системы)

Сборка spk для DSM 7

Теперь как собрать самостоятельно. Для этого нам понадобится Linux, я использую Ubuntu 22.04 сервер. Установить ее можно на виртуальную машину, подключиться по SSH и ввести команды:

# Подготовка
sudo -i
cd /opt/
apt update
apt upgrade
apt install docker.io
apt install git

# Скачиваем и создаем необходимые файлы с GitHub
git clone https://github.com/runfalk/synology-wireguard.git
cd synology-wireguard/
docker build -t synobuild .

# Что бы скомпилировать пакет SPK выполним команду (одна строка)
docker run --rm --privileged --env PACKAGE_ARCH=<arch> --env DSM_VER=<dsm-ver> -v $(pwd)/artifacts:/result_spk synobuild

# Мой пример
docker run --rm --privileged --env PACKAGE_ARCH=geminilake --env DSM_VER=7.0 -v $(pwd)/artifacts:/result_spk synobuild

Начнется процесс сборки, который выглядит примерно так:

Процесс не быстрый, поэтому дождитесь завершения.

Если все пройдет гладко, то в папке artifacts будет лежать готовый spk пакет. Скачайте его с Ubuntu по SFTP (FTP поверх SSH). Это умеет делать без проблем FileZilla.

Сборка spk для DSM 7.2

Сборка spk пакетов для DSM 7.2 отличается от предыдущих версий. Поэтому собирать нужно по другому.

Я использовал тот же Linux Ubuntu 22.04. Создал пустую папку в opt с именем syno-72-wireguard, а в этой папке папку spk и запустил такой командой:

docker run --rm --privileged --env PACKAGE_ARCH=<arch> --env DSM_VER=7.2 -v $(pwd)/spk:/result_spk blackvoidclub/synobuild72

<arch> нужно заменить на нужную архитектуру, как ее узнать ест mccskrf в начале статьи

Например, для DS918+ была такая команда:

docker run --rm --privileged --env PACKAGE_ARCH=apollolake --env DSM_VER=7.2 -v $(pwd)/spk:/result_spk blackvoidclub/synobuild72

Собрать пакеты под ARM для устройств DS223 и DS423 у меня не получилось, вышла ошибка и пакеты не собрались. Возможно нужно собирать непосредственно на этих устройствах. Если у кого такие есть, то пишите, попробуем у вас удаленно.

Видео

Установка WireGuard на Synology NAS в DSM 7 и DSM 6


Ниже дополнительная инструкция от dom7800, который написал ее в комментариях, а я не удержался и перенес ее сюда. Написано все довольно подробно и главное я проверял, работает.

wg-easy и управлять wireguard клиентами через GUI

Дополню инструкцией, как установить wg-easy и управлять wireguard клиентами через GUI
На руках у вас должен быть .spk пакет (скачать можно из этой статьи, спасибо Александру) и белый WAN-адрес, ну или DynDNS на крайняк, ссылка на мануал автора https://bafista.ru/synology-nastrojka-ddns/

Идем на NAS:
Открываем доступ к NAS по SSH, если еще не открыт, а затем качаем Докер и ставим spk:
Панель управления > Терминал и SNMP > Включить службу SSH
Центр пакетов > Устанавливаем Docker
Центр пакетов > Установка вручную > WireGuard-geminilake-1.0.20220627.spk > Обязательно снимаем галку “Запустить после установки”
File Station  > и в Docker создаем подпапку wg-easy
Все на NAS закончили, он нам больше не нужен. Теперь идем в терминал на компе

Подключаемся по SSH: ssh nasadmin@192.168.70.4
Запускаем WireGuard, что установили вручную из .spk:

sudo /var/packages/WireGuard/scripts/start

Затем вставляем этот код целиком (т.к. wg-easy не установлен, то скачает последнюю версию автоматически. В репах Docker’a он есть): Но только предварительно замените на свои myhomeip.synology.me и Pa$$w0rd, остальное не трогаем.

sudo docker run -d \
--name=wg-easy \
-e WG_HOST=myhomeip.synology.me \
-e PASSWORD=Pa$$w0rd \
-v /volume1/docker/wg-easy:/etc/wireguard \
-p 51820:51820/udp \
-p 51821:51821/tcp \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--sysctl="net.ipv4.ip_forward=1" \
--restart unless-stopped \
weejewel/wg-easy

Закрываем терминал, на нем тоже закончили, идем в браузер.
Открываем http://192.168.70.4:51821 вводим Pa$$w0rd и убеждаемся, что работает. Создаем для себя первого клиента, качаем конфиг на комп.
Рекомендации по настройке конфига клиента, после того как создадите юзера и скачаете к себе на комп:
замените DNS вместо 1.1.1.1 на 8.8.8.8
PersistentKeepalive = 20, потому как, скорее всего, ваш peer будет за NAT-ом (ваш телефон или нотик в кафешке),
чтобы туннель не упал. Часто на рукопожатие, пир уже не отвечает, а так, ваш NAS каждые 20 сек. будет посылать пустой пакет, чтобы держать входящее подключение на вашем пире.

PS: Если не хотите весь трафик гнать через wireguard, то также измените AllowedIPs = 0.0.0.0/0, ::/0 на
AllowedIPs = 10.8.0.1/32, 192.168.70.0/24

PPS: Не забудь на роутере пробросить udp 51820 на 192.168.70.4. Высовывать наружу tcp 51821 не советую, нет смысла.
2Александр: Я проводил эксперимент. Канал 100 Мбит/сек. поднят L2TP/IPsec. Делаю нагрузку на канал. Через туннель на максимуме идет 40 Мбит/сек. Выключаю L2TP/IPsec, теперь поднимаю WireGuard. Повторяю нагрузку и на WireGuard туннель на все 100 Мбит/сек. Вот и вся разница 🙂 Там еще OpenVPN был и древний PPTP, но не о них сейчас речь. Обрати внимание на WG, он в лине на уровне ядра уже давно реализован Торвальдсом. Крутой протокол!


Подписаться
Уведомить о
guest
81 Комментарий
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии