Что понадобится перед настройкой
OpenWrt интересен тем, что превращает почти любой роутер в полноценный маршрутизатор с прозрачными настройками. WireGuard здесь поддерживается штатно: модуль ядра лежит в репозитории, а веб-интерфейс LuCI получает отдельный протокол, в котором туннель настраивается мышкой, без единой команды в консоли. На этой же связке работают многие готовые устройства — например, роутеры GL.iNet построены на OpenWrt, и под их фирменной оболочкой доступен обычный LuCI.
Понадобятся три вещи. Первая — актуальная сборка OpenWrt (подойдёт любая современная стабильная ветка). Вторая — немного свободного места во флеш-памяти: пакеты WireGuard весят меньше мегабайта, но на старых роутерах с 8 МБ флеша свободного пространства может не остаться, и тогда нужен образ, собранный под свои нужды. Третья — файл конфигурации .conf с ключами и адресом сервера.
Конфиг для роутера выпускайте отдельный, не тот, что уже работает на телефоне: одна пара ключей рассчитана на одно устройство, иначе сервер будет видеть два источника с одним ключом и обрывать соединение обоим. В Muhomor VPN на доступе выпускается до пяти конфигов, роутеру отводится собственный профиль. Оформить пробный доступ на 3 дня можно на главной странице — нужен только e-mail. Что означает каждая строка файла, разобрано в материале разбор конфига WireGuard.
Откройте файл в любом текстовом редакторе и держите его перед глазами: значения из него мы будем переносить в поля LuCI.
Шаг 2. Создаём интерфейс WireGuard VPN в LuCI
Теперь собственно туннель.
- Откройте Network → Interfaces и нажмите Add new interface…
- Задайте имя, например
wg0(только латиница, без пробелов и дефисов), в списке Protocol выберите WireGuard VPN и подтвердите создание. - На вкладке 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 — ключевая галочка. Она заставляет 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 и уже разрешён форвардинг из lan, поэтому больше ничего настраивать не нужно. Этот способ рекомендует и сама документация проекта — он экономит время и не создаёт лишних правил.
Аккуратный: отдельная зона
Если хочется отделить туннель от провайдерского канала и управлять правилами независимо, создайте новую зону на странице Network → Firewall → Zones: назовите её, скажем, vpn, поставьте Input и Forward в reject, Output в accept, обязательно включите Masquerading и в поле 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 на роутере или на устройстве.
Типичные ошибки на 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 байт и проверяйте после каждого шага. |
Если ничего не помогло, соберите вывод wg show, версию OpenWrt и модель роутера — с этим набором разбор занимает пару сообщений. Общая диагностика собрана в статье WireGuard не подключается; поддержка Muhomor VPN отвечает в Telegram-боте @muhomorvpn_bot и на почте vpn@muhomorvpn.ru. Полное руководство по протоколу есть и в вики OpenWrt.
Попробуйте Muhomor VPN — 3 дня бесплатно
WireGuard-конфиг придёт на e-mail за минуту. Без карты и автосписаний, до 5 устройств на одном доступе.
Частые вопросы
Какие пакеты нужны для WireGuard на OpenWrt?
Достаточно установить wireguard-tools и luci-proto-wireguard. Первый тянет за собой модуль ядра, второй добавляет протокол WireGuard VPN в веб-интерфейс LuCI.
Зачем нужна галочка Route Allowed IPs?
Она создаёт маршруты для сетей из поля Allowed IPs. Без неё туннель поднимется и рукопожатие пройдёт, но трафик по-прежнему будет уходить через провайдера.
В какую зону firewall добавить интерфейс WireGuard?
Проще всего в зону wan — в ней уже включён masquerading и разрешён форвардинг из lan. Для более тонких правил создайте отдельную зону с теми же настройками.
Подойдёт ли инструкция для роутеров GL.iNet?
Да, они построены на OpenWrt, и под фирменной оболочкой доступен обычный LuCI. Настройка выполняется теми же шагами через Network → Interfaces.
Можно ли импортировать файл .conf целиком?
В свежих сборках LuCI на вкладке Peers есть импорт конфигурации: текст файла вставляется целиком, и поля заполняются сами. В старых версиях значения переносятся вручную.
Нужно ли настраивать что-то на домашних устройствах?
Нет. Телефоны, телевизоры и приставки получают маршрут от роутера автоматически, никаких приложений на них ставить не требуется.