Блог им. Alexniko

Год с собственным VPN на VPS: дневник, счёт за электричество и признание в конце

У меня было: один VPS за 5 евро во Франкфурте, домашний роутер Keenetic, iPhone, рабочий ноут на macOS, телевизор, который умеет ровно то, что умеет, жена, тёща и полное отсутствие желания кому-либо что-либо объяснять. Не то чтобы всё это требовало личного VPN-сервера, но если уж начал разбираться, надо доводить до конца.

Ниже — не инструкция. Инструкций в сети столько, что можно поднять сервер, ни разу не подумав. Это дневник: что я выбрал, где ошибся, сколько это в итоге стоило и почему через год я всё-таки принял решение, которое год назад счёл бы поражением.

Зачем это лично мне

Тезисно, без пафоса про свободу информации:

● Рабочие сервисы, часть которых просто не отвечает с российского адреса. Не «запрещено», а «нас тут не ждут»: некоторые SaaS сами закрывают доступ по географии.

● Документация и репозитории, которые то открываются, то нет, причём в самый неподходящий момент.

● Публичный Wi-Fi в аэропортах и кофейнях, к которому я отношусь примерно как к чужой зубной щётке.

● Домашние: жене нужны её сериалы, тёще — её рецепты. Обеим нужно, чтобы просто работало, и ни одна из них не будет нажимать кнопку в приложении перед просмотром.

Последний пункт, как выяснится дальше, и определил всё.

Из неочевидного: через туннель иногда становится быстрее. Маршрут до сервиса может оказаться короче, чем тот, которым вас ведёт провайдер. Работает и наоборот — неудачная локация легко добавит вам сто миллисекунд из ниоткуда. У меня, например, Нидерланды стабильно давали лучший пинг, чем Финляндия, хотя географически всё должно было быть наоборот. Магистрали живут своей жизнью.

Выбор протокола: чем я руководствовался

Требования у меня были не такие, как у авторов сервисов. Мне не нужна была массовость, мне нужно было три вещи:

1. Чтобы работало на iPhone без танцев.

2. Чтобы работало на роутере — потому что телевизор и тёщин планшет я настраивать не буду.

3. Чтобы не отваливалось раз в неделю.

IKEv2/IPsec. Начал с него, потому что нативный: на iOS профиль ставится без приложений, MOBIKE переживает переход с Wi-Fi на мобильную сеть. Красиво. Продержалось полтора месяца. Потом у меня начался цирк: на домашнем интернете работает, на мобильном — нет. У жены на другом операторе — наоборот. Причина простая: протокол не скрывается. Обмен идёт по UDP/500 и UDP/4500, начало сессии видно невооружённым глазом. Как только на пути появляется что-то, что смотрит на форму трафика, а не на порт, IKEv2 опознаётся первым и целиком.

L2TP/IPsec. Даже не пробовал всерьёз. Двойная инкапсуляция, лишний оверхед, узнаваемость та же. Смысла нет.

OpenVPN. Умеет TCP/443, что звучит как маскировка под HTTPS, но по факту рукопожатие у него своё и легко отличимое. Плюс TCP-в-TCP на мобильной сети в вечерний час — это отдельный вид страдания: одна потеря пакета и всё встаёт. На роутер ставится, но грузит его так, что мой Keenetic выдавал стыдные цифры.

WireGuard. Влюбился с первого конфига: пять строк, работает в ядре, скорость упирается в канал, а не в процессор. Прожил у меня три месяца и повторил судьбу IKEv2. Причина та же и вполне конкретная: у handshake-пакета первый байт — константа, а размеры пакетов рукопожатия фиксированы. Опознать такое — задача на уровне «сравнить два числа». Внутри доверенной сети — лучший выбор. Как способ пройти через недоверенную — нет.

AmneziaWG. Тот же WireGuard, но с добавленным мусором перед рукопожатием и переопределёнными сигнатурными байтами. Крипта не изменилась, изменилась узнаваемость. Скорость почти та же. Вот это уже жило нормально, месяцами, и до сих пор у меня основной вариант там, где UDP не душат.

VLESS + Reality. Здесь принципиально другой подход, и он мне понравился больше всех. Соединение не изображает HTTPS — оно проксирует реальное TLS-рукопожатие к реальному чужому сайту. Со стороны видно валидный TLS к живому популярному ресурсу, потому что сертификат настоящий и чужой. Если кто-то решит постучаться на мой сервер напрямую — получит содержимое сайта-донора. Бонусом не нужен свой домен и не надо продлевать сертификаты.

Остановился на схеме: VLESS+Reality как основной, AmneziaWG как резерв. Не «выбрал протокол», а «держу два и переключаюсь». К этому выводу, как я понял, все рано или поздно приходят.

Практика

Сервер брал самый простой: одно ядро, 1 ГБ памяти, 25 ГБ диска. Для семьи из трёх человек этого хватает с запасом — упирается всё в канал провайдера, а не в машину. Локацию выбирал не по карте, а замерами: поднял три пробных сервера в разных странах, погонял сутки, оставил тот, что дал лучший реальный пинг. Совет «бери что ближе» — только первое приближение, проверять всё равно надо.

Стек в итоге такой:

● Docker и compose — чтобы не разводить зоопарк в системе.

● Xray-core — ядро для VLESS/Reality.

● 3x-ui — панель, чтобы не редактировать JSON руками при каждом чихе.

● chrony — синхронизация времени, и это не мелочь.

● Prometheus + node_exporter — статистика.

 

Reality-inbound в сокращённом виде:
Год с собственным VPN на VPS: дневник, счёт за электричество и признание в конце

 

И AmneziaWG, где вся соль в параметрах обфускации:
Год с собственным VPN на VPS: дневник, счёт за электричество и признание в конце

 

Отдельно подчеркну, потому что об этом молчат все гайды: H1–H4 нужно генерировать свои. Если вы скопировали их из популярной инструкции, вы вместе с тысячей других читателей той же инструкции сделали новую узнаваемую подпись. Смысл обфускации при этом обнуляется.

Мои личные грабли, все четыре

Время. Reality не терпит расхождения часов. На VPS время уезжает охотно, особенно после ребута. Я потратил вечер на диагностику «почему вдруг всё умерло», прежде чем догадался посмотреть date. Теперь chrony стоит первым пунктом.

MTU. Классика, которую все проходят. Симптом издевательский: пинг идёт, мелкие страницы открываются, а крупные файлы и видео зависают. Лечится подбором значения, но пока не знаешь — выглядит как мистика.

Донор. Взял первый популярный CDN-хост. У меня работало, у жены на другом операторе — нет, потому что до этого хоста у неё был свой маршрут и своя реальность. Заменил на менее очевидный — стало ровно у обоих.

Роутер. Самое обидное. На Keenetic с VLESS всё оказалось не так гладко, как в статьях: нужна прошивка с нужными пакетами, а производительность на дешёвом железе просаживается заметно. Половина смысла затеи была именно в роутере — чтобы телевизор и планшет работали сами. На эту половину я угробил больше времени, чем на весь остальной сервер.

Статистика: что я реально смотрел

Начал с красивого дашборда: CPU, память, трафик, аптайм. Через месяц понял, что смотрю не туда. Аптайм 100% ничего не значит, если у жены не открывается её сериал.

Что оказалось полезным на самом деле:

Доля успешных подключений. Если из десяти попыток проходят три — это блокировка, а не «никто не пользовался».

Разбивка по устройствам. Позволяет понять, у кого именно проблема, до того как об этом сообщат в резкой форме.

Время до первого байта. Люди не чувствуют мегабиты. Они чувствуют задержку перед открытием страницы.

Логи рестартов контейнера. Пара инцидентов оказалась банальным OOM на гигабайте памяти.

Ирония в том, что я собирал статистику, чтобы следить за сервером, а закончил тем, что следил за настроением домашних. Второй показатель точнее.

Честная бухгалтерия за год

Раз уж дневник, посчитаем без самообмана.

Деньги: VPS 5 € в месяц, за год около 5 000 ₽. Плюс два месяца я держал вторую машину для резерва — ещё примерно 900 ₽. Итого около 6 000 ₽.

Время — и вот здесь начинается неприятное:

● первичная настройка со всеми чтениями и экспериментами: около 12 часов;

● возня с роутером: ещё часов 8, растянутых на несколько подходов;

● диагностика инцидентов, обновления, переезд после того как подсеть провайдера попала под раздачу: примерно 2–3 часа в месяц, то есть часов 30 за год.

Итого около 50 часов. Даже по скромной ставке это существенно дороже самого сервера. И это без учёта той категории расходов, которую в таблицу не внесёшь: звонки «у меня опять не работает» в момент, когда ты в отпуске, в дороге или просто не хочешь ничего чинить.

Ключевой момент наступил в феврале. Я был в командировке, у меня отвалилась нода, и я по телефону, стоя в чужом коридоре, объяснял жене, как зайти в панель и переключить inbound. Технически я справился. По-человечески это был провал: я построил систему, единственной точкой отказа которой являюсь я сам.

Чем всё закончилось

Сервер я не выключил — он живёт, и я им пользуюсь для рабочих задач, где мне нужен именно свой контролируемый выход. Мне это интересно, и как хобби я его не брошу.

Но домашний контур я с себя снял и перевёл на готовый сервис. Взял BastionVPN, и решающим аргументом стал ровно тот пункт, на котором я год спотыкался: он ставится на роутер. Один раз настроил — и весь дом под ним, включая телевизор и планшет, которым отдельный клиент не поставишь. До 10 устройств одновременно, локаций около сорока, оплата обычной российской картой.

По деньгам вышло смешно: 500 ₽ в месяц помесячно и меньше 250 ₽ в месяц, если брать сразу на два года. То есть дешевле моего VPS — при том, что мне больше не надо ничего обновлять, чинить и объяснять по телефону из чужого коридора. Год назад я бы сказал, что платить за то, что умеешь сделать сам, глупо. Сейчас я считаю иначе: я платил за это всё время, просто не деньгами.

Перед покупкой взял пробный доступ за 10 ₽ на сутки — и это правильный формат: я не читал обещания про гигабиты, а замерил у себя, на своём операторе, в девять вечера, когда канал загружен, и на своём роутере. Оформлял через телеграм-бот — переписка, кнопки, готовый конфиг, без личных кабинетов. Поддержку тестировал предметно, с вопросом про старый телевизор: ответил человек, не сценарное дерево, и по шагам довёл до результата.

Отдельно скажу то, что должен сказать инженер инженеру. Тёща теперь не звонит мне по вопросам интернета. Ни одного раза за четыре месяца. Это метрика, которой не было в моём дашборде, и она оказалась главной.

Выводы для тех, кто собирается

● Поднять свой сервер сегодня технически просто. Сложно не поднять, а эксплуатировать.

● Один протокол — это одна точка отказа. Держите два и умейте переключиться.

● Всё, что имеет постоянную сигнатуру, будет опознано. Вопрос только в сроках.

● Копипаста параметров обфускации из гайдов ломает саму обфускацию.

● Большинство инцидентов — это время, MTU и старый клиент, а не хитрая фильтрация.

● Честно считайте своё время. Если сервером пользуется семья, вы получили не хобби, а дежурство без графика.

Своё стройте ради понимания — это правда полезно, и я не жалею ни об одном из тех 50 часов. Но если задача звучит как «чтобы у домашних всё работало и меня не трогали» — это другая задача, и решается она не сервером.

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

 

 

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
    467



    Пользователь запретил комментарии к топику.

    Читайте на SMART-LAB:
    Рынок МФО меняется: кредитные лимиты становятся новым стандартом
    Банк России опубликовал обзор рынка МФО за II квартал 2026 года. Выбрали главное 👇 🔸 Общий объем выдач МФО составил 490 млрд руб., увеличившись...
    Фото
    Апри выходит в Петербург!
    Апри выходит в Петербург! Долгожданный момент, мы получили разрешение на строительство первого этапа «Апри Нева» ! Это наш...
    Фото
    Итоги первичных размещений ВДО и некоторых розничных выпусков на 27 августа 2026 г.
    Следите за нашими новостями в удобном формате: Telegram , Youtube , RuTube, Smart-lab , ВКонтакте , Сайт
    Фото
    Портфель "купил и забыл" (года на два). Две новые позиции в портфеле. Третью нарастил. Что продал, чтобы купить?
    Доброго вечера, дорогие друзья. Возвращаюсь спустя месяц с новостями по портфелю. Обычно я пишу оперативно о своих действиях, но в...

    теги блога Alexniko

    ....все тэги



    UPDONW
    Новый дизайн