OpenVPN на OpenWrt: от файла .ovpn до VPN для всей домашней сети
Вам прислали файл client.ovpn. Телефон его принял, подключился и счастлив. Роутер посмотрел на тот же файл с выражением системного администратора, которому перед пятницей принесли «маленькую задачку»: где интерфейс, где зона firewall, кому разрешено пользоваться соединением?
Это нормальная разница ролей. Приложение на телефоне обслуживает один телефон, а OpenWrt отвечает за целую сеть. Сейчас дадим ему недостающие указания. В результате домашние устройства смогут выходить через ваш OpenVPN-сервер без установки клиента на каждое из них.
Содержание
- Договоримся, что именно настраиваем
- Открываем файл, но не устраиваем ремонт сертификатов
- Ставим OpenVPN и загружаем профиль
- Объясняем OpenWrt, где находится туннель
- Меняем дорогу в интернет, сохраняя дорогу к серверу
- Настраиваем DNS без надежды на магию импорта
- Первый запуск: четыре наблюдения вместо одного индикатора
- Что случится, когда VPS перезагрузится
- Если что-то пошло не так
Готовый OpenVPN-сервер для OpenWrt
Закажите VPS MAATRIX в США, Великобритании или Франции с автоматической установкой OpenVPN. Получите отдельный клиентский профиль для роутера и подключите нужные устройства по этой инструкции.
ВЫБРАТЬ СЕРВЕР С OPENVPNДоговоримся, что именно настраиваем
Ниже — один OpenVPN-клиент на уже работающей OpenWrt, обычная LAN и один провайдер. Речь о подключении к VPS, а не о VPN-сервере для входа домой. Если вам нужен удалённый доступ к домашнему NAS, маршруты будут другими.
Понадобятся доступ к LuCI, резервная копия настроек и рабочий .ovpn с сертификатами. В MAATRIX можно развернуть VPS с автоматической установкой OpenVPN и получить профиль в карточке сервера. Текущий профиль MAATRIX использует сертификатную авторизацию: пароль от личного кабинета и root-пароль сервера в поля VPN-клиента не вводятся.
VPS в США, UK или Франции задаёт место выхода трафика. Сначала выбирайте локацию под маршрут и задачи, затем проверяйте работу нужного сервиса. Смена IP сама по себе не гарантирует доступ к ИИ: у сервиса остаются требования к аккаунту и поддерживаемым регионам.
Если сервер уже содержит рабочие приложения, не используйте переустановку ОС ради эксперимента с VPN: она удаляет данные. Для нового домашнего туннеля проще подготовить отдельный VPS.
Открываем файл, но не устраиваем ремонт сертификатов
Сделайте копию .ovpn для роутера. Файл должен содержать настоящий адрес сервера, параметры протокола и встроенные блоки сертификатов. Если вместо них указаны пути к файлам на чужом компьютере, потребуется объединённый профиль от администратора сервера.
Не меняйте proto udp на TCP в надежде улучшить соединение: сервер должен слушать выбранный транспорт и порт. Не удаляйте remote-cert-tls server, verify-x509-name, tls-auth или tls-crypt, чтобы пропала ошибка. Удалить проверку личности проще, чем исправить паспорт, но именно поэтому такой ремонт плох.
На роутере проверьте дату и время: неверные часы могут сделать действующий сертификат «ещё не выданным» или «уже истёкшим». Название ошибки в журнале полезнее десятка случайных переключений шифра. Зачем OpenVPN нужна проверка сертификата сервера.
Ставим OpenVPN и загружаем профиль
В System → Software обновите список пакетов и установите openvpn-openssl и luci-app-openvpn. Перезайдите в LuCI: появится VPN → OpenVPN. Аналог через SSH:
# OpenWrt 25.12: пакетный менеджер apk
apk update
apk add openvpn-openssl luci-app-openvpn
# OpenWrt 24.10: пакетный менеджер opkg
opkg update
opkg install openvpn-openssl luci-app-openvpn
Не смешивайте репозитории разных выпусков. OpenWrt 24.10 — старая ветка; для нового развёртывания ориентируйтесь на поддерживаемую версию своей модели. Переход OpenWrt на apk.
В разделе OpenVPN найдите загрузку конфигурации, задайте имя maatrix и импортируйте .ovpn. Откройте редактирование импортированного экземпляра. Для единственного туннеля замените строку dev tun на:
dev tun_maatrix
Это имя будущего сетевого устройства, а не адрес сервера. Фиксированное имя позволит однозначно привязать firewall к нашему соединению. Не запускайте второй профиль с тем же именем устройства. Пока не включайте автозапуск экземпляра: сначала закончите настройку сети. Установка клиента через LuCI.
Объясняем OpenWrt, где находится туннель
В Network → Interfaces добавьте интерфейс с именем ovpn_maatrix, протоколом Unmanaged и устройством tun_maatrix. Пока OpenVPN остановлен, устройства может не быть в списке: введите это имя в поле собственного устройства. Интерфейс не должен сам получать DHCP-адрес: адрес туннеля назначает процесс OpenVPN.
Затем в Network → Firewall создайте отдельную зону ovpn:
- покрываемая сеть —
ovpn_maatrix; - Input — Reject, Output — Accept, Forward — Reject;
- Masquerading и MSS clamping — включены;
- разрешено перенаправление из
lanвovpn.
NAT нужен для обычной схемы с готовым клиентским профилем: сервер видит адрес VPN-клиента, а не незнакомую домашнюю подсеть. Разрешать все подключения из VPN в LAN не требуется. Ответы на запросы устройств обрабатываются как часть уже установленных соединений.
Не добавляйте tun_maatrix одновременно в WAN и новую зону: одна понятная привязка проще для проверки и дальнейшей блокировки обхода. Как именно сети привязываются к зонам, объясняет обзор firewall OpenWrt.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX: NVMe, AMD EPYC, root-доступ, локации США, Великобритания, Франция и Россия. Оплата картой РФ и по СБП.
АРЕНДОВАТЬ СЕРВЕРМеняем дорогу в интернет, сохраняя дорогу к серверу
Полный IPv4-туннель требует перенаправления маршрутов. В клиентской копии профиля должна применяться опция:
redirect-gateway def1
Она может уже присутствовать в файле или приходить от сервера. Если её нет, добавьте одну строку в клиентскую конфигурацию. Профили с route-nopull или фильтрами отклонения маршрутов требуют отдельного разбора: такие настройки могли быть сделаны для доступа только к офисной сети.
def1 создаёт две более точные половины IPv4-пространства через VPN, сохраняя обычный маршрут по умолчанию. OpenVPN также обеспечивает путь к своему серверу через прежний шлюз. После запуска проверьте:
ip -4 route
ip -4 route get 203.0.113.10
ip -4 route get 1.1.1.1
Во второй команде подставьте настоящий IPv4 VPS: он должен достигаться через WAN. Третья проверяет обычный внешний адрес: ожидаем tun_maatrix. Если уже настроены policy routing или несколько WAN, одной этой инструкции недостаточно — существующие правила могут направлять пакеты в другие таблицы. Значение redirect-gateway в документации OpenVPN.
Настраиваем DNS без надежды на магию импорта
На Linux сам факт получения DNS от OpenVPN-сервера не всегда означает, что системный резолвер начал им пользоваться. Для нашей схемы зададим DNS явно.
В Network → DHCP and DNS впишите в DNS forwardings разрешённый вашим сервером IPv4-резолвер, например 1.1.1.1, и включите Ignore resolve file. Если администратор VPN выдал внутренний DNS, используйте именно его и убедитесь, что он доступен через туннель. Домашние устройства должны получать адрес роутера как DNS по DHCP.
Используйте числовой IP VPS в remote, как в готовом профиле MAATRIX: тогда поднятие туннеля не зависит от предварительного DNS-запроса. Для сервера с доменным адресом требуется отдельно продумать разрешение имени до подключения; просто запретить весь DNS и надеяться на автозапуск не получится.
Синхронизация времени тоже должна работать до VPN. В System → System → Time Synchronization включите NTP-клиент с доступным числовым адресом, например 162.159.200.1 из документации Cloudflare. В Network → Routing добавьте для него маршрут /32 через настоящий WAN-шлюз; для PPPoE используйте его интерфейс без выдуманного Ethernet-шлюза. Если шлюз меняется по DHCP, обновляйте сохранённый next-hop. Тогда после отключения питания роутер сможет выставить часы до проверки сертификатов, не ожидая DNS внутри ещё не запущенного туннеля.
Первый запуск: четыре наблюдения вместо одного индикатора
Включите автозапуск и запустите профиль в VPN → OpenVPN, затем откройте Status → System Log. Для поиска через SSH:
logread -e openvpn
ip address show dev tun_maatrix
Ожидаем завершённую инициализацию, адрес у туннеля и нужные маршруты. Но экзамен сдаёт не роутер, а домашний ноутбук:
- На ноутбуке выключите отдельный VPN и прокси.
- Проверьте внешний IPv4: он должен соответствовать VPS.
- Откройте сайты по именам и проверьте DNS.
- Проверьте IPv6: он не должен незаметно выходить через домашнего провайдера.
Если профиль только IPv4, отключите для охватываемой LAN раздачу внешнего IPv6-префикса, RA и DHCPv6; отключите WAN6, если он обслуживает только эту сеть. Переподключите клиентов. Поддержку IPv6 через VPN нужно настраивать с адресами и маршрутизацией на сервере, а не дописывать случайную директиву к готовому IPv4-профилю.
Что случится, когда VPS перезагрузится
Пока разрешено lan → wan, при исчезновении VPN-маршрутов возможен обычный выход через провайдера. Это удобно для доступности, но не является kill switch.
Для запрета обхода удалите разрешение lan → wan, сохранив lan → ovpn. Проверьте другие правила, гостевые сети и VLAN: они не становятся защищёнными от одного изменения основной LAN. Остановите профиль и откройте новое соединение с ноутбука. Интернет должен перестать работать, доступ к LuCI — сохраниться.
DNS самого роутера не проходит через LAN-forwarding. Если требуется исключить обычные DNS/DoT-запросы в WAN при падении туннеля, можно добавить выходное правило ниже. Если OpenVPN слушает 53 или 853, сначала разрешите выше него исходящие соединения роутера только к IPv4 VPS, выбранному транспорту и VPN-порту. Иначе правило, блокирующее эти порты, остановит сам OpenVPN. Для стандартного подключения на другом порту такое исключение не нужно.
uci set firewall.ovpn_dns_block=rule
uci set firewall.ovpn_dns_block.name='Block-router-DNS-on-WAN'
uci set firewall.ovpn_dns_block.dest='wan'
uci set firewall.ovpn_dns_block.proto='tcp udp'
uci set firewall.ovpn_dns_block.dest_port='53 853'
uci set firewall.ovpn_dns_block.target='REJECT'
uci commit firewall
service firewall restart
Это не запрет любого трафика самого OpenWrt: DoH на 443 и сторонние службы требуют собственных правил. Проверяйте заявленный результат, а не красивое название выключателя.
Если что-то пошло не так
TLS-ошибка — сначала время, сертификаты и параметры сервера. Успешное соединение без смены IP — маршруты и привязка LAN. Новый IP без сайтов — DNS. Проблемы только с большими загрузками — MTU/MSS и потери, а не повод отключать проверку сертификата.
Чтобы вернуть прежний интернет, из LAN остановите профиль, восстановите lan → wan, удалите созданное DNS-правило и верните прежние DNS/IPv6-настройки. Профиль и резервную копию сохраните для дальнейшего разбора. Хорошая настройка отличается от приключения тем, что у неё заранее предусмотрена дорога домой.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX: NVMe, AMD EPYC, root-доступ, локации США, Великобритания, Франция и Россия. Оплата картой РФ и по СБП.
АРЕНДОВАТЬ СЕРВЕРОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →