VPN

VPNaaS — это тип VPN, который использует облачную инфраструктуру для предоставления виртуальной частной сети. Виртуальная частная сеть распространяется только на ваши инстансы внутри учётной записи MCS. VPNaaS можно создать прямо в Cloud Servers (в панели Horizon), не используя дополнительное программное обеспечение. Поддерживается только IPsec IKEv1/v2 с аутентификацией по PSK. 

Важно

VPN в данном конкретном случае - просто протокол, а не возможность поднять VPN-сервер для обмена данными между любыми компьютерами, в том числе и внешними. Реализация L2TP на базе VPN MCS невозможна.

Если данный тип VPN вам не подходит – в качестве VPN-сервера вы можете использовать собственный инстанс в приватной сети.

Чтобы использовать VPNaaS, нужно создать приватную сеть и работающий маршрутизатор. Подробнее об этом смотрите в статье «Сети».

Панель управления Horizon

Настройка сервиса VPN состоит из пяти шагов:

  1. Добавить политику IKE
  2. Добавить политику IPSec
  3. Добавить сервис VPN
  4. Добавить IPSec подключение
  5. Настроить маршрутизацию до удаленной подсети
  6. Проверить, что VPN работает

Добавить политику IKE

  1. Перейдите «Проект» → «Сеть» → «VPN» в панели управления Horizon.
  2. Откройте вкладку «Политики IKE».
  3. Нажмите «Добавить политику IKE».
  4. Заполните данные:
ИмяВведите имя политики
Версия IKEУстановите значение «v2»
Алгоритм шифрованияУстановите значение «aes-256»

Остальные настройки оставьте по умолчанию.

5. Нажмите «Добавить».

Добавить политику IPSec

  1. Перейдите «Проект» → «Сеть» → «VPN».
  2. Откройте вкладку «Политики IPSec».
  3. Нажмите «Добавить политику IPSec».
  4. Заполните данные:
ИмяВведите имя политики
Алгоритм шифрованияУстановите значение «aes-256»

Остальные настройки оставьте по умолчанию.

Полезная информация

Параметр "Размер жизненного цикла IKE ключей" в параграфах "Добавить политику IKE" и "Добавить политику IPsec" указан одинаковый - 3600 секунд. Но при этом значении параметра IPsec-соединение бывает неустойчивым, хотя и устанавливается успешно.

Гарантированно устойчивое соединение возможно получить, установив размер жизненного цикла IKE ключей в Политике IKE равным 86400 сек, то есть один день. Например, см. это обсуждение  (в самом конце).

5. Нажмите «Добавить».

Добавить сервис VPN

  1. Перейдите «Проект» → «Сеть» → «VPN».
  2. Откройте вкладку «Сервисы VPN».
  3. Нажмите «Добавить сервис VPN».
  4. Заполните данные:
ИмяВведите имя VPN
МаршрутизаторВыберите маршрутизатор, который будет использоваться для этого VPN
ПодсетьВыберите подсеть из списка

5. Нажмите «Добавить».

Созданный сервис VPN появится в статусе "Ожидает создание". Под ожиданием создания подразумевается ожидание подключения. Можно не дожидаться окончания создания сервиса VPN и переходить к следующему шагу.


Добавить IPSec подключение

  1. Перейдите «Проект» → «Сеть» → «VPN».
  2. Откройте вкладку «Подключения IPSec».
  3. Нажмите «Добавить IPSec подключение».
  4. Заполните данные:
ИмяИмя подключения
Сервис VPN для данного подключенияСервис VPN, который вы создали на предыдущих шагах
Политика IKE для данного подключенияПолитика IKE, которую вы создали на предыдущих шагах
Политика IPSec для данного подключенияПолитика IPSec, которую вы создали на предыдущих шагах
Публичный IPv4/IPv6 адрес или FQDN шлюза пираПубличный IP-адрес удаленной стороны (клиента) или FQDN шлюза пира для VPN-подключения
Идентификатор маршрутизатора пира для аутентификации (Peer ID)Может быть IPv4/IPv6 адрес, адрес электронной почты, ID ключа или FQDN
Подсеть(и) удаленного пираПодсеть(и) удаленной стороны для маршрутизации. При необходимости разделите подсети запятыми
Строка заранее установленного ключа совместного использования (PSK)  Задайте ключ PSK, требуемый между двумя точками VPN-соединения

5.Нажмите «Добавить»

Настроить маршрутизацию до удаленной подсети

Трафик в удаленную подсеть с инстансов должен идти через порт c IP-адресом, соответствующим порту маршрутизатора «network:router_centralized_snat». Найти данный порт и его IP-адрес можно в разделе Сети → <имя вашей приватной сети> → Порты (Подключенное устройство – network:router_centralized_snat).

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


В разделе Сети → <имя вашей приватной сети> → Подсети нажимаем кнопку «Редактировать подсеть». В открывшемся окне переходим на вкладку «Детали подсети» и в поле «Маршруты узла» добавляем строку вида:
<удаленная подсеть>,<IP-адрес порта network:router_centralized_snat>


Например, для удаленной подсети 192.168.100.0/24 и IP-адрес порта network:router_centralized_snat 192.168.0.15 данная строка будет иметь вид:

192.168.100.0/24,192.168.0.15


Инстанс получит данный маршрут после перезагрузки или обновления аренды IP-адреса по DHCP.

В качестве альтернативного варианта маршрут можно прописать в операционной системе на инстансе.

Проверить, что VPN работает

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

  1. Откройте окно терминала.
  2. Введите команду
     ping <IP-адрес вашей виртуальной машины>

    Например, 192.168.44.10, где 192.168.44.0/24 — приватная сеть ваших виртуальных машин.

Если все работает корректно, вы получите ответ от сервера с IP-адресом, количеством отправленных байт, временем соединения в милисекундах и параметром TTL. 

Нажмите Ctrl+C, чтобы остановить команду. В результатах найдите общее значение для параметра «time». Чем оно меньше — тем лучше: это значит, что проблем нет и VPN работает.


Дополнительная информация

Со стороны Cloud Servers в качестве VPN-сервера выступает strongsWan.

При сохранении стандартного значения полей при создании подключения сгенерированная конфигурация для strongsWan будет иметь следующий вид:

config setup

conn %default
    ikelifetime=60m
    keylife=20m
    rekeymargin=3m
    keyingtries=1
    authby=psk
    mobike=no

conn <name>
    keyexchange=ikev2
    left=<внешний ip-адрес маршрутизатора приватной сети>
    leftsubnet=<подсеть приватной сети>
    leftid=<внешний ip-адрес маршрутизатора приватной сети>
    leftfirewall=yes
    right=<внешний ip-адрес удаленного машрутизатора>
    rightsubnet=<удаленная подсеть>
    rightid=<удаленный Peer ID>
    auto=route
    dpdaction=hold
    dpddelay=30s
    dpdtimeout=120s
    ike=aes128-sha1-modp1536
    ikelifetime=3600s
    esp=aes128-sha1-modp1536
    lifetime=3600s
    type=tunnel

Справочная информация

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

Различают несколько протоколов для построения VPN-туннеля:
- PPTP
- L2TP
- IPsec
- SSL

PPTP - туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой сети. Протокол PPTP позволяет инкапсулировать пакеты PPP в пакеты протокола Internet Protocol (IP) и передавать их по сетям IP (в том числе и Интернет).

L2TP - протокол туннелирования уровня 2. Объединяет протокол L2F и протокол PPTP. Позволяет организовывать VPN с заданными приоритетами доступа, однако не содержит в себе средств для защиты данных и механизмов аутентификации. Также L2TP не умеет шифровать проходящий через него трафик, поэтому его часто используют в связке с L2TP не умеет шифровать проходящий через него трафик, поэтому его часто используют в связке с IPsec. Однако это приводит к появлению негативного эффекта — в L2TP/IPsec происходит двойная инкапсуляция данных, что отрицательно сказывается на производительности.

IPSec - набор протоколов, касающихся вопросов обеспечения защиты данных при транспортировке IP-пакетов. IPSec также включает в себя протоколы для защищённого обмена ключами в сети Интернет. Протоколы IPSec работают на сетевом уровне. Это очень гибкий протокол для сквозной защиты, который аутентифицирует и шифрует каждый отдельный IP-пакет в данном сообщении. 

IPsec расшифровывается как Internet Protocol Security (Безопасность протокола Интернета). Этот протокол позволяет организовать виртуальные частные сети (Virtual Private Network, VPN), в которых между двумя компьютерами или сетями устанавливается зашифрованное соединение (компьютер-компьютер или сеть-сеть, соответственно). Также см. статью http://www.rhd.ru/docs/manuals/enterprise/RHEL-4-Manual/sysadmin-guide/s1-network-config-ipsec.html

Internet-протокол (IP) не имеет средств защиты передаваемых данных. Он даже не может гарантировать, что отправитель является именно тем, за кого он себя выдает. IPSec представляет собой попытку исправить ситуацию. При использовании IPSec весь передаваемый трафик может быть защищен перед передачей по сети. При использовании IPSec получатель сообщения может отслеживать источник полученных пакетов и удостовериться в целостности данных. Необходимо быть уверенным в том, что транзакция может осуществляться только один раз (за исключением случая, когда пользователь уполномочен повторять ее). Это означает, что не должно существовать возможности записи транзакции и последующего ее повторения в записи с целью создания у пользователя впечатления об осуществлении нескольких транзакций. Представьте себе, что мошенник получил информацию о трафике и знает, что передача такого трафика может дать ему какие-то преимущества (например, в результате на его счет будут переведены деньги). Необходимо обеспечить невозможность повторной передачи такого трафика.

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