VPN – название набора технологий, позволяющих установить виртуальное сетевое соединение между клиентским и серверным программным обеспечением поверх уже существующего соединения по протоколу TCP/IP.
С точки зрения архитектуры, понятия VPN сервер и VPN клиент используется большинством протоколов и решений. Среди них PPTP, L2TP, SSTP. Однако, далеко не всегда можно четко разделить роли клиента и сервера. Есть примеры архитектуры, где VPN соединение устанавливается между равноправными узлами. Эти узлы одновременно являются и сервером и клиентом. Примером такой архитектуры является WireGuard. В ней и клиент может инициировать соединение к VPN серверу и VPN сервер может "позвонить" клиенту.
В общем случае, при установлении соединения, на сервере и на клиентском оборудовании появляются новые виртуальные интерфейсы (VPN интерфейсы). И на интерфейсы назначаются IP адреса.
Таким образом, обмен трафиком между клиентом и сервером происходит с использованием новых адресов VPN соединения. Появление нового сетевого интерфейса позволяет операционным системам обеих сторон применять к VPN соединению новые правила маршрутизации и межсетевого экранирования.
Вообще, именно наличие сетевых интерфейсов и IP адресов на них является значимым признаком VPN.
Например, когда вы подключаетесь к сайту в Интернет при помощи своего браузера и протокола https, то между клиентским браузером и сервером тоже образуется шифрованное соединение. Однако для передачи этого трафика обе стороны - и компьютер клиента и сайт в сети Интернет используют существующие IP адреса своих интерфейсов операционнных систем. Поэтому такое соединение не является "соединением VPN", а является просто шифрованным соединением.
Именно способность VPN протоколов использовать новые IP адреса для своих соединений стала востребована в Интернет для организации доступа в обход ограничений.
Кроме того, технология VPN стала использоваться в сети Интернет и для подмены IP адреса с целью скрыть свое местоположение.
Ниже мы остановимся лишь на тех аспектах VPN соединений, которые важны при использовании нашей службы удаленного доступа VPNKI.
Начнем с некоторых общих фаз в использовании VPN соединений, а затем перейдем к особенностям протоколов. Мы не стремимся создать описание VPN протоколов - их можно найти в Интернет. Мы остановимся лишь на важном для вас и нас при использовании системы удаленного доступа VPNKI.
При установлении VPN соединения сервер и клиент могут проверять подлинность друг друга, а могут обойтись и без этого. Эти начальные процедуры обычно называются "идентификацией" и "аутентификацией". В случае нашей системы мы не делаем разницы между этими понятиями, но в мире ИТ эти понятия отличаются. Правда о тонкой грани между ними споры идут в каждом конкретном случае.
Для нашей цели будем считать, что "идентификация" это проверка типа устройства клиента. Например - телефон, компьютер, планшет, версия браузера и т.д. А аутентификация это проверка персоны, которая сейчас использует это устройство.
Обычно, конечно, проверка подлинности осуществляется на VPN сервере. И только после успеха такой проверки пользовательское соединение считается установленным, а виртуальные сетевые интерфейсы с обеих сторон - созданными.
Проверка подлинности (аутентификация) может осуществляться как путем привычной проверки имени пользователя и пароля, так и проверкой сертификатов обеих сторон. Обеих сторон - это важное уточнение. Потому что, не только VPN сервер может проверить логин/пароль или сертификат клиента. Клиент тоже может проверить такие же данные сервера. Например, чтобы убедиться в том, что он подключается к правильному VPN серверу, а не к его двойнику, созданному мошенником.
В различных VPN протоколах используются весьма разнообразные механизмы аутентификации. Среди них: PAP, CHAP, MS-CHAPv1, MS-CHAPv2, EAP, EAP-TLS, PEAP, NTLMv2, EAP-MSCHAPv2 и другие.
В системе VPNKI мы используем протоколы CHAP, MS-CHAPv2 и EAP-MSCHAPv2, как наиболее распространенные.
Стоит отметить, что различные VPN протоколы могут осуществлять соединения поверх протоколов TCP или UDP.
От этого может зависеть способность VPN протокола "проходить" корпоративные межсетевые экраны. Например, часто сетевыми администраторами компаний блокируются только исходящие TCP соединения. При этом исходящие UDP соединения устанавливать разрешается. Поэтому исходящее OpenVPN соединение из офисной сети поверх TCP работать не будет, а поверх UDP заработает.
Также, важным моментом является способность программного обеспечения клиента устанавливать VPN соединения при старте программы или компьютера/маршрутизатора. Для маршрутизаторов это особенно важно, так как обычно, VPN соединения на них должны быть почти "постоянно включенными".
VPN соединения могут использовать шифрование потока, а могут и не использовать. Шифрование, в свою очередь, может осуществляться различными протоколами. Также шифрование будет характеризоваться различной длиной используемого ключа.
В различных протоколах VPN используются разнообразные механизмы шифрования. Поэтому и криптостойкость их существенно отличается. Описывать здесь все виды шифрования мы не будем. Скажем только, что в нашей системе в разное время использовались следующие типы шифрования:
Стоит отметить, что шифрование данных соединения может наступать как после проверки пользовательского логина/пароля, сертификата (или ключа), так и до этой проверки. В последнем случае, аутентификация пользователя осуществляется внутри уже зашифрованного потока.
Например, в VPNKI мы используем протоколы L2TP и IPsec. Использование двух протоколов позволяет сначала установить шифрованное соединение IPsec. Затем внутри него запустить новое виртуальное сетевое соединение при помощи протокола L2TP и с проверкой логина/пароля. Такой способ обезопасит от перехвата логин и пароль пользовательского подключения. В этм случае важно и то, что создание сетевых VPN интерфейсов и назначение IP адресов будет происходить средствами протокола L2TP, а не средствами IPsec.
Похожим образом работает и SSTP. Сначала устанавливается шифрованное соединение SSL/TLS, а внутри него осуществляется работа протокола PPP (PPP, a не PPTP).
Данные, передаваемые по VPN туннелю, могут подвергаться компрессии для более эффективного использования полосы пропускания. Для включения компрессии ее методы должны поддерживать обе стороны соединения – клиент и сервер. Методы компрессии согласуются при установлении виртуального соединения и остаются неизменными всю сессию.
Если методы компрессии не были успешно согласованы сторонами при установлении туннельного соединения, то VPN соединение не будет успешно установлено. Или будет установлено без использования компрессии. Это будет происходить в соответствии с параметрами, установленными в настройках VPN соединения у сервера и у клиентcкого устройства.
В некоторых VPN протоколах встроен механизм проверки работоспособности VPN соединения. Так, например, протокол OpenVPN обладает встроенной возможностью проверки наличия VPN соединения. Для этого используется периодическая отправка пакетов icmp (командой ping).
Для качественной работы VPN соединений немаловажную роль играет особенность различных протоколов обрывать действующее соединение. Ведь инициатором разрыва соединения могут выступать как VPN сервер, так и клиент.
Важным моментом является способность VPN протокола уведомить одну из сторон взаимодействия о желании другой стороны разорвать виртуальное соединение. При корректном разрыве сессии обе стороны получают возможность освободить свои ресурсы. Виртуальный сетевой интерфейс, память, процессорное время устройства будут освобождены для новых задач или соединений.
Для автоматического установления разорванного VPN соединения часто используются внутренние механизмы контроля за состоянием соединения и его перезапуском. Так, например, протокол OpenVPN может переподключать VPN соединение при отсутствии ответов на отправленные пакеты icmp. Протокол OpenVPN не использует для этого какие-либо внешние средства.
Далее подробнее о VPN протоколах:
SSTP
WireGuard
Кроме базового функционала по объединению VPN туннелей с различными протоколами, вы можете воспользоваться и удаленным доступом к компьютеру, используя такие способы: