Как мы сделали VPN в нужное время и в нужном месте

Предыстория

В какой-то момент, когда крупные VPN-сервисы в РФ стали блокировать и когда мы устали перелезать с одного VPN на другой, мы решили начать делать свой VPN.

Когда уже даже мой дедушка 80 лет попросил установить ему ВПН, мы поняли, что спрос на ВПН сервисы будет расти. Тогда мы решили сделать продукт из нашего ВПН и попробовать его продавать.

И вот в сентябре этого года я решила написать статью о нашем VPNchik-е. Он оказался гораздо успешнее, чем мы ожидали, пользователи им очень довольны, потому мне хочется рассказать о нем миру.

Как мы сделали VPN в нужное время и в нужном месте

Сначала расскажу, как работает ВПН

Как мы сделали VPN в нужное время и в нужном месте

Прежде чем начать рассказывать о том, как создавался VPNchik, я коротко расскажу, что такое ВПН сервис и как он работает.

Когда вы не используете ВПН, то интернет-трафик с вашего устройства течет через интернет-провайдера вашей страны на сайт, на который вы собираетесь зайти. На самом деле, трафик течет еще через множество других узлов, но сейчас я их опущу, так как большого значения они для объяснения работы ВПНа не имеют. Интернет-провайдер видит интернет-трафик, в том числе он видит, на какой сайт вы пытаетесь зайти. Если, например, этот сайт запрещен в вашей стране, то интернет-провайдер может вам запретить на него зайти.

Когда вы используете ВПН, то сначала интернет-трафик шифруется на вашем компьютере. Потом трафик проходит через интернет-провайдера и попадает на ВПН-сервер. ВПН-сервер уже расшифровывает данные и отправляет на сайт. В данном случае данные протекают через интернет-провайдера в зашифрованном виде, потому интернет-провайдер не видит, на какой сайт вы пытаетесь зайти и соответственно не может запретить вам на него зайти.

Как мы выбирали интернет-протокол

При разработке ВПН одним из самых важных вещей является правильный выбор ВПН-протокола. ВПН-протокол описывает правила, по которым ВПН будет обрабатывать интернет-трафик. От ВПН-протокола зависит то, насколько хорошо будет работать ВПН и какие у него будут возможности.

Сейчас наиболее популярные ВПН-протоколы это

  • OpenVPN
  • IPsec
  • WireGuard

OpenVPN, пожалуй, самый распространенный из перечисленных выше ВПН-протоколов. На этом протоколе работают обычно корпоративные ВПН, также, на нем основана большая часть крупных ВПН сервисов.

IPsec достаточно древний протокол, на нем могут работать очень старые ВПН сервисы.

WireGuard самый новый из этих трех протоколов. Его главное преимущество перед другими протоколами в том, что шифрование/расшифровка интернет-трафика происходит быстрее, так как шифрующие ключи короче.

Мы долго думали, какой протокол выбрать. После того как мы взвесили плюсы и минусы каждого из протоколов, мы решили разрабатывать VPNchik на основе WireGuard протокола, потому что он новее и быстрее. Выбор протокола является одним из факторов, почему наш ВПН выигрывает в скорости у крупных более старых ВПН сервисов, которые используют OpenVPN или IPsec протоколы.

Главная проблема, с которой мы столкнулись

Сначала мы сделали VPNchik для себя – им пользовалась только наша семья и наши друзья.

Однако, когда мы решили сделать ВПН-продукт, и попробовать продавать его, то появилась сложность. Наш ВПН сервер мог нормально обслуживать десятки человек, но сотни человек одному ВПН серверу уже будет сложно обслуживать, будет страдать качество.

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

Уметь автоматически подключать или отключать ВПН-серверы также полезно для экономии издержек. Например, когда ночью все спят, и нагрузка падает, то было бы хорошо отключить часть серверов, чтоб не платить за них.

Однако, оказалось, что сделать автоматическое подключение и отключение серверов в зависимости от нагрузки, не так легко.

Проблема в том, что, когда пользователь подключает наш VPNchik, он получает файл с настройками. Этими настройками будет пользоваться его устройство для подключения к ВПН серверу. В настройках одним из параметров является IP адрес ВПН сервера. При использовании протокола WireGuard IP адрес сервера в настройках «захардкоден». Это означает, что изменить IP адрес может только пользователь вручную. Это очень неудобно, так как, подключая и отключая серверы, нам надо будет каждый раз беспокоить наших пользователей и просить перенастроить ВПН.

Мы долго думали, как можно менять IP адрес используемого сервера без участия пользователей. Я не буду тут рассказывать о множестве способов, которые мы перепробовали. Скажу только, что в конце концов мы узнали, что можно использовать DNS для балансировки.

Смысл DNS-балансировки заключается в том, что мы даем клиенту в настройках вместо IP адреса сервера доменное имя. Доменное имя бывает привязано к какому-то IP адресу, но IP адрес доменного имени можно поменять. Таким образом, дав пользователю доменное имя вместо IP адреса, мы получили возможность изменять IP адрес сервера без участия пользователя.

Позднее мы еще создали мастер-сервер, который автоматически изменяет связки «доменное имя – IP адрес» в зависимости от увеличения или уменьшения количества людей, которые пользуются нашим ВПН сервисом.

Что дальше?

Сейчас у нас есть работающий ВПН-продукт, который может обслуживать сотни тысяч клиентов, при этом, качество сервиса страдать не будет.

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

Кроме этого, количество активных пользователей хорошо растет органически. Мы пока ни рубля не потратили на рекламу, при этом, количество пользователей растет каждый день с помощью «word of mouth».

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

Пока мы начали с самых простых способов продвижения – реклама в группах Телеграм, розыгрыш призов за привлечение друзей. В будущем собираемся запустить еще контекстную рекламу и рекламу в социальных сетях.

Другое направление развития VPNchik-а, которое мы сейчас видим – это разработка собственного приложения. Сейчас VPNchik работает на приложении Wireguard. Однако, если мы разработаем собственное приложение, то получим множество преимуществ:

  • У нас будет больше гибкости в написании кода;
  • Мы будем иметь полный контроль над UI, сможем экспериментировать с ним и в результате сделать более приятное взаимодействие пользователя с VPNchik;
  • Также, это позволит нам отказаться от DNS-балансировки и сделать более эффективную балансировку на стороне клиента.

Еще один способ улучшения нашего ВПН – расширение географии ВПН-серверов. Сейчас VPNchik работает только на финских серверах. Однако, мы хотим арендовать в будущем сервера других стран и дать пользователям возможность выбирать, через какую страну они хотят выйти в интернет.

Кроме расширения географии ВПН-серверов, мы рассматриваем еще расширение географии пользователей. ВПН востребован не только в России. При этом, во многих странах требования регуляторов к ВПН-сервисам проще, чем в нашей стране, что упрощает поддержку такого продукта. Потому мы не видим препятствий, почему бы в будущем не попробовать расшириться в другие страны. Но это уже планы далекого будущего, пока хотим сосредоточиться на РФ.

Ну и напоследок

Если вы дочитали до этого абзаца, то, возможно, вас заинтересовал наш VPNchik. Если хотите его попробовать, то можете это сделать по ссылке.

1313 показов
1.8K1.8K открытий
1 комментарий

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

Ответить