WireGuard на OpenWrt: подключаем домашний роутер к своему VPS
Роутер с OpenWrt похож на хорошую мастерскую: всё можно сделать под себя, но ящики с инструментами подписаны словами interface, firewall и route. Поэтому иногда человек устанавливает WireGuard, видит успешное рукопожатие и торжественно объявляет победу. А ноутбук продолжает ходить в интернет через провайдера. Роутер не спорит: пожать руку серверу его просили, маршрут для ноутбука — ещё нет.
Здесь соберём всю цепочку: домашняя сеть → WireGuard на OpenWrt → VPS → интернет. Сначала подключим обычную IPv4-сеть, затем проверим DNS, IPv6 и поведение при отключении сервера. Настройка рассчитана на уже установленную OpenWrt с LuCI, одним WAN и одним VPN. Для сети с несколькими провайдерами, VLAN и собственными правилами маршрутизации потребуется учитывать существующую схему.
Содержание
- Сначала узнаём роутер, потом достаём инструменты
- Что взять с сервера
- Устанавливаем пакеты и создаём интерфейс
- Оставляем серверу дорогу через WAN
- Firewall: впускаем домашние устройства в туннель
- DNS и IPv6: два выхода, о которых забывают
- Проверка, которая отличает интернет от зелёной лампочки
- Как вернуть всё назад
Готовый WireGuard-сервер для OpenWrt
Закажите VPS MAATRIX в США, Великобритании или Франции с автоматической установкой WireGuard. Получите отдельный клиентский профиль для роутера и подключите нужные устройства по этой инструкции.
ВЫБРАТЬ СЕРВЕР С WIREGUARDСначала узнаём роутер, потом достаём инструменты
Одинаковое название на коробке не означает одинаковую аппаратную ревизию. Установка OpenWrt на Xiaomi, TP-Link или другой роутер — отдельная процедура для конкретного устройства. Эта инструкция не предлагает прошивать «похожим файлом»: OpenWrt уже должна работать, раздавать адреса и выпускать устройства в интернет.
Подключитесь к LAN кабелем, откройте LuCI по адресу роутера и скачайте резервную копию через System → Backup / Flash Firmware → Generate archive. Сохраните её на компьютере. Работать лучше из домашней сети: менять основной маршрут через тот самый удалённый доступ — сетевой аналог пилить ветку, сидя на ней.
Для пакетов важна версия системы. В OpenWrt 25.12 используется apk, в ветке 24.10 — opkg. Наличие старого роутера не повод ставить устаревшую прошивку специально ради знакомой команды. Проверьте поддерживаемый выпуск для своего устройства и сделайте резервную копию перед обновлением. Об изменении пакетного менеджера.
Что взять с сервера
Нужен готовый клиентский файл .conf: в нём адрес туннеля, ключи, адрес VPS и UDP-порт. В MAATRIX можно заказать VPS с автоматической установкой WireGuard, дождаться готовности и скачать конфигурацию из карточки сервера. Серверную часть тогда не приходится собирать вручную.
Для выхода через США, Великобританию или Францию выбирайте соответствующую локацию VPS. Роутер останется дома; за границей будет находиться точка выхода в интернет. Для ИИ-сервисов это только часть условий: доступ также зависит от правил сервиса и аккаунта. Сам VPN не превращает неподдерживаемую подписку в поддерживаемую.
Сохраните оригинал конфига. Приватный ключ не отправляйте в комментарии и не используйте один профиль одновременно на двух независимых VPN-клиентах. Телефоны за одним роутером — другая история: они пользуются его туннелем и отдельных WireGuard-профилей не требуют.
Устанавливаем пакеты и создаём интерфейс
В System → Software обновите списки и установите wireguard-tools и luci-proto-wireguard. Зависимости, включая подходящий модуль ядра, должны поступать из репозитория именно вашей прошивки. Ошибку совместимости ядра нельзя исправлять принудительной установкой чужого пакета.
При работе по SSH команды выбираются по ветке:
# OpenWrt 25.12
apk update
apk add wireguard-tools luci-proto-wireguard
# OpenWrt 24.10
opkg update
opkg install wireguard-tools luci-proto-wireguard
Обновите страницу LuCI. В Network → Interfaces → Add new interface создайте wg_maatrix, протокол WireGuard VPN. Если доступен импорт, загрузите свой файл. После импорта всё равно проверьте значения: удобная кнопка не отменяет проверку результата. Промежуточные правки сохраняйте без общего Save & Apply: сначала подготовим путь к серверу, firewall и DNS, затем применим их вместе.
При ручном вводе перенесите PrivateKey в приватный ключ интерфейса, IPv4 из Address — в IP Addresses. Маску оставьте из файла: /32 здесь не опечатка. В peer укажите PublicKey сервера, адрес и порт из Endpoint, а также PresharedKey, если он присутствует. Не генерируйте новые ключи поверх выданного профиля: сервер пока знает старые.
В Allowed IPs для полного IPv4-туннеля укажите 0.0.0.0/0 и включите Route Allowed IPs. Keepalive возьмите из профиля; для обычного клиента за NAT часто используется 25 секунд. Адреса определяют, какой peer принимает пакет, а галочка добавляет маршруты — это разные задачи. Описание параметров OpenWrt.
Оставляем серверу дорогу через WAN
До включения полного туннеля посмотрите действующий путь к публичному IPv4 VPS:
ip -4 route get 203.0.113.10
Замените демонстрационный адрес реальным. Сохраните показанные WAN-устройство и шлюз. В Network → Routing → Static IPv4 Routes добавьте маршрут к этому адресу с маской /32 через интерфейс провайдера и его настоящий шлюз. Для PPPoE маршрут задаётся через соответствующий WAN-интерфейс; не придумывайте Ethernet-шлюз, если соединение его не использует.
WireGuard-интеграция OpenWrt умеет создавать зависимость от маршрута к endpoint, но явный маршрут удобен для проверки нашей простой схемы с постоянным IP. После включения VPN команда выше по-прежнему должна показывать WAN. Если DHCP провайдера позднее изменит шлюз, вручную сохранённый next-hop придётся обновить; при смене адреса VPS обновите и маршрут /32. Туннель не может доставлять собственные зашифрованные пакеты внутри самого себя.
В дополнительных настройках WAN задайте метрику 100, у wg_maatrix — 20. Меньшее число предпочтительнее. Сохраните изменения. Не удаляйте WAN: через него физически устанавливается WireGuard-соединение.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX: NVMe, AMD EPYC, root-доступ, локации США, Великобритания, Франция и Россия. Оплата картой РФ и по СБП.
АРЕНДОВАТЬ СЕРВЕРFirewall: впускаем домашние устройства в туннель
В Network → Firewall → Zones создайте зону vpn и включите в неё только wg_maatrix. Параметры:
| Настройка | Значение |
|---|---|
| Input | Reject |
| Output | Accept |
| Forward | Reject |
| Masquerading | Включено |
| MSS clamping | Включено |
| Разрешённое перенаправление | lan → vpn |
Обратное общее разрешение vpn → lan не требуется: ответы на установленные соединения пропускает отслеживание состояния. Masquerading подменяет домашний адрес адресом роутера в туннеле; серверу не понадобится отдельный маршрут к каждому ноутбуку. Не помещайте VPN в доверенную LAN-зону ради исчезновения ошибки. Как устроены зоны OpenWrt.
Пока оставьте существующее lan → wan: сначала проверим соединение, затем запретим обход VPN.
DNS и IPv6: два выхода, о которых забывают
Для нашей IPv4-схемы используйте числовой IPv4 в Endpoint. Это позволяет запустить туннель независимо от DNS. В Network → DHCP and DNS задайте IPv4 DNS из профиля в DNS forwardings и включите Ignore resolve file, чтобы не подмешивать резолвер провайдера. Не используйте примерный внутренний DNS, если на сервере такого сервиса нет.
Домашним устройствам оставьте DNS-адрес самого роутера, получаемый по DHCP. После изменения переподключите тестовый ноутбук. Если в браузере включён собственный защищённый DNS, отдельно учитывайте его: проверка системного DNS не описывает настройки каждого приложения.
Не замыкайте синхронизацию часов внутри ещё не поднятого VPN. В System → System → Time Synchronization задайте доступный числовой NTP-адрес, например 162.159.200.1 из документации Cloudflare, и отдельный маршрут /32 к нему через WAN. Для PPPoE достаточно его интерфейса без выдуманного Ethernet-шлюза. После холодной загрузки часы должны восстановиться до туннеля: откат времени назад способен помешать повторному рукопожатию из-за проверки временных меток WireGuard.
IPv4-туннель не охватывает IPv6 автоматически. Если ваш профиль не предусматривает IPv6, для охватываемой сети отключите раздачу внешнего IPv6-префикса, Router Advertisement и DHCPv6 в настройках LAN, а также WAN6, если он используется только этой сетью. Затем переподключите клиентов: старые адреса могут оставаться до истечения срока действия. Полноценный IPv6-туннель требует адреса, маршрутов и правил на обеих сторонах, а не одной строки ::/0. Рекомендации OpenWrt по DNS и IPv6.
Проверка, которая отличает интернет от зелёной лампочки
Примените подготовленные изменения и включите wg_maatrix. Команда wg show должна показывать недавний handshake и передачу данных. Затем на ноутбуке из LAN, без другого VPN, проверьте внешний IPv4: он должен совпасть с выходом VPS. Откройте несколько сайтов, проверьте DNS и отсутствие прямого IPv6.
Если handshake есть, но IP домашний, смотрите маршруты. Если IP меняется, а имена не открываются — DNS. Если мелкие страницы работают, а большие зависают — проверьте MTU из исходного профиля и измерьте результат при меньшем значении. Не назначайте всей сети случайное «магическое число» из комментариев.
Теперь решите, что важнее при аварии: обычный интернет или запрет обхода. Для второго варианта удалите разрешение lan → wan, оставив lan → vpn. Проверьте также другие разрешающие правила и отдельные гостевые зоны. Остановите VPN и попробуйте открыть новый сайт: клиент должен потерять внешний доступ, сохранив доступ к панели роутера.
Такое ограничение относится к пересылаемому трафику. DNS-запросы самого роутера — отдельный поток. Для блокировки обычного DNS и DoT через WAN можно добавить правило ниже. Если сам VPN использует UDP-порт 53 или 853, сначала создайте перед блокировкой узкое разрешение исходящего трафика роутера к IPv4 VPS и именно этому UDP-порту. Без такого исключения блокировка остановит и туннель; это правило не различает протоколы по содержимому пакетов.
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
Оно не перекрывает произвольный DoH на порту 443 и другие службы самого роутера. Не выдавайте проверенный запрет LAN → WAN за универсальную блокировку любого возможного исходящего пакета.
Как вернуть всё назад
Из локальной сети остановите wg_maatrix, восстановите lan → wan, удалите созданное DNS-правило и верните прежние настройки DNS/IPv6 из своих записей. При необходимости восстановите сохранённый архив. Когда базовая схема работает, можно переходить к отдельным устройствам и policy-based routing. Сначала добьёмся, чтобы поезд ездил по рельсам, а уже потом будем составлять расписание для каждого пассажира.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX: NVMe, AMD EPYC, root-доступ, локации США, Великобритания, Франция и Россия. Оплата картой РФ и по СБП.
АРЕНДОВАТЬ СЕРВЕРОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →