Что понадобится перед настройкой
OpenWrt интересен тем, что превращает почти любой роутер в полноценный маршрутизатор с прозрачными настройками. WireGuard здесь поддерживается штатно: модуль ядра лежит в репозитории, а веб-интерфейс LuCI получает отдельный протокол, в котором туннель настраивается мышкой, без единой команды в консоли. На этой же связке работают многие готовые устройства — например, роутеры GL.iNet построены на OpenWrt, и под их фирменной оболочкой доступен обычный LuCI.
Понадобятся три вещи. Первая — актуальная сборка OpenWrt (подойдёт любая современная стабильная ветка). Вторая — немного свободного места во флеш-памяти: пакеты WireGuard весят меньше мегабайта, но на старых роутерах с 8 МБ флеша свободного пространства может не остаться, и тогда нужен образ, собранный под свои нужды. Третья — файл конфигурации .conf с ключами и адресом сервера.
Конфиг для роутера выпускайте отдельный, не тот, что уже работает на телефоне: одна пара ключей рассчитана на одно устройство, иначе сервер будет видеть два источника с одним ключом и обрывать соединение обоим. В Muhomor VPN на доступе выпускается до пяти конфигов, роутеру отводится собственный профиль. Оформить пробный доступ на 3 дня можно на главной странице — нужен только e-mail. Что означает каждая строка файла, разобрано в материале разбор конфига WireGuard.
Откройте файл в любом текстовом редакторе и держите его перед глазами: значения из него мы будем переносить в поля LuCI.
Готовый конфиг для OpenWrt — 320 ₽ за 30 дней
Свой сервер, белый IP и генерация ключей не нужны. После оплаты на e-mail придёт ссылка на файл .conf. Импортируйте его по шагам из этой статьи — и роутер пустит через туннель все домашние устройства или только выбранные. Оплата разовая, картой или через СБП, без автопродления. На том же доступе — ещё 4 устройства.
Купить конфиг для OpenWrt — 320 ₽60 дней — 610 ₽, 90 дней — 899 ₽: срок можно поменять в форме оплаты.
Шаг 2. Создаём интерфейс WireGuard VPN в LuCI
Теперь собственно туннель.
- Откройте Network → Interfaces и нажмите Add new interface…
- Задайте имя, например
wg0(только латиница, без пробелов и дефисов), в списке Protocol выберите WireGuard VPN (в русском переводе LuCI — «WireGuard ВПН») и подтвердите создание. - На вкладке General Settings заполните поля из секции [Interface] вашего конфига: в Private Key вставьте значение PrivateKey, в IP Addresses — значение Address вместе с маской, например
10.8.0.2/32. Поле Listen Port для клиента можно оставить пустым: исходящее соединение роутер инициирует сам. - На вкладке Advanced Settings проверьте MTU. Штатное значение для WireGuard — 1420.
В свежих сборках LuCI на вкладке Peers есть кнопка импорта конфигурации: туда можно вставить текст файла целиком, и поля заполнятся сами. Если такой кнопки в вашей версии нет, ничего страшного — значений всего пять, и вводятся они за минуту.
Пока не сохраняйте настройки: нам ещё нужны peer и зона firewall, а без них интерфейс поднимется, но трафика не увидит.
Небольшая, но важная деталь про поле IP Addresses: маска /32 в конфигах WireGuard встречается чаще всего, потому что сервер выдаёт клиенту ровно один адрес, а маршруты описываются через Allowed IPs, а не через подсеть. Переносите значение ровно так, как оно записано в файле, и не пытайтесь «исправить» маску на /24 — это приведёт к лишним маршрутам и странному поведению при диагностике.
Шаг 3. Добавляем peer и Route Allowed IPs
Перейдите на вкладку Peers и нажмите Add peer. Здесь описывается удалённая сторона — значения берутся из секции [Peer] конфига.
- Description — произвольное имя, например Muhomor. Нужно только для удобства.
- Public Key — PublicKey сервера. Это ключ удалённой стороны, не ваш.
- Preshared Key — заполняется, только если строка PresharedKey есть в конфиге. Если её нет, поле оставьте пустым.
- Allowed IPs — значение AllowedIPs.
0.0.0.0/0означает «весь трафик в туннель»; перечень конкретных подсетей — профиль с раздельной маршрутизацией. - Route Allowed IPs (в русском интерфейсе — «Маршрутизировать разрешённые IP-адреса») — ключевая галочка. Она заставляет OpenWrt создать маршруты для перечисленных сетей. Без неё интерфейс поднимется и рукопожатие пройдёт, но трафик продолжит уходить через провайдера.
- Endpoint Host и Endpoint Port — две половинки строки Endpoint, разделённые двоеточием: слева хост или IP, справа UDP-порт.
- Persistent Keep Alive — поставьте 25, если роутер стоит за NAT провайдера. Без периодических пакетов трансляция на стороне оператора «протухает», и туннель оживает только при вашей активности.
Про сам подход, при котором часть трафика идёт напрямую, полезно прочитать материал что такое split tunneling: он объясняет, почему 0.0.0.0/0 нужен не всегда.
Приятная деталь: при включённой галочке Route Allowed IPs OpenWrt сам добавляет отдельный маршрут до адреса сервера через провайдерский шлюз. Благодаря этому пакеты самого туннеля не заворачиваются внутрь себя — ошибка, на которой спотыкаются при ручной настройке маршрутов.
Шаг 4. Зона firewall и форвардинг
OpenWrt не пропустит трафик между локальной сетью и новым интерфейсом, пока тот не попадёт в какую-нибудь зону межсетевого экрана. Вариантов два.
Простой: добавить wg0 в зону wan
Откройте настройки интерфейса, вкладку Firewall Settings, и выберите зону wan. В ней по умолчанию уже включены masquerading и MSS clamping и разрешён форвардинг из lan, поэтому больше ничего настраивать не нужно. Этот способ рекомендует и сама документация проекта — он экономит время и не создаёт лишних правил.
Аккуратный: отдельная зона
Если хочется отделить туннель от провайдерского канала и управлять правилами независимо, создайте новую зону на странице Network → Firewall → Zones: назовите её, скажем, vpn, поставьте Input и Forward в reject, Output в accept, обязательно включите Masquerading («Маскарадинг», в OpenWrt 25.12 — «Маскарадинг IPv4») и MSS clamping («Ограничение MSS»), а в поле Allow forward from source zones укажите lan. Без маскарадинга сервер получит пакеты с адресами вашей локальной сети и не будет знать, куда отправлять ответы — туннель поднят, а интернета на устройствах нет. Затем на вкладке Firewall Settings интерфейса выберите эту зону.
Отдельная зона удобна, когда через роутер ходят разные группы устройств и правила для них отличаются. Для домашней сети, где туннелем пользуются все, достаточно первого варианта. Сохраните настройки и нажмите Save & Apply.
Шаг 5. Проверка и DNS
Основной индикатор в LuCI — страница Status → WireGuard: там видно время последнего рукопожатия, объём принятых и отправленных данных и адрес, с которого приходят пакеты. Свежее рукопожатие означает, что ключи совпали и шифрованный канал работает. То же самое в консоли показывает команда wg show.
Дальше проверьте три вещи:
- Маршруты. На странице Status → Routes должен появиться маршрут по умолчанию через
wg0. Если его нет, вернитесь к галочке Route Allowed IPs. - Внешний адрес. С любого устройства локальной сети откройте сервис определения IP — адрес должен отличаться от провайдерского.
- DNS. По умолчанию роутер продолжит спрашивать имена у DNS-серверов провайдера. Чтобы запросы шли через туннель, в настройках интерфейса wg0 укажите сервер из строки DNS вашего конфига, а на WAN-интерфейсе снимите галочку использования DNS, полученных от провайдера. Как убедиться в результате, описано в статье проверка утечек DNS и IP.
Устройствам локальной сети ничего настраивать не нужно: телевизор, приставка и умная колонка получают маршрут от роутера автоматически.
Ещё один практичный шаг после проверки — убедиться, что туннель поднимается сам после перезагрузки. Просто перезагрузите роутер и через пару минут снова откройте Status → WireGuard. Если рукопожатие появилось без вашего участия, настройка закончена: дальше роутер живёт своей жизнью, а новые устройства в домашней сети получают шифрованный маршрут сразу при подключении к Wi-Fi.
MTU и производительность
Если лёгкие страницы открываются, а тяжёлые сайты и загрузки зависают на середине, дело почти всегда в MTU: пакет вместе с заголовками WireGuard не помещается в канал, а сигнал о фрагментации до отправителя не доходит. Штатные 1420 подходят большинству проводных подключений; для PPPoE и мобильных модемов значение нужно снижать шагами по 20 байт — 1400, 1380, 1360 — и после каждого шага проверять проблемный сайт.
Второе узкое место — процессор. WireGuard экономичен, но шифрование всё равно считается на CPU, и бюджетный роутер на слабом чипе становится ограничителем: на устройствах без аппаратного ускорения криптографии пропускная способность туннеля заметно ниже той, что роутер выдаёт без него. Проверить, упирается ли всё именно в железо, просто: посмотрите загрузку процессора на странице Status → Overview во время скачивания большого файла. Если одно ядро постоянно занято на сто процентов — это потолок устройства, и лечится он только заменой роутера.
Аппаратное ускорение NAT (flow offloading) на трафик внутри туннеля не распространяется, поэтому включать его ради скорости WireGuard бесполезно. Сравнение сценариев «туннель на роутере» и «туннель на каждом устройстве» — в материале VPN на роутере или на устройстве.
AmneziaWG на OpenWrt
AmneziaWG — вариант WireGuard с изменённой сигнатурой пакетов; зачем он нужен, объясняет статья что такое AmneziaWG. В официальных репозиториях OpenWrt его пока нет — ни в 24.10, ни в 25.12, — поэтому пакеты берут из стороннего проекта awg-openwrt на GitHub. Там есть готовые сборки для 23.05 и 24.10 (.ipk) и для 25.12 (.apk и собственный репозиторий), а также скрипт установки amneziawg-install.sh.
Понадобятся три пакета:
kmod-amneziawg— модуль ядра;amneziawg-tools— утилиты командной строки;luci-proto-amneziawg— протокол в LuCI; для русского интерфейса добавьтеluci-i18n-amneziawg-ru.
Главное правило: модуль ядра собирается под конкретную версию OpenWrt и архитектуру роутера. Берите пакеты точно под свою версию и target — они указаны на странице Status → Overview. Сторонние .apk в 25.12 ставятся с ключом --allow-untrusted, потому что не подписаны ключом OpenWrt. После обновления прошивки пакеты AmneziaWG придётся поставить заново под новую версию.
Дальше почти как с обычным WireGuard: в Network → Interfaces создайте интерфейс с протоколом AmneziaWG VPN, перенесите ключи, адрес и peer, а в дополнительные поля — параметры Jc, Jmin, Jmax, S1, S2 и H1–H4 из секции [Interface] конфига. Зона firewall и Route Allowed IPs настраиваются так же, как в шагах 3 и 4, состояние туннеля показывает страница Status → AmneziaWG. Если туннель поднялся, а интернета нет, сверьте параметры маскировки и MTU с конфигом: они должны совпадать с серверными до цифры, а версия пакетов — поддерживать все строки вашего конфига.
Типичные ошибки на OpenWrt
Собрал то, с чем чаще всего сталкиваются при настройке WireGuard в LuCI.
| Симптом | Что проверить |
|---|---|
| В списке протоколов нет WireGuard VPN | Не установлен luci-proto-wireguard или не хватило места во флеш-памяти. Установите пакет и перезагрузите роутер. |
| Рукопожатия нет вообще | Перепутаны ключи: в Private Key должен быть ваш PrivateKey, в Public Key — ключ сервера. Проверьте также Endpoint Port и то, что исходящий UDP не фильтруется вышестоящим оборудованием. |
| Туннель поднят, трафик идёт мимо | Не включена галочка Route Allowed IPs либо интерфейс не добавлен ни в одну зону firewall. |
| Маршрут по умолчанию не появляется | Загляните в /etc/config/network и проверьте, не выставлена ли у интерфейса опция nohostroute — она отключает создание маршрутов. |
| Из локальной сети интернета нет, с роутера есть | Не включён masquerading в зоне туннеля или не разрешён форвардинг из lan. |
| Соединение периодически замирает | Роутер за NAT провайдера без keepalive. Поставьте Persistent Keep Alive равным 25. |
| Часть сайтов открывается наполовину | MTU. Снижайте значение шагами по 20 байт и проверяйте после каждого шага. |
| Компьютеры Windows в локальной сети не отвечают на ping со стороны туннеля | Брандмауэр Windows по умолчанию не отвечает на ping из других подсетей, а адреса туннеля для него чужие. Разрешите входящий ICMP для подсети туннеля в правилах Windows и проверьте, что в OpenWrt разрешён форвардинг из зоны туннеля в lan. |
Если ничего не помогло, соберите вывод wg show, версию OpenWrt и модель роутера — с этим набором разбор занимает пару сообщений. Общая диагностика собрана в статье WireGuard не подключается; поддержка Muhomor VPN отвечает в Telegram-боте @muhomorvpn_bot и на почте vpn@muhomorvpn.ru. Полное руководство по протоколу есть и в вики OpenWrt.
Попробуйте Muhomor VPN — 3 дня бесплатно
Ссылка доступа придёт на e-mail за минуту: добавьте её в Happ одной кнопкой или скачайте конфиг WireGuard. Без карты и автосписаний, до 5 устройств на одном доступе.
Частые вопросы
Какие пакеты нужны для WireGuard на OpenWrt?
Достаточно установить wireguard-tools и luci-proto-wireguard. На OpenWrt 24.10 и старше это делает opkg, начиная с 25.12 — apk; первый пакет тянет модуль ядра, второй добавляет протокол WireGuard VPN в LuCI.
Зачем нужна галочка Route Allowed IPs?
Она создаёт маршруты для сетей из поля Allowed IPs. Без неё туннель поднимется и рукопожатие пройдёт, но трафик по-прежнему будет уходить через провайдера.
В какую зону firewall добавить интерфейс WireGuard?
Проще всего в зону wan — в ней уже включён masquerading и разрешён форвардинг из lan. Для более тонких правил создайте отдельную зону с теми же настройками.
Подойдёт ли инструкция для роутеров GL.iNet?
Да, они построены на OpenWrt, и под фирменной оболочкой доступен обычный LuCI. Настройка выполняется теми же шагами через Network → Interfaces.
Можно ли импортировать файл .conf целиком?
В свежих сборках LuCI на вкладке Peers есть импорт конфигурации: текст файла вставляется целиком, и поля заполняются сами. В старых версиях значения переносятся вручную.
Нужно ли настраивать что-то на домашних устройствах?
Нет. Телефоны, телевизоры и приставки получают маршрут от роутера автоматически, никаких приложений на них ставить не требуется.
Можно ли поставить AmneziaWG на OpenWrt?
Да, но не из официальных репозиториев: пакеты kmod-amneziawg, amneziawg-tools и luci-proto-amneziawg берут из проекта awg-openwrt на GitHub строго под свою версию OpenWrt и архитектуру. После установки в LuCI появляется протокол AmneziaWG VPN.