VPN

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

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

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

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

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

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

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

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

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

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

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

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