Выполняйте шаги последовательно и сохраняйте резервную копию. Названия пунктов могут незначительно отличаться в разных версиях прошивки.
Требования к роутеру и версии прошивки
WireGuard встроен в ядро Linux начиная с версии 5.6, и большинство актуальных сборок OpenWrt 21.02 и новее уже используют совместимое ядро, поэтому отдельно собирать модуль не требуется. На старых версиях 19.07 и ниже поддержка идёт через отдельный kmod-пакет, который иногда приходится собирать под конкретную архитектуру вручную.
Проверьте объём свободной флеш-памяти перед установкой: пакеты luci-proto-wireguard и wireguard-tools вместе с зависимостями занимают около 1-2 МБ, что может быть критично для роутеров с 8 МБ флеш-памяти без встроенного расширения.
Убедитесь, что у роутера достаточно вычислительной мощности для шифрования на скорости вашего интернет-канала: на слабых одноядерных MIPS-платформах WireGuard редко превышает 40-60 Мбит/с даже без дополнительной нагрузки, тогда как современные двухъядерные ARM-модели легко тянут 300+ Мбит/с.
Установка пакетов
Обновите индекс пакетов и установите протокол WireGuard для LuCI вместе с набором консольных утилит wg и wg-quick. На новых сборках ядро уже содержит необходимый модуль, поэтому отдельный kmod чаще всего подтягивается автоматически как зависимость.
После установки перезапустите веб-сервер uhttpd, чтобы LuCI подхватил новый протокол в списке доступных при создании интерфейса — без этого шага новый пункт WireGuard VPN может не появиться в выпадающем списке сразу после установки пакета.
opkg update
opkg install luci-proto-wireguard wireguard-tools
/etc/init.d/uhttpd restartНужны параметры без ручного подбора?
Получите готовый профиль для своего роутера — ключи, endpoint и параметры обфускации уже заполнены.
Получить готовую конфигурациюГенерация и подготовка ключей
Если провайдер VPN-сервиса не выдал готовый профиль, ключевую пару можно сгенерировать прямо на роутере через SSH-консоль штатной утилитой wg. Приватный ключ никогда не покидает устройство и не должен передаваться администратору сервера — ему нужен только публичный ключ, полученный на втором шаге.
Храните приватный ключ в защищённом месте отдельно от конфигурационных файлов, которые вы можете случайно выложить в публичный репозиторий или переслать в мессенджере при обращении в поддержку.
wg genkey | tee privatekey | wg pubkey > publickey
cat privatekey
cat publickeyПубличный ключ передайте администратору сервера, приватный — оставьте только на роутере.
Настройка через LuCI
Откройте «Сеть → Интерфейсы», добавьте новый интерфейс WG0 и выберите протокол WireGuard VPN из выпадающего списка. Вставьте приватный ключ, адрес интерфейса в формате CIDR (например 10.8.0.2/32) и, при необходимости, задайте MTU вручную вместо значения по умолчанию.
Перейдите на вкладку Peers и добавьте peer с публичным ключом сервера, адресом и портом endpoint и разрешёнными адресами AllowedIPs. Для полного туннелирования укажите 0.0.0.0/0, для раздельного доступа — только подсеть удалённой сети, например 10.8.0.0/24.
Включите опцию Route Allowed IPs, чтобы LuCI автоматически создал системный маршрут на основе указанных AllowedIPs — без этой галочки трафик будет шифроваться, но система не будет знать, что его нужно направлять именно в туннель.
- 1Создайте интерфейс WG0 с адресом из полученного профиля.
- 2Добавьте peer и включите Route Allowed IPs для автоматической маршрутизации.
- 3Укажите 0.0.0.0/0 для полного туннеля или конкретную подсеть для раздельного доступа.
- 4Установите Persistent Keep Alive 25 секунд, если клиент или сервер находятся за NAT.
- 5Привяжите интерфейс WG0 к нужной firewall-зоне на вкладке «Физические настройки».
Та же настройка через UCI
Команды удобно хранить как шаблон и версионировать в личном менеджере паролей или защищённом хранилище заметок — это упрощает перенос настройки на новый роутер при замене оборудования. Замените значения в угловых скобках на свои и не сохраняйте приватный ключ в публичном репозитории или системе тикетов поддержки.
После выполнения всех команд обязательно закоммитьте изменения в постоянное хранилище UCI и перезапустите сетевую службу — без commit конфигурация останется только в оперативной памяти и исчезнет при перезагрузке роутера.
uci set network.wg0='interface'
uci set network.wg0.proto='wireguard'
uci set network.wg0.private_key='<PRIVATE_KEY>'
uci add_list network.wg0.addresses='10.8.0.2/32'
uci set network.wg0.mtu='1380'
uci add network wireguard_wg0
uci set network.@wireguard_wg0[-1].public_key='<SERVER_PUBLIC_KEY>'
uci set network.@wireguard_wg0[-1].endpoint_host='<SERVER_HOST>'
uci set network.@wireguard_wg0[-1].endpoint_port='51820'
uci set network.@wireguard_wg0[-1].route_allowed_ips='1'
uci add_list network.@wireguard_wg0[-1].allowed_ips='0.0.0.0/0'
uci set network.@wireguard_wg0[-1].persistent_keepalive='25'
uci commit network
/etc/init.d/network restartПолучить готовый конфиг
Если не хотите собирать профиль вручную, возьмите готовую конфигурацию и продолжайте инструкцию с шага импорта.
Получить готовую конфигурациюFirewall, зоны и полноценный kill switch
Создайте отдельную firewall-зону wg, разрешите forwarding из зоны LAN в зону wg и включите masquerading для исходящего трафика через туннель. Это стандартная связка для клиентского сценария, когда роутер прячет за WireGuard весь домашний трафик или его выбранную часть.
Для строгого kill switch не разрешайте выбранным клиентам прямой выход LAN → WAN в обход туннеля: если интерфейс wg0 упадёт, трафик этих устройств должен просто прерываться, а не молча уходить через провайдера в открытом виде. Это критично, если основная цель настройки — конфиденциальность, а не только смена IP-адреса.
Дополнительно можно добавить правило, блокирующее исходящий трафик на порт 53 (DNS) из зоны LAN напрямую в зону WAN, оставив разрешённым только DNS-запрос внутрь туннеля — это закрывает частый сценарий утечки, когда VPN работает, а DNS резолвится напрямую через провайдера.
uci add firewall zone
uci set firewall.@zone[-1].name='wg'
uci add_list firewall.@zone[-1].network='wg0'
uci set firewall.@zone[-1].input='REJECT'
uci set firewall.@zone[-1].output='ACCEPT'
uci set firewall.@zone[-1].forward='REJECT'
uci set firewall.@zone[-1].masq='1'
uci commit firewall
uci add firewall forwarding
uci set firewall.@forwarding[-1].src='lan'
uci set firewall.@forwarding[-1].dest='wg'
uci commit firewall
/etc/init.d/firewall restartСначала проверьте туннель без строгого kill switch, чтобы не потерять удалённый доступ к роутеру в случае ошибки конфигурации.
Настройка DNS внутри туннеля
По умолчанию OpenWrt может продолжать использовать DNS-сервер провайдера даже при поднятом WireGuard, если явно не указать другой резолвер для интерфейса. Пропишите нужные DNS-серверы в настройках интерфейса WG0 и, при необходимости, настройте dnsmasq так, чтобы для клиентов из выбранной зоны использовался именно туннельный DNS.
Проверить отсутствие утечки можно специализированными онлайн-сервисами определения DNS-серверов или прямым запросом nslookup с указанием ожидаемого адреса резолвера — если ответ приходит не от того сервера, который вы указали в профиле, значит запрос ушёл в обход туннеля.
Проверка маршрута и итоговая диагностика
Проверьте состояние handshake, таблицу маршрутов и корректность DNS-запроса. Новый внешний IP-адрес должен совпадать с адресом сервера, а счётчики transfer в выводе wg show — увеличиваться при генерации любого исходящего трафика.
Если handshake не устанавливается вовсе, в первую очередь проверьте доступность endpoint по указанному порту снаружи (файрвол сервера может блокировать порт), совпадение публичных ключей и синхронизацию времени на обеих сторонах. Если handshake есть, а трафик не идёт — смотрите на AllowedIPs, firewall-forwarding и masquerade.
wg show
ip route show
nslookup example.com
curl -4 https://ifconfig.co
logread | grep -i wireguardЧастые вопросы
Готовы подключить роутер?
Возьмите готовую конфигурацию и используйте эту инструкцию для установки и проверки.
Получить готовую конфигурациюПродолжите настройку
Все руководства — настройка роутеров, MTU, DNS и устройств.