WireGuard на Xiaomi и Redmi с OpenWrt: настройка туннеля для всей домашней сети
В этой статье настраивается одна схема: домашние устройства выходят в интернет через роутер Xiaomi или Redmi с OpenWrt, а роутер передаёт их трафик по WireGuard на ваш VPS. Настройка выполняется в LuCI, а консоль нужна только для проверки. По шагам разбираются пакеты, интерфейс и peer, маршрут к серверу, 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
- Запретите выход в обход туннеля и проверьте обрыв
Убедитесь, что роутер уже работает под OpenWrt
Инструкция подходит только для роутеров, на которых OpenWrt уже установлена. В заводской прошивке MIWiFi нет пунктов меню и пакетов, о которых здесь идёт речь, поэтому повторить шаги в ней не получится.
Если перепрошивки ещё не было, начните с отдельной статьи о подготовке Xiaomi и Redmi к OpenWrt. Там же разбирается вопрос аппаратных ревизий. Обратите внимание, что AX3000T выпускается в вариантах RD03, RD23 и RD03v2, и это разное железо. Образ, собранный для одной ревизии, нельзя ставить на другую. Поддержку вашей модели проверяйте по актуальной карточке устройства на сайте OpenWrt. Действия с загрузчиком и способы обойти его ограничения здесь не рассматриваются.
Перед настройкой туннеля откройте Status → Overview и проверьте три вещи: модель, номер выпуска OpenWrt и свободное место. Если у вас есть SSH-доступ, те же сведения можно посмотреть так:
ubus call system board
df -h /overlay
ip -4 route
Обычный интернет без VPN должен уже работать, а роутер должен открываться по кабелю. В System → Backup / Flash Firmware создайте архив настроек и сохраните его на компьютер. Копия, которая лежит только на самом роутере, при неудачной настройке бесполезна.
Проверьте и адресацию. Если Xiaomi подключён за другим роутером, его WAN и LAN должны быть в разных подсетях. Например, если вышестоящая сеть использует 192.168.31.0/24, для LAN подойдёт свободная 192.168.50.0/24. Внутренний адрес WireGuard из профиля тоже не должен совпадать с этими сетями. Фирменный Xiaomi Mesh после перехода на OpenWrt сам по себе не сохраняется. Поэтому сначала проверяйте туннель на устройствах, подключённых прямо к этому роутеру, а дополнительными точками доступа занимайтесь отдельно.
Подготовьте отдельный профиль для роутера
Для роутера нужен собственный peer на сервере. Если VPS создан в MAATRIX с автоматической установкой WireGuard, клиентский профиль можно скачать в виде файла .conf. Телефоны и ноутбуки, подключённые к Wi-Fi роутера, отдельные ключи не получают: их трафик идёт через туннель роутера. Если тот же телефон вне дома подключается через своё приложение, ему нужен другой peer. Когда два устройства одновременно работают с одним ключом, сервер постоянно переключается между их адресами, и соединение обрывается без понятной причины.
Локация сервера определяет только страну, из которой трафик выходит в интернет. Доступ к конкретным сервисам, в том числе к ИИ-инструментам, зависит ещё и от их правил и условий вашего аккаунта. VPS не гарантирует обход любых ограничений.
Из профиля понадобятся следующие значения:
PrivateKeyиAddressиз секции[Interface], а такжеDNSиMTU, если они указаны;PublicKey,Endpoint,AllowedIPsиPersistentKeepaliveиз секции[Peer];PresharedKey, если сервер его выдал. Этот ключ обязательно переносится в настройки peer, иначе рукопожатие не состоится.
Не генерируйте на роутере новую пару ключей вместо выданной, если не собираетесь одновременно менять настройки на сервере. Не публикуйте файл профиля целиком, в том числе в скриншотах, и храните исходник отдельно.
Установите пакеты WireGuard
Набор пакетов один и тот же, но менеджер пакетов зависит от выпуска. В OpenWrt 24.10 используется opkg, в 25.12 его заменил apk. Подробности описаны в примечаниях к выпуску OpenWrt 25.12. Проще всего установить пакеты через System → Software: обновите списки и поставьте wireguard-tools и luci-proto-wireguard. Через 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. Профиль AmneziaWG этим клиентом не читается, для него есть отдельная инструкция.
Создайте интерфейс и peer в LuCI
Откройте Network → Interfaces → Add new interface, задайте имя wg_home и выберите протокол WireGuard VPN. В некоторых версиях LuCI форма умеет импортировать файл конфигурации. Если такой кнопки нет, заполните поля вручную.
- На вкладке General Settings вставьте
PrivateKeyиз профиля и укажите адрес изAddressвместе с маской, например10.8.0.2/32. - Если в профиле есть MTU, перенесите его на вкладку Advanced Settings. Там же задайте метрику шлюза: например, 20 для
wg_homeи 100 для интерфейса WAN. Меньшее значение означает более высокий приоритет. - На вкладке Peers добавьте peer. Укажите
PublicKeyсервера, адрес и порт изEndpoint, а такжеPresharedKey, если он есть. - Для полного IPv4-туннеля в Allowed IPs укажите
0.0.0.0/0и включите Route Allowed IPs. - Перенесите
PersistentKeepaliveиз профиля. Если его там нет, обычно задают 25 секунд, чтобы туннель не терялся за NAT провайдера.
Endpoint лучше указывать числовым IPv4-адресом сервера. Тогда для подключения туннеля не нужен DNS, и это упрощает запуск после перезагрузки (об этом ниже). В результате в /etc/config/network появится примерно такой фрагмент. Ключи и адреса в нём вымышлены:
config interface 'wg_home'
option proto 'wireguard'
option private_key 'CLIENT_PRIVATE_KEY_PLACEHOLDER'
list addresses '10.8.0.2/32'
option metric '20'
config wireguard_wg_home
option public_key 'SERVER_PUBLIC_KEY_PLACEHOLDER'
option preshared_key 'PRESHARED_KEY_PLACEHOLDER'
option endpoint_host '203.0.113.10'
option endpoint_port '51820'
option persistent_keepalive '25'
option route_allowed_ips '1'
list allowed_ips '0.0.0.0/0'
Эта статья описывает полный туннель, в который уходит весь трафик LAN. Если нужно пускать через VPN только отдельные устройства или адреса, используется маршрутизация по политикам, например пакет pbr. В этом случае Route Allowed IPs с 0.0.0.0/0 обычно отключают и настраивают правила отдельно. Если совместить обе схемы, маршруты начнут конфликтовать. Выберите одну из них.
Закрепите маршрут к серверу через WAN
Когда маршрут по умолчанию уходит в туннель, зашифрованные пакеты к самому серверу должны по-прежнему идти через провайдера. Иначе туннель попытается пройти сам через себя. В части выпусков OpenWrt система добавляет такой маршрут к Endpoint автоматически, но явный статический маршрут делает поведение предсказуемым независимо от версии.
До включения wg_home посмотрите, через какой шлюз сейчас доступен VPS. Подставьте в команду его адрес:
ip -4 route get 203.0.113.10
Затем в Network → Routing → Static IPv4 Routes добавьте маршрут: интерфейс wan, цель 203.0.113.10/32, шлюз — тот, что показала команда. При PPPoE выберите логический интерфейс провайдера и не указывайте выдуманный Ethernet-шлюз, потому что соединение точка-точка в нём не нуждается. Если провайдер выдаёт адрес по DHCP и шлюз иногда меняется, после его смены маршрут нужно проверить заново.
Настройте зону firewall и NAT
Сам по себе интерфейс трафик не пропустит. В Network → Firewall → Zones добавьте зону vpn, включите в неё wg_home и задайте параметры:
| Параметр | Значение | Назначение |
|---|---|---|
| Input | Reject | со стороны туннеля нельзя зайти на сам роутер |
| Output | Accept | роутер может отправлять трафик в туннель |
| Forward | Reject | транзит из туннеля запрещён по умолчанию |
| Masquerading | включено | LAN выходит под адресом роутера в туннеле |
| MSS clamping | включено | снижает риск зависания соединений из-за MTU |
| Forwardings | lan → vpn | домашние устройства могут пользоваться туннелем |
Masquerading нужен потому, что серверный профиль знает только адрес роутера в туннеле и ничего не знает о вашей LAN. Ответы на исходящие соединения пропускаются как часть уже установленных сессий, поэтому разрешение vpn → lan добавлять не требуется. Подробнее о зонах и маршрутах написано в общей инструкции WireGuard на OpenWrt. Гостевая сеть или отдельная VLAN разрешения LAN не наследует, для неё нужен свой forwarding. Правило lan → wan пока оставьте, его судьба решится после проверки.
Настройте DNS, время и IPv6
В Network → DHCP and DNS добавьте IPv4-адрес DNS из профиля в DNS forwardings и включите Ignore resolv file, чтобы dnsmasq не использовал резолвер провайдера. Клиенты по DHCP по-прежнему получают в качестве DNS адрес роутера. Если в браузере включён собственный DoH или на роутере работает отдельный DNS-фильтр, на время проверки отключите их, а потом возвращайте по одному.
Отдельно стоит проверить время. В рукопожатии WireGuard передаётся метка времени, и сервер не принимает рукопожатие, если метка не новее предыдущей от того же ключа. У многих домашних роутеров нет часов с батарейкой, и после перезагрузки время берётся приблизительно. Откройте System → System и убедитесь, что синхронизация NTP включена и время совпадает с реальным. Числовой Endpoint позволяет туннелю подняться без DNS. Если же Endpoint задан именем, роутеру нужно сначала разрешить это имя через WAN, и блокировать DNS роутера на WAN в такой схеме нельзя.
IPv6 требует внимания, потому что 0.0.0.0/0 охватывает только IPv4. Если провайдер выдаёт IPv6, а сервер его не поддерживает, клиенты могут выходить в IPv6-интернет напрямую. В этом случае в настройках интерфейса lan отключите Router Advertisement и DHCPv6, уберите делегирование префикса и отключите wan6, если он не нужен другим сетям. После этого переподключите клиентов, чтобы старые IPv6-адреса пропали. Если в профиле есть IPv6-адрес и сервер его маршрутизирует, можно добавить ::/0 в Allowed IPs, но тогда IPv6 должен быть настроен с обеих сторон.
Проверьте внешний адрес, DNS и IPv6
Включите wg_home и выполните wg show. Время последнего рукопожатия должно обновляться, а счётчики переданных байтов расти в обе стороны. Если рукопожатия нет, проверьте ключи, PresharedKey, порт, время на роутере и статический маршрут к Endpoint.
Дальнейшие проверки делайте на ноутбуке из LAN, а не на роутере:
- Откройте любой сервис определения IP. Внешний IPv4 должен совпадать с адресом VPS.
- Проверьте IPv6. Если вы его отключили, тест должен показать, что IPv6-подключения нет. Если показывается адрес провайдера, значит, обход остался.
- Запустите DNS-тест. Он показывает резолвер, который обработал запрос, но не путь, которым этот запрос прошёл. Название одного резолвера ещё не доказывает утечку. Сравните результат с настройками: если видны серверы провайдера, хотя в forwardings указан другой DNS, ищите источник, например DoH в браузере или DNS, вручную прописанный на клиенте.
Скорость измеряйте поэтапно: сначала по кабелю, потом по 5 ГГц рядом с роутером, потом на обычном рабочем месте. Такой порядок показывает, что ограничивает скорость: туннель, радиоканал или расстояние. Маркировка AX3000 или AX6000 описывает возможности Wi-Fi, а не скорость шифрования. Аппаратное ускорение маршрутизации не означает ускорения WireGuard. Во время передачи файла следите за загрузкой процессора и задержкой. Если позже понадобится SQM, учтите, что OpenWrt указывает на его несовместимость с hardware flow offloading. Если крупные загрузки зависают, сверьте MTU с профилем и меняйте по одному параметру за раз. Проблему слабого сигнала изменение MTU не решит.
Запретите выход в обход туннеля и проверьте обрыв
Если при сбое VPN домашние устройства не должны выходить в интернет напрямую, удалите в настройках зоны lan разрешение lan → wan и оставьте только lan → vpn. Посмотрите и на раздел Traffic Rules: там не должно быть других правил, которые разрешают LAN доступ в WAN. Доступ к LuCI из LAN при этом сохраняется, потому что он относится к входящему трафику роутера, а не к пересылке.
Эта мера закрывает пересылаемый трафик клиентов. Собственные запросы роутера настраиваются отдельно. Если Endpoint числовой, обычный DNS и DoT роутера через WAN можно запретить правилом в Traffic Rules: назначение — зона wan, протоколы TCP и UDP, порты 53 и 853, действие Reject. Учтите ограничения: DoH на порту 443 и другие службы это правило не охватывает, а при Endpoint в виде имени оно помешает туннелю подняться.
Обрыв нужно проверять на новых соединениях. Страница, открытая из кеша браузера, ничего не показывает. Остановите wg_home в Network → Interfaces и на ноутбуке откройте в приватном окне сайт, на который вы сегодня не заходили, или выполните запрос из командной строки. Внешние соединения устанавливаться не должны, а IP-сервисы не должны показывать адрес провайдера. Затем включите туннель и повторите проверку внешнего IP. После этого перезагрузите роутер и убедитесь, что туннель поднимается сам, время синхронизируется, а рукопожатие появляется без вашего участия.
Чтобы откатить изменения, выполните шаги в обратном порядке из LAN: остановите wg_home, верните forwarding lan → wan, удалите DNS-правило, восстановите прежние настройки DNS в DHCP and DNS и включите обратно IPv6 на lan и wan6, если отключали его. После этого удалите статический маршрут к серверу, зону vpn и сам интерфейс. Если что-то пошло не так, восстановите сохранённый на компьютере архив через System → Backup / Flash Firmware.
Когда туннель стабильно поднимается после перезагрузки, внешний адрес совпадает с VPS, а при остановке wg_home клиенты теряют доступ в интернет, настройку можно считать завершённой. Сохраните новый архив настроек, чтобы при необходимости быстро вернуться к рабочему состоянию.
Чтобы развернуть свой собственный VPN за 10 минут, Вам нужно:
- Заказать у нас Виртуальный сервер VPS MAATRIX в США, Великобритании или Франции (на Ваш выбор) и выбрать при установке тип VPN - WireGuard, OpenVPN, Amnezia (в зависимости от Вашего роутера). После оплаты этот сервер автоматически настроит VPN сразу для всей Вашей домашней или офисной сети.
- Вам останется просто подключить Ваш компьютер или роутер к этому серверу. Для роутера инструкцию можно взять с нашего сайта: просто введите модель Вашего роутера в каталоге и выполните указанные действия для настройки. Если Вашего роутера в списке нет - напишите пожалуйста нам в telegram @maatrixserv и мы предоставим Вам инструкцию.
- После подключения роутера к арендованному Вами серверу, все Ваши телефоны, планшеты, компьютеры и телевизоры заработают через него сами по Wi-Fi.
Ну а если что-то не будет получаться - наша техническая поддержка с радостью Вам поможет в telegram @maatrixserv , пожалуйста, обращайтесь!
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →