Как настроить VPN для вашей команды веб-разработки

Опубликовано: 2021-10-11

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

Распространенные проблемы с Интернетом

Что практически означает недоступность интернет-ресурса?

- Некоторые библиотеки не скачиваются - среды разработки проекта не будет. Это главная и самая большая проблема!

- Zoom, Slack или Telegram не работают - вы не сможете связаться с коллегами.

- Некоторые сайты недоступны, например, GitHub - невозможно опубликовать свою работу.

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

Кто виноват?

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

Но иногда провайдер оказывается негодяем. Например, по неизвестной причине они могут заблокировать трафик на определенных TCP-портах или модифицировать незашифрованный http-трафик и изменить html-код страницы, добавить рекламу. Этого ждешь от некоторых мошенников, но точно не от крупной компании, поэтому неприятно вдвойне (если интересно, погугли "реклама поверх чужих сайтов").

Что делать?

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

VPN — это виртуальная частная сеть. Это название группы технологий, позволяющих создавать виртуальную, несуществующую физически (оверлейную) компьютерную сеть на основе существующей физической компьютерной сети.

Это дает дополнительные возможности для повышения конфиденциальности. В физической сети в первом приближении ваш трафик доступен всем участникам сетевого обмена, всем маршрутизаторам и т.д. В виртуальной сети нет дополнительных участников, только вы и точка, к которой вы подключаетесь. Если вы настраиваете его для своей команды веб-разработчиков, это VPN-сервер. Между вами двумя прокладывается зашифрованный туннель.

Виртуальные сетевые интерфейсы TUN создаются на клиентской машине и сервере. Зашифрованный обмен данными происходит непосредственно между ними. Ваши данные надежно защищены от атак «человек посередине» (MITM). Никто, имеющий физический доступ к оборудованию, через которое проходит ваш трафик, не сможет перехватить или подменить вашу информацию.

Это также позволяет вам получить доступ к ресурсам, недоступным в вашей домашней сети, но доступным с VPN-сервера.

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

Выбор реализации VPN

Решить не значит сделать. Существует несколько распространенных бесплатных реализаций технологии VPN. Вы можете попробовать бесплатную пробную версию Surfshark VPN, чтобы узнать, что вы можете получить.

Что еще вы можете выбрать после получения правильного VPN

IPsec — это набор протоколов для безопасной передачи данных. Он появился в середине 90-х. Он большой и гибкий, но сложный в настройке и низкоуровневый. Слишком сложно для некоторых целей.

WireGuard — молодой проект (2015 г.), направленный на быструю подготовку к работе. Потенциально быстрее передает данные, чем другие VPN, использует более современные протоколы шифрования — кроссплатформенные, доступные во всех основных системах. Недостаток такой же, как и преимущество. Чтобы обеспечить быструю и простую установку, в ядре программы реализовано множество низкоуровневых решений. Например, использование протокола UDP, который может быть эффективен не для всех.

Выбор способа запуска и использования

Вручную

Самый очевидный способ — арендовать VPS, подключиться по SSH и создать сервер, следуя инструкциям. Это довольно длительный процесс из-за большого количества команд и файлов, которые необходимо перемещать вручную.

С помощью этого метода каждый раз, когда вы создаете новый сервер, вам придется делать это снова. Чтобы сэкономить время, вы можете использовать системы управления конфигурацией или системы контейнеризации.

Системы управления конфигурацией — это программное обеспечение, позволяющее автоматизировать настройку удаленных серверов (puppet, ansible и т. д.). Преимущество такого подхода в том, что настроить удаленный VPN-сервер можно парой команд. И все конфиги, шаблоны конфигов явно выкладываются в текстовом формате на управляющей машине. Вы можете создать скрипт развертывания самостоятельно или взять готовый, например, на GitHub.

Несколько иной подход используется в системах контейнеризации. Наиболее распространенной такой системой виртуальной контейнеризации является docker. Установка docker-контейнера с VPN на удаленный сервер может быть даже быстрее, чем установка сервера через ansible, что является плюсом. Однако список доступных конфигураций может быть ограничен разработчиками образа. Образы являются бинарными файлами, поэтому могут не работать, если нужно поправить какой-то экзотический конфиг.

Серверная архитектура

Во-первых, как уже было сказано, технология VPN может использоваться для подключения, например, к закрытой подсети через компьютер, входящий в эту подсеть и, одновременно, VPN-сервер. Если у вас есть ценные ресурсы в вашей подсети, вы бы хотели, чтобы никто не подключался к VPN-серверу. Для этого большинство VPN обычно делают его отдельной машиной, вообще не связанной с какой-либо сетью, возможно, в сейфе (без шуток). А запросы на подпись и подписанные сертификаты переносятся на сменные носители.

Запуск сервера

Для запуска скрипта ansible вам необходимо установить ansible на свой компьютер, арендовать виртуальный сервер с Debian/Ubuntu и настроить доступ к серверу по SSH. При аренде сервера имейте в виду, что некоторые сервисы не позволяют создавать tun-интерфейс или выполнять переадресацию пакетов. Пожалуйста, проверьте это перед покупкой.

Все взаимодействие с сервером осуществляется тремя командами:

1. Запустите скрипт создания сервера и центра сертификации.

2. Регистрация нового пользователя.

3. Отзовите сертификат по имени клиента.

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

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