Как мы сделали заказчику VPN на весь офис из MikroTik с Авито
Заказчик купил MikroTik с рук на Авито за 6 000 ₽, мы поставили на него свою прошивку на OpenWrt и программу — 12 000 ₽ вместе с подпиской на год. Весь офис получает VPN без приложений, российское идёт напрямую, при сбое зарубежное закрыто. Рассказываем, как это устроено, почему сеть «валилась» на второй день и как правка шифра ускорила VPN вчетверо.
Руководитель небольшого офиса пришёл к нам с простой просьбой: «Хочу, чтобы VPN был на весь офис, а не в каждом телефоне». Сотрудники ничего не ставят, банки и Госуслуги работают как обычно, а зарубежные сервисы — через VPN. И чтобы роутер не пришлось чинить выездом.
Роутер заказчик купил сам — MikroTik hAP ac² с рук на Авито за 6 000 ₽. От нас — своя прошивка, программа для роутера, приложение OshaVPN для его устройств и подписка на год: за это он заплатил 12 000 ₽. Ниже — как мы это сделали, на чём споткнулись и почему на второй день пришлось выпустить восемь версий. Технические подробности поясняю по ходу. Полный разбор — в кейсе OshaVPN Router.
Почему роутер, а не приложение
Приложение VPN нужно поставить на каждый телефон и ноутбук, объяснить, как им пользоваться, и следить, чтобы его не выключили. А ещё есть телевизор в переговорной, принтер и гости.
Роутер закрывает всё разом. Любое устройство, подключённое к Wi-Fi или кабелю, уже за VPN, и при этом российский трафик идёт напрямую. Сотрудник даже не знает, что VPN есть, — у него просто всё открывается.
Роутер заказчика и первый сюрприз
ТЗ писали под MikroTik hAP ac — так модель называлась в переписке. Когда роутер заказчика подключили к ноутбуку, он представился как hAP ac². Названия отличаются одним значком, а железо разное: у первого процессор MIPS, у второго — четыре ядра ARM. Прошивки не взаимозаменяемы.
Урок простой: модель проверять по самому устройству, а не по объявлению или переписке. Нам это стоило одной пересборки: программа от железа почти не зависит, а ядро собирается под любую архитектуру.
У hAP ac² 128 МБ памяти, 16 МБ флеша и USB-порт. Для роутера неплохо, для современного VPN-ядра — впритык. Это ещё аукнется.
Почему не родная система MikroTik и не WireGuard
RouterOS — система MikroTik — закрыта. Своё VPN-ядро в неё не поставить, контейнеры на этой модели не поддерживаются, а встроенные средства не умеют протокол VLESS, на котором работают наши серверы. WireGuard заказчик отверг сразу: внутри российских сетей его режут, и он нестабилен.
Поэтому роутер переведён на OpenWrt — открытую систему для роутеров. Прошивали по сети, без пароля от RouterOS, а перед этим сняли полную копию флеша: вернуть заводскую систему можно в любой момент.
Как роутер решает, что куда
Представьте сортировочный пункт на входе в интернет:
- Имена сайтов. Устройство спрашивает «где находится такой-то сайт». Российские имена роутер спрашивает напрямую у Яндекса, остальные — через VPN.
- Адреса. Подсети России — их 8 691 — роутер пересылает напрямую силами самой системы, с ускорением. VPN-программа этот трафик даже не видит, и он не тратит слабый процессор.
- Всё остальное попадает в VPN-ядро Xray. Оно ещё раз смотрит имя сайта: российский сайт на зарубежном хостинге уйдёт напрямую, остальное — в туннель через самый быстрый живой сервер.
Сервер выбирается замером: раз в минуту роутер проверяет все входы подписки и берёт самый быстрый. Если не отвечают все, он спрашивает у сервера страницу состояния и ждёт, а не перебирает входы вслепую.
Что будет, если что-то сломается
Тут заказчик принял важное решение: пока VPN не работает, зарубежное закрыто, российское работает. Иначе при сбое все устройства молча пошли бы в интернет со своего настоящего адреса, и никто бы этого не заметил.
Программа и VPN-ядро живут на USB-флешке: ядро весит 32 МБ, а во внутренней памяти роутера после системы остаётся около 5 МБ. Защита при этом лежит во внутренней памяти и включается, даже если флешку вынули. Без флешки роутер остаётся роутером: интернет и российские сайты работают.
Обновления приходят по воздуху ночью и проверяются по подписи. Новая версия сама подтверждает, что VPN поднялся. Не поднялся за 90 секунд — роутер откатывается на прежнюю. Если новая версия не запускается вовсе, через 5 минут её откатывает загрузчик во внутренней памяти. Мы прогнали обновления на настоящем роутере пять раз подряд.
День второй: «сетка валится и тормозит»
Роутер увезли на домашний канал 500 Мбит/с, и пришла жалоба: связь иногда отваливается, а когда работает — медленно. Самое простое — начать крутить настройки наугад. Мы сначала научили роутер рассказывать о себе: журнал на флешке, «пульс» раз в минуту (память, нагрузка, соединения) и автоотчёты на сервер. За день вышло восемь версий, и все правки — по замерам.
Память: ядро «пылесосило» само себя
Профилировщик показал, что VPN-ядро тратит 70% процессора на уборку памяти. Один из транспортов держал по 512 КБ буфера на каждое соединение. В обычном доме открыто 35 соединений — это 18 МБ из 29, при потолке 40. Ядро чистило память семь раз в секунду и ни на что другое не успевало.
На роутере этот транспорт переведён в другой режим: занятая память упала с 29 до 5–11 МБ, уборок — 33 в час вместо семи в секунду. Скорее всего, это и была причина первой самопроизвольной перезагрузки.
Шифр: правка, которая ускорила VPN вчетверо
У процессора роутера нет аппаратного ускорения шифра AES. Замер прямо на роутере: AES даёт 25 Мбит/с на ядро, ChaCha20 — 75. Наши серверы ChaCha20 умеют, но роутер, притворяясь браузером Chrome, называл AES первым, и сервер выбирал его.
Мы поправили VPN-ядро: на процессоре без AES первым предлагается ChaCha20. Так же делает и настоящий Chrome на слабых телефонах, поэтому для провайдера соединение выглядит как прежде. Результат — 42 Мбит/с в один поток вместо 10, около 48 в несколько потоков. Дальше упор в процессор.
Кабель: «медленно напрямую»
Напрямую тоже было медленно. Оказалось — битая пара в коннекторе: порт то пропадал на несколько секунд, то поднимался на 100 Мбит/с вместо гигабита. После переобжима — гигабит и до 350 Мбит/с с роутера. Не всё лечится программой.
Проверки на отказ
Напоследок проверили то, ради чего всё затевалось:
- выдернули питание — VPN поднялся сам примерно за 2 минуты;
- отключили интернет на 8 секунд — связь вернулась сама;
- вынули флешку — зарубежное закрылось, российское работало; после вставки VPN поднялся за 11 секунд.
Цифры
| Что | Значение |
|---|---|
| Роутер (купил заказчик) | MikroTik hAP ac² с рук на Авито, 6 000 ₽ |
| Наша работа: прошивка, программа, приложение и подписка на год | 12 000 ₽ |
| Скорость через VPN | ~48 Мбит/с загрузка, ~38 отдача (было ~10) |
| Скорость напрямую | до 350 Мбит/с на канале 500 Мбит/с |
| Подсетей России в «быстром пути» | 8 691 |
| Обновление программы | 15–20 секунд, качаются только изменения |
| Подъём VPN после отключения питания | ~2 минуты |
Кому это подходит
Небольшому офису или семье, где нужно, чтобы зарубежные сервисы — облака, почта, видеозвонки, нейросети — просто работали на всех устройствах, а российские шли напрямую. Без приложений, без инструкций для сотрудников и без выездов на каждый сбой.
Честное ограничение: hAP ac² упирается в процессор около 48 Мбит/с через VPN. Офису на 10+ сотрудников с тяжёлым трафиком лучше мини-ПК на Intel N100 с аппаратным AES — программа под него уже собирается.
Если хотите так же у себя — напишите нам: скажем, какой роутер купить или подойдёт ли тот, что уже есть, и прошьём его. Подробности про корпоративный VPN — на странице VPN для команды.
Вопросы по теме
Можно ли поставить VPN на обычный домашний роутер?
Будут ли работать банки и Госуслуги через такой роутер?
Какую скорость даёт VPN на роутере за 6 000 ₽?
Что будет, если роутер сломается или выключат свет?
Сколько стоит такой роутер под ключ?
Ещё почитать
Как сайт попадает в ответы Алисы, ChatGPT и Google, и почему это занимает недели
Ассистенты не читают сайты напрямую: они берут ответы из индексов обычных поисковиков. Объясняем по-человечески, что нужно сделать на сайте, что нажать в кабинетах и почему результат приходит через две–восемь недель.
Читать →Как составить ТЗ на сайт: простая инструкция для заказчика и шаблон
Что написать подрядчику, чтобы получить тот сайт, который вы хотели. Простыми словами: десять вопросов с примерами, чек-лист SEO для подрядчика, каждый термин со ссылкой на объяснение и бесплатный шаблон в Word.
Читать →Есть вопрос по вашему сайту?
Разберём бесплатно: посмотрим сайт, хостинг и индексацию и скажем, что имеет смысл менять, а что нет.