UniFi Dream Machine: настройка VPN-клиента
Если у вас есть VPS с поднятым WireGuard или OpenVPN, а дома или в офисе стоит UniFi Dream Machine, отдельный роутер под VPN-клиент не нужен — эта функция уже встроена в UniFi Network. Ниже разберём, как подключить UDM к своему серверу по WireGuard и OpenVPN, как завернуть через туннель не весь трафик, а только часть сети, и в какой момент возможностей UDM перестаёт хватать и приходится смотреть в сторону EdgeRouter.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что умеет встроенный VPN-клиент в UniFi Network
В приложении UniFi Network (на UDM, UDM Pro, UDM SE, UDR, UCG-Ultra, UXG) есть три разных VPN-раздела, и их легко перепутать:
- VPN Server — UDM сама поднимает сервер (WireGuard, OpenVPN, L2TP) для удалённого доступа клиентов к домашней сети;
- Site-to-Site VPN / Teleport — связка нескольких площадок или мобильных клиентов Ubiquiti между собой;
- VPN Client — то, что нужно нам: UDM сама выступает клиентом и подключается к чужому (в вашем случае — вашему собственному) VPN-серверу, заворачивая через него исходящий трафик.
Раздел находится в Settings → VPN → VPN Client (в свежих версиях Network 9.x иногда называется «Teleport & VPN» → VPN Client). Поддерживаются два протокола клиента — WireGuard и OpenVPN. IPsec и L2TP как клиентские протоколы для стороннего сервера здесь не предусмотрены, они доступны только в разделах Server и Site-to-Site.
Смысл функции простой: у вас есть сервер с WireGuard или сервер с OpenVPN в нужной стране, и вы хотите, чтобы часть или весь трафик локальной сети шёл через него — обойти блокировки, снизить утечку геолокации, дать доступ до ресурсов, завязанных на IP сервера.
WireGuard-клиент: пошаговая настройка
Предполагается, что WireGuard-сервер на VPS уже поднят. Со стороны сервера нужно завести отдельного пира под UDM:
wg genkey | tee udm_private.key | wg pubkey > udm_public.key
Добавьте в /etc/wireguard/wg0.conf на сервере блок:
[Peer]
PublicKey = <содержимое udm_public.key>
AllowedIPs = 10.10.0.5/32
и перезапустите интерфейс (wg-quick down wg0 && wg-quick up wg0 или wg syncconf).
Дальше в UniFi Network: Settings → VPN → VPN Client → Create New → WireGuard. Есть два пути:
- Импорт .conf — самый надёжный вариант, если провайдер или ваш скрипт генерации клиента отдаёт готовый файл вида:
[Interface]
PrivateKey = <приватный ключ клиента>
Address = 10.10.0.5/32
DNS = 10.10.0.1
[Peer]
PublicKey = <публичный ключ сервера>
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
- Ручной ввод — название интерфейса, приватный ключ (можно вставить свой или дать UI сгенерировать пару и скопировать публичный ключ обратно на сервер), публичный ключ и Endpoint сервера, Allowed IPs, Persistent Keepalive (25 секунд обязательно, если UDM или сервер за NAT).
После сохранения статус пройдёт Connecting → Connected, а в деталях интерфейса начнёт расти счётчик последнего handshake — это главный индикатор, что туннель реально работает, а не просто «включен».
Сразу решите, включаете ли галочку «использовать как маршрут по умолчанию» (полный туннель для всей сети) или оставляете её выключенной и настраиваете точечную маршрутизацию — про это ниже.
Арендуйте сервер под свои задачи!
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверOpenVPN-клиент: пошаговая настройка
Для OpenVPN логика та же: на своём OpenVPN-сервере выпускаете отдельный клиентский сертификат через easy-rsa, собираете .ovpn-файл со всеми блоками, встроенными прямо в файл — <ca>, <cert>, <key>, при необходимости <tls-auth> или <tls-crypt>.
Важный нюанс: UI-импорт UDM ожидает самодостаточный конфиг. Он не читает внешние файлы сертификатов по пути на диске и не выполняет пользовательские скрипты. Это значит, что директивы вроде ca ca.crt (со ссылкой на отдельный файл), script-security 2, кастомные up/down хуки или сторонние plugin-модули работать не будут — их нужно убрать или заменить на инлайн-блоки перед импортом.
В Settings → VPN → VPN Client → Create New → OpenVPN просто загружаете готовый .ovpn. Если сервер требует логин/пароль дополнительно к сертификатам (auth-user-pass), UI попросит их отдельно при первом подключении.
OpenVPN-клиент на UDM работает программно (без аппаратного оффлоада), поэтому на слабых моделях (например, UDR) при полном туннеле и высокой скорости WAN стоит рассчитывать на заметно меньшую пропускную способность, чем даёт WireGuard — точных цифр не назову, они сильно зависят от модели и версии прошивки, но разница обычно чувствуется на глаз при файлах в несколько сотен мегабит.
Policy-Based Routing: не гнать через VPN всё подряд
Полный туннель — не всегда то, что нужно: смысла заворачивать локальный трафик до NAS или видеозвонки через VPS в другой стране обычно нет, это добавляет задержку и грузит канал сервера.
В современных версиях UniFi Network появилась встроенная policy-based маршрутизация для VPN-клиента:
- Network 9.3 — Settings → Policy Engine → Policy-Based Routes → Create Route;
- Network 9.4 и новее — Settings → Policy Table → Create New Policy → Route.
Логика одна: вы выбираете источник (сеть/VLAN, группа клиентов или конкретный IP) и указываете в качестве шлюза назначения интерфейс VPN-клиента вместо обычного WAN. Правила применяются по порядку — более специфичное правило должно стоять выше общего, иначе оно просто не сработает.
Типичный сценарий: отдельный VLAN для «серых» задач или конкретная группа устройств идёт через VPS в нужной стране, а основная сеть с рабочими станциями и видеосвязью остаётся на обычном канале провайдера.
Стоит знать: до появления Policy Table (более ранние версии Network) гибкой маршрутизации через UI не было вовсе, и сообщество закрывало это скриптом split-vpn, который вручную через SSH размечает пакеты fwmark'ами и поднимает отдельную таблицу маршрутизации. Если у вас старая прошивка или встроенных правил не хватает (например, нужна маршрутизация по MAC-адресу или IP-сетам), это по-прежнему рабочий обходной путь — но со своими рисками, о которых в следующем разделе.
Ограничения UDM по сравнению с EdgeRouter
Вот в чём разница по сути: UDM управляется декларативно из UI (Network Application хранит конфигурацию и раскатывает её на устройство), а классический EdgeRouter на EdgeOS — это Vyatta-подобная система, где именно CLI-конфиг (config.boot) является источником истины. Отсюда и разница в гибкости.
| Возможность | UniFi Dream Machine | EdgeRouter (EdgeOS) |
|---|---|---|
| Протоколы VPN-клиента | WireGuard, OpenVPN (импорт конфига) | WireGuard, OpenVPN, IPsec, PPTP |
| Policy-based routing | Через UI, начиная с Network 9.3+, ограниченный набор критериев | Firewall-модификаторы + load-balance группы, полная гибкость по fwmark |
| Несколько VPN-клиентов с независимой маршрутизацией | Технически можно поднять несколько интерфейсов, но пересечения правил в UI неудобно контролировать | Штатно: отдельные таблицы маршрутизации и приоритеты для каждого |
| Кастомные директивы OpenVPN (внешние скрипты, plugin, несколько remote) | Не поддерживаются при импорте через UI | Полный доступ к конфигу — любые директивы |
| CLI / персистентность ручных правок | SSH есть, но конфиг живёт в контроллере — ручные правки затираются при следующем apply или обновлении прошивки | CLI — источник истины, правки сохраняются штатно |
| Статические маршруты, привязанные к VPN-интерфейсу | Ограниченно, через Policy Table | Свободно: set protocols static route ... next-hop-interface |
| Failover между несколькими VPN-провайдерами | Штатного механизма нет | Load-balance группы с весами и проверкой доступности |
| IPv6 через VPN-клиент | Поддержка неполная и зависит от версии прошивки | Поддерживается штатно |
Практический вывод: для «одна сеть — один VPS — один туннель, с редким разделением по VLAN» родного VPN-клиента UDM вполне достаточно, и UI избавляет от возни с конфигами. Но если нужна маршрутизация по нескольким провайдерам с failover, точечные fwmark-правила на уровне отдельных приложений или устройств, кастомные OpenVPN-директивы — либо остаётесь на связке UDM + split-vpn через SSH (с пониманием, что это неофициальный путь, который может ломаться после обновлений прошивки), либо выносите роль VPN-клиента на отдельное устройство — EdgeRouter или обычный Linux-бокс — перед или за UDM. Разницу между этими двумя архитектурами разбирали отдельно: VPN на роутере или на устройстве — где лучше.
Если сравнивать конкретно с настройкой VPN-клиента на других SOHO-роутерах — например, на Mikrotik, — там гибкости policy-routing тоже больше, чем в UI UDM, ценой того, что всё делается руками через терминал: WireGuard-клиент на Mikrotik.
Диагностика: что делать, если клиент не поднимается
Для диагностики стоит включить SSH-доступ: Settings → System → Advanced → SSH (в старых версиях — Console → Advanced → Device SSH Authentication). После этого можно зайти на устройство и посмотреть состояние туннеля напрямую, в обход UI:
ssh root@<ip-udm>
wg show
ip route show table all | grep -i wg
Конкретные названия сервисов и путь к логам меняются от версии UniFi OS к версии, поэтому команды выше — ориентир, а не гарантированно рабочий рецепт для вашей прошивки; проверяйте actual состояние на месте.
Частые причины, почему клиент не поднимается или работает не так, как ожидалось:
- Статус завис на Connecting. Проверьте, что UDP-порт WireGuard (или TCP/UDP-порт OpenVPN) открыт на файрволе VPS и в security group у хостинг-провайдера, и что Endpoint указан верно вместе с портом.
- Хендшейк проходит, но интернета нет. Не забыт Persistent Keepalive (25 секунд) — без него сессия за NAT может «засыпать»; также проверьте, что на сервере включён
iptables/nftablesMASQUERADE для интерфейса VPN. - Policy-based route не применяется. Правила читаются по порядку — более специфичное (конкретный VLAN или клиент) должно стоять выше общего catch-all-правила, иначе общее перехватит трафик раньше.
- Просадка скорости или обрывы на PPPoE WAN. Уменьшите MTU на WireGuard-интерфейсе примерно до 1412–1420 — оверхед PPPoE плюс заголовки WireGuard иногда режут пакеты и роняют производительность.
- После переключения на резервный WAN VPN-клиент не переподключается сам. Известный нюанс — при failover на бэкап-канал стоит проверять состояние VPN-клиента отдельно, автоматическое восстановление туннеля работает не всегда предсказуемо.
Арендуйте сервер под свои задачи!
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли одновременно держать VPN Server и VPN Client на одной UDM?
Да, это независимые функции — например, WireGuard Server принимает удалённых сотрудников, а WireGuard Client параллельно заворачивает часть трафика через VPS в другой стране.
UDM аппаратно ускоряет VPN-клиент?
Для WireGuard на части моделей (например, UDM SE/Pro) есть аппаратный оффлоад, который заметно поднимает пропускную способность по сравнению с чисто программной обработкой. OpenVPN такого оффлоада обычно не получает и упирается в CPU — на слабых моделях это может быть узким местом.
Что будет с настройками VPN-клиента и Policy-based Routes при переносе на новую UDM?
Они хранятся в конфигурации Network Application и переносятся вместе с остальными настройками при восстановлении сайта из бэкапа контроллера — отдельно их переносить не нужно.
Стоит ли подключать через встроенный клиент коммерческий VPN-провайдер вместо своего VPS?
Технически можно — раздел поддерживает импорт стандартных .ovpn/.conf от большинства провайдеров. Но тогда вы полагаетесь на их политику логирования и доступность серверов, которую не контролируете; со своим VPS вы точно знаете, что происходит на сервере и кто ещё до него достучится.
Нужна ли статика IP на VPS для WireGuard-сервера?
Для клиентской части UDM — нет, важно, чтобы Endpoint был доступен по DNS или статическому IP хотя бы с той стороны, куда UDM подключается; сам UDM может сидеть за динамическим WAN-адресом без проблем.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →