25 March 2019

VPN для мобильных устройств на уровне сети

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


Задачи и ограничения


Для начала отвечу на вопрос «зачем?». VPN как технология используется для решения самых разных сетевых задач, объединенных общим признаком — изолированной передачей данных между двумя устройствами сквозь большое количество промежуточных узлов. На базе этого уже строятся более сложные решения и решаются те самые разные задачи. В обычном, привычном всем случае для построения VPN используется сеть оператора фиксированной связи (желающим в детали есть прекрасный материал) или множество разных сетевых протоколов (GRE, IPSec, L2TP и другие — тот же автор об этом) и работающих с ними программных продуктов (Cisco AnyConnect, OpenVPN, TOR — ну вы и сами знаете), но их использование на конкретном оконечном устройстве сразу же выдвигает к нему ряд требований, невыполнение которых ведет к определенным ограничениям.

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

Другое важное ограничение — необходимость настройки. Оно работает как для «глупых» устройств из первого пункта, так и для классических смартфонов и компьютеров, которым предыдущее ограничение неведомо. И если с первыми все относительно просто и упирается в количество времени, затраченное на настройку, то со вторыми есть варианты. Зачастую организации используют VPN в целях безопасности, чтобы уберечь служебное оконечное устройство от выхода в публичную сеть без должной корпоративной защиты или от передачи служебных данных по публичным каналам. Конечные же пользователи могут по каким-то своим причинам отключить или забыть включить VPN, в результате чего многие системы безопасности компании могут оказаться «за бортом».

Оба этих ограничения легко снимаются, если доступ к VPN обеспечивается на сетевом уровне. В случае с мобильной связью это может быть реализовано с помощью «мобильного VPN». Устройство любой сложности способное передавать данные, будет передавать их в правильную сеть. Неважно, какие настройки сделаны на устройстве, при правильно сконфигуренной сети оно в любом случае будет передавать их туда, куда нужно, и никуда больше.

И как приятный бонус, устройство будет получать адрес из внутренней сети, настраиваемый удаленно, и доступ к нему будет возможно получить только изнутри этой сети (либо физически). Для определенного класса устройств это очень важно.

Как это работает


PS Core


Казалось бы, VPN — классическая услуга всех операторов связи для В2В сегмента, и зачем в таком случае заострять на этом внимание? Все дело в том, как устроена сеть передачи данных для устройств, подключаемых через GPRS, HSPA, LTE или другую технологию мобильной связи. Здесь нет привычных всем сетевым администраторам vlan, нет свичей, нет даже маршрутизаторов в привычном их значении. Зато есть сеть радиодоступа (RAN) и пакетное ядро (PS Core).


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

В общем случае, каждое устройство с сим-картой, зарегистрированное в пакетной сети (прошедшее процедуру GPRS attach или аналогичную), перед тем как начать передавать данные куда-либо должно инициировать создание сессии передачи данных (PDP context) на маршрутизаторе ядра пакетной сети, GGSN. Детали и назначение этих процессов очень здорово описаны вот в этой статье. Что важно для нас: при инициации сессии в запросе к GGSN в числе прочих значатся параметры, которые многие видели в своих телефонах или даже имели дело с ними при настройке, например, usb-модемов. Это три поля: APN, логин и пароль. APN (точка доступа) — очень важная сущность в логике работы GGSN: в зависимости от того, с какой APN инициирована сессия, GGSN действует по-разному. В результате успешной обработки запроса пользователя GGSN должен активировать у себя сессию передачи данных и сообщить устройству ее параметры, в частности, выданный устройству IP адрес и адреса DNS. Здесь есть ряд важных очень важных особенностей:

  • В запросе на инициацию сессии устройство никогда не запрашивает, какой IP адрес оно хотело бы получить;
  • Помимо задаваемых в настройках устройства полей «APN», «логин» и «пароль», в запросе к GGSN передается также номер телефона (MSISDN) абонента (здесь и далее «абонент» — это конечный пользователь, одно устройство с сим-картой, а «клиент» — организация-заказчик сервиса, в состав которой входят абоненты);
  • При активации сессии GGSN создает в своей таблице маршрутизации запись о новом IP адресе. Все абоненты на GGSN обозначаются записями в таблице маршрутизации с префиксом /32, т.е. 1 абонент — 1 запись в таблице. GGSN — это очень производительный маршрутизатор;
  • Сеть оператора может на разных этапах (и на SGSN, и на GGSN) по разным причинам менять поле APN в запросе на инициацию сессии. Это позволяет в некоторых случаях уменьшить, а в некоторых вообще исключить настройку параметров сети на устройствах с сим-картой.

По первым трем пунктам сразу возникает вопрос: что за IP адрес выдаётся абоненту?
Это определяется настройками той APN, с которой пришёл запрос на активацию сессии. Порядка 99% пользователей передачи данных в мобильных сетях используют обычный доступ в Интернет. Это известные всем точки доступа internet.mts.ru, internet.beeline.ru и так далее. В случае с доступом в Интернет GGSN выдаёт адреса по принципу классического DHCP из прописанных в настройках серых подсетей. При выходе в публичную сеть они закрываются классическим же NAT’ом (а точнее той его версией, которая PAT).

Но GGSN способен на большее. Для выбора IP адреса он может cделать ААА запрос к серверу авторизаций (Radius, например). Такая логика настраивается для отдельных APN в зависимости от их назначения. Самый простой случай — услуга по предоставлению постоянного публичного IP адреса. Такие адреса, как правило, закрепляются за абонентами в биллинге (BSS) оператора, и в зависимости от ИТ архитектуры попадают в ту или иную базу данных, к которой и обращается с запросом GGSN. Благодаря тому, что ему известен MSISDN (номер телефона) абонента, который и будет содержаться в запросе, такая БД будет довольно простой и может содержать лишь связку номера и адреса. Дополнительно, в случае, если клиент планирует использовать одну сим-карту для подключения нескольких устройств (если сим-карта находится в WiFi-роутере удаленного офиса, например), эта таблица может содержать также так называемый «framed route» — префикс сети, находящейся «за» сим-картой, который будет анонсирован всем устройствам в сети по протоколам динамической маршрутизации.

Не GGSN'ом единым


Помимо выдачи адресов требуется еще доставить трафик абонентов до клиентских сетей, каждого до своей. Здесь все работает уже куда более традиционно. На GGSN трафик специализированных под работу с VPN APN маршрутизируется на отдельный маршрутизатор сети оператора (он может называться по-разному, иногда — VPN роутер), который в свою очередь выполняет функцию классического РЕ в схеме L3VPN. Он добавляет необходимые метки, заголовки и вот это вот всё и отправляет весь этот поток трафика через маршрутизаторы транспортной сети в предварительно настроенные стыки или туннели до сети клиента. Эта часть уже гораздо более традиционна и много раз описана в других местах, поэтому заострять на ней внимания в этом материале я не буду.

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

  • IP адреса, как уже было описано, могут выдаваться динамически (каждый раз разный адрес из заданной подсети) и статически (каждый раз один и тот же адрес у конкретного абонента), что определяется и/или настройками APN, и/или настройками Radius-сервера;
  • IP адреса могут выдаваться Radius-сервером под управлением оператора или под управлением клиента;
  • Устройства, подключенные к мобильному VPN, могут взаимодействовать либо только друг с другом, либо иметь доступ к обычной L3VPN сети клиента через прямой стык (VPN порт) с оператором или через туннелирование поверх сети Интернет;
  • В некоторых случаях использование логина и пароля для успешной активации сессии может быть обязательно, а иногда не требуется даже заполнять поле «APN».

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



В итоге после довольно быстрого процесса регистрации в сети и получения IP адреса устройство получает доступ в сеть клиента, а сеть клиента получает доступ к устройству. При этом абонент находится в изоляции от всех других абонентов оператора, не имеющих отношения к конкретному клиенту, ему не требуется никаких дополнительных настроек, и весь трафик безальтернативно направляется в сеть клиента, где обрабатывается уже в соответствии с внутренними политиками клиента.
Tags:VPNIoTмобильная связьмобильный интернетAPNGGSNsim-картаgprspdp contextl3vpn
Hubs: Network technologies IOT
+17
23.4k 87
Comments 19
Top of the last 24 hours