AsusWRT-Merlin: настройка WireGuard-клиента
Родная прошивка Asus умеет WireGuard только через сторонние скрипты и костыли с asusctl или entware — если вообще умеет, в зависимости от модели и региональной сборки. AsusWRT-Merlin решает это честно: WireGuard встроен в ядро и в Web UI, настройка клиента занимает десять минут, а весь трафик дома или офиса уходит через один тоннель без танцев с каждым устройством отдельно. Ниже — рабочая последовательность: от выбора модели роутера до диагностики, если тоннель поднялся, а интернета за ним нет.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Почему WireGuard на Merlin, а не на родной прошивке
AsusWRT-Merlin — независимая сборка прошивки на базе оригинального кода Asus, которую поддерживает разработчик RMerlin и сообщество. От заводской она отличается тем, что туда добавлены модули, которые Asus либо не довёл до релиза, либо сознательно не включает в массовые версии: полноценный WireGuard-клиент и сервер, расширенные Policy Rules, поддержка entware для доустановки пакетов, более гибкий DNS over TLS.
Ключевое отличие от OpenVPN, который в AsusWRT есть «из коробки» много лет: WireGuard работает в ядре, а не в userspace-процессе, поэтому нагрузка на CPU роутера ниже, а скорость на слабом железе (двухъядерные MediaTek/Broadcom SoC в бюджетных моделях) заметно выше. Тоннель поднимается за секунды, а не за пару обменов keepalive, как иногда бывает у OpenVPN на слабых прошивках.
Если сравниваете протоколы для конкретно вашего сценария, у нас есть отдельный разбор: WireGuard или OpenVPN — что выбрать для сервера. Для роутера как клиента вывод почти всегда один: если сервер поддерживает WireGuard — берите его.
Что нужно подготовить до начала
Три вещи должны быть готовы заранее, иначе настройка растянется:
- Роутер с поддержкой Merlin. Прошивка официально поддерживает не все модели Asus — только устройства на Broadcom и часть на MediaTek с достаточным флеш-накопителем и оперативной памятью. Актуальный список моделей смотрите на сайте проекта (asuswrt-merlin.net) — он меняется с новыми релизами, поэтому доверять старым спискам из статей 2022–2023 годов не стоит. Возьмите модель, а не подмодель: RT-AX86U и RT-AX86U Pro на разных ревизиях чипов могут требовать разные ветки прошивки.
- Работающий WireGuard-сервер. Роутер будет клиентом — сервер должен быть поднят и отдавать рабочий конфиг заранее. Если сервера ещё нет, разверните его на VPS: инструкция — как установить и настроить WireGuard на VPS. Для домашнего или офисного роутера логично брать сервер в той локации, где нужен выход в интернет: Россия, США или Великобритания — три готовых варианта есть у нас в каталоге.
- Файл конфигурации клиента (
.conf) с сервера — с приватным ключом клиента, публичным ключом и endpoint сервера, allowed IPs и DNS. Экспортируйте его на сервере под конкретный peer для роутера, а не переиспользуйте конфиг с телефона — на многих серверных скриптах генерации ключей peer привязан к одному активному подключению, и повторное использование конфига обрывает второе устройство.
Арендуйте сервер под свои задачи!
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка и обновление прошивки Merlin
Если роутер уже на заводской прошивке Asus, переход на Merlin делается через обычную панель обновления — Merlin собирает прошивку так, чтобы .trx-файл ставился штатным механизмом Administration → Firmware Upgrade, без разлочки бутлоадера и без риска окирпичить устройство при обычном флеше.
Порядок:
- Скачайте
.trxдля вашей точной модели с официального сайта проекта — не с зеркал и не с форумов, там бывают устаревшие или подменённые сборки. - Зайдите в веб-интерфейс роутера,
Administration → Firmware Upgrade, выберите файл, дождитесь перезагрузки. - После первой прошивки Merlin сделайте factory reset (сброс к заводским настройкам) через веб-интерфейс, а не просто перезагрузку — это снимает большинство «призрачных» багов после смены прошивки: зависшие процессы, неправильные права на разделах JFFS.
- Настройте роутер заново вручную. Восстановление из бэкапа конфига старой прошивки на новую часто тянет за собой несовместимые параметры — быстрее и надёжнее настроить с нуля.
- В
Administration → Systemвключите JFFS custom scripts and configs — раздел, где Merlin хранит пользовательские данные, включая ключи WireGuard между перезагрузками.
Если роутер уже на Merlin — просто обновите прошивку тем же путём через Firmware Upgrade, WireGuard-модуль обновится вместе с прошивкой, отдельно ничего доустанавливать не нужно.
Настройка WireGuard-клиента: импорт конфига
В Merlin WireGuard живёт в разделе VPN → VPN Client. Это отдельная вкладка от OpenVPN-клиентов, с собственной нумерацией профилей (обычно доступно 2–5 профилей клиента в зависимости от версии прошивки).
Шаги:
VPN → VPN Client → Add profile→ выберите тип WireGuard.- Самый быстрый путь — Import: загрузите
.conf-файл, полученный с сервера. Merlin сам разберёт его на поля. - Если конфиг вставляете вручную, поля такие:
[Interface]
PrivateKey = <приватный ключ роутера>
Address = 10.66.0.2/32
DNS = 10.66.0.1
[Peer]
PublicKey = <публичный ключ сервера>
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
AllowedIPs = 0.0.0.0/0 означает «весь трафик через тоннель» — это нужно, если цель именно «домашняя сеть выходит в интернет через VPN». Если нужен доступ только к конкретной подсети сервера (например, к другому офису), пропишите её узкий диапазон вместо 0.0.0.0/0 — это классическая схема site-to-site между двумя точками, а не «роутер в интернет».
PersistentKeepalive = 25 важен почти всегда: без него, если роутер сидит за NAT провайдера (а домашние подключения почти всегда за NAT), сервер через какое-то время перестаёт видеть роутер, и тоннель «засыпает» до первого исходящего пакета с клиента.
- Сохраните профиль, включите тумблер Enable на нём же.
- Проверьте статус в том же разделе — Merlin показывает handshake time последнего успешного обмена ключами. Если время не обновляется — тоннель не установлен, см. диагностику ниже.
Policy Rules: что именно пускать через тоннель
Наивная настройка «включить WireGuard-клиент» без Policy Rules просто заворачивает весь трафик роутера в тоннель — включая, например, локальный DNS и доступ к самому веб-интерфейсу извне, если он был настроен. В большинстве случаев это не то, что нужно.
В том же профиле WireGuard-клиента есть вкладка Policy Rules — таблица маршрутизации по источнику. Три рабочих сценария:
Весь дом через VPN — оставляете Policy Rules пустыми, включаете тумблер «Redirect Internet traffic» на уровне профиля (в разных версиях прошивки формулировка может звучать как «Route all traffic»). Это самый простой вариант для доступа к геозависимым сервисам или обхода блокировок для всей сети разом — разбор общего подхода есть в статье VPN на роутере для всего дома.
Только отдельные устройства — в Policy Rules добавляете строки вида «источник — IP или MAC устройства» → «направление — этот WireGuard-профиль». Остальной трафик роутер маршрутизирует как обычно, напрямую через провайдера. Полезно, когда через VPN нужно пускать, скажем, рабочий ноутбук и приставку, а смарт-устройства (камеры, умные розетки) — нет, чтобы не грузить тоннель их постоянным фоновым трафиком.
Только определённые сайты/подсети — в Policy Rules указываете не источник, а диапазон назначения. Годится, если через VPN нужен доступ к конкретным ресурсам (корпоративная подсеть, конкретный сервис), а весь остальной трафик должен идти напрямую.
| Сценарий | Redirect traffic | Policy Rules | Когда использовать |
|---|---|---|---|
| Весь дом | Включено, правил нет | — | Обход блокировок для всей сети |
| Выборочные устройства | Выключено | Источник → профиль | Экономия полосы тоннеля, разная политика для IoT |
| Выборочные направления | Выключено | Назначение → профиль | Доступ к конкретной подсети/сервису |
Учтите ограничение: Policy-based routing в Merlin работает по IP/MAC источника или подсети назначения, но не по домену. Если нужна маршрутизация «этот сайт — через VPN, остальное — напрямую» по доменным именам, штатными средствами Merlin это не решить — нужен отдельный DNS-based роутинг через dnsmasq-скрипты, что выходит за рамки коробочной настройки.
Проверка, диагностика, типичные грабли
После включения профиля проверьте три вещи по порядку.
1. Handshake на роутере. VPN → VPN Client, статус профиля должен показывать недавнее время последнего handshake (обновляется примерно раз в 2 минуты при активном PersistentKeepalive). Если поле пустое или время «зависло» в прошлом — пакеты до сервера не доходят. Проверьте:
- Endpoint и порт в конфиге совпадают с тем, что реально слушает сервер (
ss -lunp | grep wireguardилиwg showна сервере); - на сервере в firewall открыт UDP-порт WireGuard (по умолчанию 51820);
- у сервера нет привязки WireGuard-интерфейса к конкретному внутреннему IP, если он мультихомный.
2. Интернет через тоннель. Handshake есть, но сайты не открываются — почти всегда это DNS или AllowedIPs. Частый случай на Merlin: AllowedIPs = 0.0.0.0/0 прописан, но поле DNS в профиле клиента пустое или указывает на недоступный извне резолвер. Пропишите DNS явно на IP WireGuard-сервера (обычно тот же, что в примере выше — адрес сервера внутри тоннеля) либо на публичный резолвер, доступный по тоннелю.
Похожая проблема разобрана детально здесь: WireGuard подключается, но нет интернета — причины и решение — таблица типичных причин актуальна и для не-роутерных клиентов, логика диагностики та же.
3. Реальная маршрутизация трафика. Со стороны клиентского устройства в сети роутера проверьте внешний IP:
curl -4 https://ifconfig.me
Если вернулся адрес VPN-сервера, а не адрес вашего провайдера — тоннель работает как задумано. Если Policy Rules настроены на выборочный трафик, проверяйте с того устройства, для которого правило прописано, а не с произвольного — легко ошибиться и решить, что VPN «не работает», проверяя не то устройство.
Отдельная грабля именно на Merlin: после обновления прошивки JFFS-раздел иногда очищается, если галочка «Format JFFS partition at next boot» была случайно выставлена в процессе обновления, а вместе с ним стираются и ключи WireGuard-профилей. Перед апдейтом прошивки держите под рукой экспорт .conf с сервера — восстановить приватный ключ клиента с самого роутера после сброса раздела уже нельзя, проще перегенерировать пару и обновить peer на сервере.
Арендуйте сервер под свои задачи!
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли держать WireGuard-клиент и OpenVPN-клиент одновременно на одном Merlin-роутере?
Технически да, оба модуля независимы, но одновременная маршрутизация всего трафика через два тоннеля сразу не имеет смысла — используйте Policy Rules, чтобы развести их по разным устройствам или подсетям, иначе один профиль перебьёт правила другого.
Роутер поддерживает WireGuard на заводской прошивке — зачем переходить на Merlin?
У части моделей и региональных прошивок Asus WireGuard действительно появился нативно, но набор функций беднее: нет полноценных Policy Rules, ограниченная диагностика, часто нет клиентского режима — только серверный. Merlin даёт полный набор и на роутерах, где заводская прошивка WireGuard вообще не поддерживает.
Просядет ли скорость интернета из-за WireGuard на роутере?
На современных двух-четырёхъядерных моделях с аппаратным NAT-ускорением просадка обычно не критична для типичных домашних тарифов, но точную цифру для вашей модели и тарифа заранее не назвать — она зависит от процессора роутера, включённого шифрования сервера и загрузки канала. Проверяйте на своём железе через тот же curl/спидтест до и после включения тоннеля.
Что делать, если после Policy Rules весь трафик всё равно уходит через VPN?
Проверьте порядок правил и убедитесь, что тумблер «Redirect Internet traffic» (или аналог в вашей версии прошивки) на самом профиле выключен — при включённом тумблере он имеет приоритет над Policy Rules и заворачивает всё независимо от таблицы.
Нужен ли статический IP или DDNS на стороне сервера?
Если endpoint сервера указан по IP и адрес сервера не меняется (типично для арендованного VPS с выделенным IP) — не нужен. Если сервер за динамическим IP, придётся настраивать DDNS и указывать доменное имя в поле Endpoint конфига клиента.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →