📡 Статья

Как мы сделали заказчику 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, а перед этим сняли полную копию флеша: вернуть заводскую систему можно в любой момент.

Как роутер решает, что куда

Представьте сортировочный пункт на входе в интернет:

  1. Имена сайтов. Устройство спрашивает «где находится такой-то сайт». Российские имена роутер спрашивает напрямую у Яндекса, остальные — через VPN.
  2. Адреса. Подсети России — их 8 691 — роутер пересылает напрямую силами самой системы, с ускорением. VPN-программа этот трафик даже не видит, и он не тратит слабый процессор.
  3. Всё остальное попадает в 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 на обычный домашний роутер?
На любой — нет. Нужен роутер, на который ставится OpenWrt, с USB-портом и хотя бы 128 МБ памяти. MikroTik hAP ac² подходит и стоит на Авито около 6 000 ₽. На роутерах провайдеров и большинстве бюджетных моделей памяти и процессора на современное VPN-ядро не хватит.
Будут ли работать банки и Госуслуги через такой роутер?
Да, и без VPN. Российские сайты и подсети роутер узнаёт сам и пускает напрямую, мимо туннеля, — для банков и Госуслуг вы выходите в интернет из России, как обычно. Через VPN идёт только зарубежное.
Какую скорость даёт VPN на роутере за 6 000 ₽?
Около 48 Мбит/с через VPN и до 350 Мбит/с напрямую на канале 500 Мбит/с. Этого хватает небольшому офису на почту, облака, видеозвонки и нейросети. Для 10+ сотрудников с тяжёлым трафиком нужен мини-ПК на Intel N100 вместо роутера — программа под него уже собирается.
Что будет, если роутер сломается или выключат свет?
После отключения питания роутер сам поднимает VPN примерно за 2 минуты. Если VPN не поднялся, зарубежное закрыто, а российское работает — офис не уходит в интернет мимо туннеля. О сбое роутер сам присылает отчёт, а помочь можно удалённо, без выезда.
Сколько стоит такой роутер под ключ?
В нашем кейсе роутер MikroTik hAP ac² заказчик купил сам, с рук на Авито за 6 000 ₽. Нам он заплатил 12 000 ₽: прошивка, приложение OshaVPN для его устройств и подписка на год. Абонентской платы за сам роутер нет.

Есть вопрос по вашему сайту?

Разберём бесплатно: посмотрим сайт, хостинг и индексацию и скажем, что имеет смысл менять, а что нет.