- 📘 Введение
- ⚙️ Варианты настройки
- 🧰 Что необходимо
- 🏠 Способ 1 — Без VPS, с туннелем
- ☁️ Способ 2 — С VPS
- 🐋 Способ 3 — С VPS и docker
- 🛠️ Настройки
- 🖥️ Настройки в Network Application
- 💡 Прочая полезная информация
⬆️ к оглавлению
Описание процесса настройки обновления для устройств Ubiquiti/Unifi, для тех, у кого есть проблемы доступа к серверам обновлений Ubiquiti, размещённых на Amazon.
Суть всех настроек сводится к достижению одной цели — по нажатию кнопки Update все обновления устанавливаются, а в случае нажатия на Install, инсталлируются.
⬆️ к оглавлению
Настроить получение обновлений можно несколькими способами:
- Для обновления собственной сети
- Для обновления нескольких сетей
- Аналогичное пункту 2, но с использованием docker
⬆️ к оглавлению
- Способ 1: нужен рабочий туннель, с публичным ip адресом, до VPN-сервера, который размещён в стране вне подсанкционного геоблока, и до которого настроен, поднят и работает туннель.
⚠️ Примечание: Данный способ подойдёт тем, у кого нет своего VPS, но есть возможность организации туннеля.
- Способ 2: нужна рабочая VPS, находящаяся вне подсанкционного геоблока, и до которой настроен, поднят и работает туннель, и так же к ней есть доступ по ssh.
⚠️ Примечание: Данный способ подойдёт тем, у кого есть VPS, и к ней есть доступ по SSH.
- Способ 3: то же самое, что и 2 способ, только используется docker (docker compose).
⚠️ Примечание: Данный способ подойдёт тем, у кого есть VPS, и к ней есть доступ по SSH.
⬆️ к оглавлению
Caution
Будьте осторожны!
Если Вы не знаете владельца VPN-сервера, существует риск подмены пакетов обновлений — они могут быть модифицированы и содержать вредоносный код.
Если Вы знаете владельца сервера и доверяете ему, этот способ можно использовать.
Безопасные сценарии обновления описаны в способах 2 и 3.
- В собственной сети необходимо развернуть виртуальную машину (Linux).
- Преднастраиваем DNS на виртуальной машине, как написано тут.
- Устанавливаем nginx на виртуальной машине, как написано тут.
- Подготавливаем конфигурацию stream для nginx на виртуальной машине, как написано тут.
- Выбираем конфигурационный файла для stream, как написано тут.
- Настраиваем туннель через Policy Engine, как написано тут.
- Добавляем DNS записи в Unifi, для доменов, которые будут заворачиваться в туннель, как написано тут.
- Проверяем работу, как написано тут.
Настройка завершена.
⬆️ к оглавлению
⚠️ Примечание:
Будем считать, что туннель поднят и настроены следующие адреса:
- Ваш IP в туннеле:
10.1.1.2- IP сервера в туннеле:
10.1.1.1
- Подключаемся по ssh к VPS. Если nginx не установлен — ставим, и настраиваем поочередно, как написано тут, тут и тут.
- Выбираем конфигурационный файла для stream, как написано тут.
- Добавляем DNS записи в Unifi, для доменов, которые будут заворачиваться в туннель, как написано тут.
⚠️ Примечание:
В поле IP Address указываем IP сервера в туннеле
- Добавляем статический маршрут до обратной стороны туннеля, как написано тут.
- Проверяем работу, как написано тут.
Настройка завершена.
⬆️ к оглавлению
⚠️ Примечание:
Будем считать, что туннель поднят и настроены следующие адреса:
- Ваш IP в туннеле:
10.1.1.2- IP сервера в туннеле:
10.1.1.1
- Подключаемся по ssh к VPS. Устанавливаем docker (если ещё не установлен) по инструкции.
- Устанвливаем git.
sudo apt update && sudo apt install git- Клонируем репозиторий, и переходим в склонированный каталог.
git clone https://github.com/naem53/ubnt-update.git && cd ubnt-update- Запускаем стрим командой:
sudo docker compose up -d- Добавляем DNS записи в Unifi, для доменов, которые будут заворачиваться в туннель, как написано тут.
⚠️ Примечание:
В поле IP Address указываем IP сервера в туннеле
- Добавляем статический маршрут до обратной стороны туннеля, как написано тут.
- Проверяем работу, как написано тут.
Настройка завершена.
⬆️ к оглавлению
Обновляем список доступных пакетов:
sudo apt updateМеняем DNS сервер:
sudo echo "nameserver 9.9.9.9" > /etc/resolv.conf⬆️ к оглавлению
Устанавливаем nginx (либо haproxy, traefik, пример приведён на nginx и Debian):
sudo apt install nginx -yПроверяем наличие модуля ngx_stream_module:
sudo nginx -V 2>&1 | grep --color streamЕсли в выводе есть что-то вроде:
--with-stream=dynamic или
--with-stream значит поддержка stream есть.
Если модуль динамический (--with-stream=dynamic), его нужно явно загрузить в конфиге:
sudo nano /etc/nginx/nginx.confДобавляем (в самом начале, до блока events):
load_module modules/ngx_stream_module.so;Сохраняем файл и перезапускаем Nginx:
sudo systemctl restart nginx⬆️ к оглавлению
Создаём каталог для конфигов stream:
sudo mkdir /etc/nginx/stream.d || trueРедактируем nginx.conf и добавляем в самом конце:
sudo nano /etc/nginx/nginx.confДобавляем строку:
include /etc/nginx/stream.d/*.conf;⬆️ к оглавлению
Выберите один из конфигурационных файлов в зависимости от необходимости:
conf/nginx/stream.d/stream-ubnt.conf— стрим только fw-download.ubnt.com и fw-download.ui.comconf/nginx/stream.d/stream-ubnt-only-dl.conf— стрим как в пункте 1 + beta, early access, release candidateconf/nginx/stream.d/stream-all.conf— стрим всего, включая fw-update.ubnt.com и fw-update.ui.com (данный вариант не рекомендуется)
Пример приведён на основе первого способа — conf/nginx/stream.d/stream-ubnt.conf.
Копируем выбранный файл конфигурации в каталог stream:
sudo cp conf/nginx/stream.d/stream-ubnt.conf /etc/nginx/stream.d/Перезапускаем Nginx:
sudo systemctl restart nginx⬆️ к оглавлению
Теперь нужно завернуть трафик с созданной виртуальной машины в туннель.
В Network Application переходим:
Settings → Policy Table → Create Net Policy → Route
В боковой панели выбираем:
- Type policy:
Route - Name: любое осмысленное имя
- Type:
Policy-Based - Interface/VPN Tunnel: имя туннеля до VPS
- Source:
Device/Network→ выбираем виртуальную машину (по IP или другому параметру) - Destination:
Any
Нажимаем Add — готово.
⬆️ к оглавлению
⚠️ Примечание:
Если Вы используете вариант 2 - С VPS или 3 - С VPS и docker то в поле IP Address нужно указывать ip сервера, обратной стороны туннеля.
В Network Application нажимаем:
Settings → Policy Table → Create Net Policy → DNS
В боковой панели выбираем:
- Type:
Host (A) - Domain Name:
fw-download.ubnt.com - IP Address: локальный IP виртуальной машины
Жмём Add — готово.
Повторяем то же самое и для домена fw-download.ui.com.
⚠️ Примечание:
Если используются другие конфигурационные файлы nginx (stream-ubnt-all.confилиstream-ubnt-only-dl.conf), аналогичные действия выполняются для всех доменов, перечисленных в конфиге.
⬆️ к оглавлению
Иногда может потребоваться добавить static route для обратной стороны туннеля.
В Network Application переходим:
Settings → Policy Table → Create Net Policy → Route
В боковой панели выбираем:
- Type policy:
Route - Name: любое осмысленное
- Type:
Static - Interface/VPN Tunnel: имя туннеля до VPS
- Device:
Gateway - Distance:
1 - Interface: выбираем имя туннеля
Жмём Add — готово.
⬆️ к оглавлению
Для проверки идём:
Settings → Control Plane → Updates
Пробуем обновиться, либо установить необходимые пакеты.
⬆️ к оглавлению
- fw-download.ubnt.com
- fw-download.ui.com
- fw-download.ubnt.com
- fw-download.ui.com
- apt.artifacts.ui.com
- apt-release-candidate.artifacts.ui.com
- apt-beta.artifacts.ui.com
- fw-download.ubnt.com
- fw-download.ui.com
- fw-update.ubnt.com
- fw-update.ui.com
- apt.artifacts.ui.com
- apt-release-candidate.artifacts.ui.com
- apt-beta.artifacts.ui.com
- fw-download.ubnt.com
- fw-download.ui.com
- fw-update.ubnt.com
- fw-update.ui.com
- apt.artifacts.ui.com
- apt-release-candidate.artifacts.ui.com
- apt-beta.artifacts.ui.com
⚠️ Заметка к файлу конфигурации стрима stream-ubnt-all-with-logging.conf:
Стрим с включённым логированием.
⚠️ Примечание:
Заворачивать доменыfw-update.ubnt.comиfw-update.ui.comв стрим можно, но не имеет смысла — эти домены не заблокированы, и Network Application получает сведения об обновлениях напрямую.




