WireGuard на OpenWrt: как направить трафик домашней сети через свой VPS
В этой инструкции роутер с уже установленной OpenWrt подключается к WireGuard-серверу на VPS, и весь IPv4-трафик домашней сети уходит через этот сервер. Мы настроим интерфейс и peer в LuCI, сохраним маршрут к серверу через провайдера, подготовим firewall, DNS, время и IPv6, а затем проверим внешний адрес и поведение сети при остановке туннеля.
Чтобы развернуть свой собственный VPN за 10 минут, Вам нужно:
- Заказать у нас Виртуальный сервер VPS MAATRIX в США, Великобритании или Франции (на Ваш выбор) и выбрать при установке тип VPN - WireGuard, OpenVPN, Amnezia (в зависимости от Вашего роутера). После оплаты этот сервер автоматически настроит VPN сразу для всей Вашей домашней или офисной сети.
- Вам останется просто подключить Ваш компьютер или роутер к этому серверу. Для роутера инструкцию можно взять с нашего сайта: просто введите модель Вашего роутера в каталоге и выполните указанные действия для настройки. Если Вашего роутера в списке нет - напишите пожалуйста нам в telegram @maatrixserv и мы предоставим Вам инструкцию.
- После подключения роутера к арендованному Вами серверу, все Ваши телефоны, планшеты, компьютеры и телевизоры заработают через него сами по Wi-Fi.
Ну а если что-то не будет получаться - наша техническая поддержка с радостью Вам поможет в telegram @maatrixserv , пожалуйста, обращайтесь!
Содержание
- Сделайте резервную копию и определите версию OpenWrt
- Подготовьте клиентский профиль с сервера
- Установите пакеты WireGuard
- Создайте интерфейс и peer в LuCI
- Сохраните маршрут к серверу через WAN
- Настройте зону firewall, перенаправление и NAT
- Настройте DNS для клиентов и начальную синхронизацию времени
- Решите вопрос с IPv6
- Включите туннель и проверьте адрес, DNS и IPv6
- Проверьте поведение при обрыве туннеля
- Откатите изменения при необходимости
Схема рассчитана на роутер с одним WAN, одной LAN и одним VPN-подключением. Если у вас несколько провайдеров, VLAN или свои правила маршрутизации, шаги придётся сверять с существующей конфигурацией. Для Xiaomi AX3000T и Redmi AX6000 есть отдельные материалы: совместимость Xiaomi/Redmi и подготовка OpenWrt и WireGuard на Xiaomi AX3000T и Redmi AX6000. Начинать с них стоит, зная точную модель и аппаратную ревизию.
Сделайте резервную копию и определите версию OpenWrt
Работайте из домашней сети, лучше по кабелю. Основной маршрут роутера будет меняться, и удалённое подключение через тот же роутер может оборваться в середине настройки. В LuCI откройте System → Backup / Flash Firmware, нажмите Generate archive и сохраните архив на компьютере. Рядом запишите текущие настройки DNS, IPv6 и правила firewall: при откате они пригодятся.
Дальше важно понять, какой пакетный менеджер использует прошивка. В ветке 24.10 это opkg, начиная с 25.12 — apk (подробности в примечаниях к выпуску 25.12). Версия видна на главной странице LuCI в поле Firmware Version. По SSH её можно уточнить так:
cat /etc/openwrt_release
command -v apk
command -v opkg
Одна из двух последних команд выведет путь к менеджеру, вторая ничего не покажет. Если вы собираетесь обновлять прошивку, делайте это отдельной процедурой для своей модели, а не по ходу настройки VPN.
Подготовьте клиентский профиль с сервера
Понадобится клиентский файл .conf, выданный сервером. Если VPS заказан в MAATRIX с автоматической установкой WireGuard, этот файл скачивается из карточки сервера. Профиль выглядит примерно так (все значения вымышлены):
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY_PLACEHOLDER
Address = 10.8.0.2/32
DNS = 10.8.0.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY_PLACEHOLDER
PresharedKey = PRESHARED_KEY_PLACEHOLDER
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Сохраните оригинал файла и никому не пересылайте приватный ключ. Один профиль не стоит использовать одновременно на двух независимых клиентах: сервер будет видеть их как один peer, и соединения начнут перебивать друг друга. Телефонам и ноутбукам за роутером отдельные профили не нужны, они пользуются его туннелем.
Страна выхода определяется локацией VPS. Если цель — доступ к ИИ-сервисам, учтите, что он зависит ещё и от правил сервиса и состояния аккаунта.
Установите пакеты WireGuard
Нужны два пакета: wireguard-tools и luci-proto-wireguard. Модуль ядра менеджер подтянет как зависимость из репозитория вашей прошивки. В LuCI это делается в разделе System → Software (в разных версиях интерфейс раздела отличается): обновите списки пакетов и найдите оба пакета по имени. По SSH команды зависят от ветки.
Для OpenWrt 24.10:
opkg update
opkg install wireguard-tools luci-proto-wireguard
Для OpenWrt 25.12 и новее:
apk update
apk add wireguard-tools luci-proto-wireguard
Не запускайте массовое обновление установленных пакетов и не используйте принудительную установку в обход зависимостей. Если менеджер сообщает о несовместимости с ядром, это значит, что пакеты не подходят к вашей сборке. Проблема решается установкой из правильного репозитория или переходом на актуальную прошивку для этой модели. Модули из чужих сборок могут не загрузиться или нарушить работу системы.
После установки перезагрузите страницу LuCI, чтобы появился протокол WireGuard.
Создайте интерфейс и peer в LuCI
Откройте Network → Interfaces → Add new interface, задайте имя wg_maatrix и протокол WireGuard VPN. В некоторых версиях LuCI есть кнопка импорта конфигурации, которая разбирает файл .conf. После импорта всё равно пройдитесь по полям и сверьте значения с профилем. Пока сохраняйте изменения кнопкой Save, без общего Save & Apply: до маршрута к серверу и firewall туннель включать рано.
При ручном вводе на вкладке General Settings вставьте PrivateKey в поле приватного ключа, а адрес из Address — в IP Addresses вместе с маской из файла. Маска /32 для клиента обычна. Новые ключи не генерируйте: сервер знает публичный ключ, соответствующий выданному приватному.
На вкладке Peers добавьте peer и заполните поля:
- Public Key —
PublicKeyсервера; - Preshared Key — если он есть в профиле;
- Allowed IPs —
0.0.0.0/0для полного IPv4-туннеля; - Route Allowed IPs — включить;
- Endpoint Host и Endpoint Port — адрес и порт из
Endpoint; - Persistent Keep Alive — значение из профиля, для клиента за NAT часто используют 25.
Allowed IPs и Route Allowed IPs решают разные задачи. Первое поле определяет, какие адреса принимаются от peer и отправляются ему. Галочка добавляет эти сети в таблицу маршрутизации роутера. Назначение параметров описано в документации OpenWrt по туннельным протоколам.
В Endpoint лучше указать числовой IPv4-адрес сервера. Тогда туннелю не нужен DNS для старта. Если в профиле указано доменное имя, роутер должен разрешать его через провайдера до поднятия VPN, и это нужно учесть в DNS-настройках ниже.
Эта статья описывает полный туннель: через VPS идёт весь IPv4-трафик сети. Выборочная маршрутизация, когда через VPN ходят только отдельные устройства или адреса, строится иначе, обычно через пакет pbr и с другими настройками Allowed IPs и маршрутов. Смешивать два сценария на одном шаге не стоит. Сначала добейтесь стабильной работы полного туннеля, а потом переходите к PBR.
Сохраните маршрут к серверу через WAN
Когда маршрут по умолчанию уйдёт в туннель, зашифрованные пакеты к самому VPS всё равно должны идти через провайдера. До включения VPN посмотрите текущий путь к серверу:
ip -4 route get 203.0.113.10
Вместо примера подставьте реальный адрес. Запишите устройство WAN и шлюз (via). Затем в Network → Routing → Static IPv4 Routes добавьте маршрут: интерфейс wan, цель — адрес VPS с маской /32 (или 255.255.255.255), шлюз — записанный адрес. Для PPPoE шлюз в выводе обычно отсутствует, тогда достаточно указать интерфейс.
Интеграция WireGuard в OpenWrt может сама создавать маршрут к endpoint, но поведение зависит от версии netifd. Явный маршрут делает схему предсказуемой. Учтите, что шлюз записан вручную: если провайдер по DHCP выдаст другой, маршрут придётся обновить. Это же касается смены адреса VPS.
Теперь задайте приоритеты маршрутов по умолчанию. В Advanced Settings интерфейса WAN укажите Use gateway metric 100, у wg_maatrix — 20. Меньшая метрика выигрывает, поэтому маршрут через туннель станет основным, а маршрут через WAN останется запасным. WAN не удаляйте и не отключайте: по нему физически идёт соединение с сервером.
Настройте зону firewall, перенаправление и NAT
В Network → Firewall → Zones добавьте зону vpn и включите в неё только wg_maatrix.
| Параметр | Значение |
|---|---|
| Input | reject |
| Output | accept |
| Forward | reject |
| Masquerading | включено |
| MSS clamping | включено |
| Allow forward from source zones | lan |
Masquerading заменяет адреса домашних устройств адресом роутера в туннеле, поэтому серверу не нужны маршруты к вашей LAN. MSS clamping помогает TCP-соединениям уложиться в уменьшенный размер пакета внутри туннеля. Перенаправление vpn → lan не требуется: ответы на соединения, начатые из дома, пропускает отслеживание состояния. По той же причине не создавайте разрешающих правил wan → lan и не помещайте туннель в зону lan. Подробнее о зонах — в документации OpenWrt по firewall.
Существующее перенаправление lan → wan пока оставьте. Его судьба решается после проверки.
Настройте DNS для клиентов и начальную синхронизацию времени
В Network → DHCP and DNS укажите в DNS forwardings DNS-сервер из профиля, если он реально работает на вашем VPS, либо выбранный публичный резолвер. Включите Ignore resolve file, чтобы dnsmasq не добавлял резолверы провайдера. Клиенты продолжат получать по DHCP адрес роутера как DNS, и менять это не нужно. Если Endpoint задан доменным именем, это имя должно разрешаться без туннеля, например через отдельный адрес сервера для конкретного домена в формате /vpn.example.com/192.0.2.53 в тех же forwardings.
Время тоже нужно получить до туннеля. WireGuard проверяет временные метки рукопожатий (описание протокола), и роутер без батарейки часов после холодной загрузки может не договориться с сервером. В System → System → Time Synchronization укажите числовой NTP-сервер, например 162.159.200.1 из документации Cloudflare, и добавьте к нему такой же статический маршрут /32 через WAN, как к VPS. Тогда синхронизация не зависит ни от DNS, ни от VPN.
Браузеры с включённым собственным DoH обращаются к своему резолверу напрямую, минуя роутер. Через полный туннель такой запрос всё равно уйдёт через VPS, но резолвер будет другим, и это нужно учитывать при проверке.
Решите вопрос с IPv6
Туннель с 0.0.0.0/0 охватывает только IPv4. Если провайдер выдаёт IPv6, устройства продолжат ходить напрямую по IPv6 в обход VPS. Вариантов два.
Если сервер не даёт IPv6 внутри туннеля, отключите его для домашней сети: в настройках LAN на вкладке DHCP Server → IPv6 Settings выключите RA-Service и DHCPv6-Service, уберите делегирование префикса (IPv6 assignment length) и остановите WAN6, если он больше ничем не используется. После этого переподключите клиентов: старые IPv6-адреса могут сохраняться до истечения срока.
Если в профиле есть IPv6-адрес и ::/0, IPv6 можно пустить через туннель, но это требует адресации, маршрутов и NAT или префикса на обеих сторонах. Рекомендации собраны на странице OpenWrt WireGuard extras.
Включите туннель и проверьте адрес, DNS и IPv6
Нажмите Save & Apply и запустите wg_maatrix. На роутере команда wg show должна показывать время последнего handshake и растущие счётчики переданных данных. Маршруты проверьте так:
ip -4 route
ip -4 route get 203.0.113.10
ip -4 route get 192.0.2.1
Путь к адресу VPS должен по-прежнему вести через WAN, а к произвольному внешнему адресу — через wg_maatrix.
Затем проверяйте с ноутбука в LAN, на котором выключены другие VPN. Откройте любой сервис определения внешнего адреса: IPv4 должен совпасть с адресом VPS. Если вы отключали IPv6, проверка IPv6 на таком сервисе должна завершиться неудачей. Если IPv6 пущен через туннель, должен показываться адрес сервера.
DNS-тест показывает, какой резолвер обработал запрос, но не маршрут, которым запрос до него дошёл. Название провайдерского или публичного резолвера в результате само по себе ещё не означает утечку. Сверьте результат с forwardings на роутере и с настройками браузера. Утечку подтверждает именно запрос, ушедший через WAN мимо туннеля.
По симптомам легко понять, где искать ошибку. Handshake есть, а адрес домашний — проблема в маршрутах и метриках. Адрес сменился, но имена не разрешаются — в DNS. Мелкие страницы открываются, а крупные зависают — в MTU. Тогда возьмите значение из профиля и при необходимости уменьшайте его на интерфейсе постепенно, проверяя результат.
Проверьте поведение при обрыве туннеля
Теперь решите, что важнее при отказе VPS: сохранить интернет или запретить обход. Для запрета удалите перенаправление lan → wan в настройках зоны lan, оставив lan → vpn. Проверьте, нет ли других зон (например, гостевой) или отдельных правил, разрешающих выход в WAN. Запрет зоны действует и для IPv4, и для IPv6.
Само снятие перенаправления не гарантирует мгновенную блокировку. Уже установленные соединения живут в таблице отслеживания, а при включённом flow offloading часть потоков обрабатывается в обход обычной цепочки firewall. Поэтому после изменения перезапустите firewall, переподключите тестовый клиент и проверяйте только новые соединения.
Остановите wg_maatrix в LuCI. На ноутбуке откройте сайт, который ещё не посещали, или выполните запрос из терминала. Страница из кеша браузера ничего не доказывает. Внешние адреса должны стать недоступны, а LuCI роутера — по-прежнему открываться. Затем запустите туннель и убедитесь, что доступ вернулся.
Запрет касается пересылаемого трафика клиентов. Собственные запросы роутера, включая DNS к forwardings, при упавшем туннеле пойдут по запасному маршруту через WAN. Чтобы закрыть обычный DNS и DoT роутера через провайдера, можно добавить правило:
uci set firewall.vpn_dns_block=rule
uci set firewall.vpn_dns_block.name='Block-router-DNS-on-WAN'
uci set firewall.vpn_dns_block.dest='wan'
uci set firewall.vpn_dns_block.dest_port='53 853'
uci set firewall.vpn_dns_block.proto='tcp udp'
uci set firewall.vpn_dns_block.target='REJECT'
uci commit firewall
service firewall restart
Если сервер WireGuard слушает UDP-порт 53 или 853, перед этим правилом создайте узкое разрешение исходящего трафика к адресу VPS на этот порт, иначе заблокируется и сам туннель. Если Endpoint задан доменным именем, такое правило помешает его разрешению через WAN. Правило не закрывает DoH на порту 443 и другие службы роутера, так что считать его полной блокировкой любого исходящего трафика нельзя.
Откатите изменения при необходимости
Из локальной сети остановите wg_maatrix, верните перенаправление lan → wan, удалите правило блокировки DNS и восстановите прежние настройки DNS и IPv6 по своим записям. Если что-то пошло не так глубже, восстановите сохранённый архив в System → Backup / Flash Firmware.
Когда полный туннель работает стабильно, можно переходить к выборочной маршрутизации или другим протоколам: OpenVPN на OpenWrt, AmneziaWG на OpenWrt. Общий обзор вариантов для разных роутеров есть в статье VPN на роутере для всего дома.
Чтобы развернуть свой собственный VPN за 10 минут, Вам нужно:
- Заказать у нас Виртуальный сервер VPS MAATRIX в США, Великобритании или Франции (на Ваш выбор) и выбрать при установке тип VPN - WireGuard, OpenVPN, Amnezia (в зависимости от Вашего роутера). После оплаты этот сервер автоматически настроит VPN сразу для всей Вашей домашней или офисной сети.
- Вам останется просто подключить Ваш компьютер или роутер к этому серверу. Для роутера инструкцию можно взять с нашего сайта: просто введите модель Вашего роутера в каталоге и выполните указанные действия для настройки. Если Вашего роутера в списке нет - напишите пожалуйста нам в telegram @maatrixserv и мы предоставим Вам инструкцию.
- После подключения роутера к арендованному Вами серверу, все Ваши телефоны, планшеты, компьютеры и телевизоры заработают через него сами по Wi-Fi.
Ну а если что-то не будет получаться - наша техническая поддержка с радостью Вам поможет в telegram @maatrixserv , пожалуйста, обращайтесь!
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →