Облачная платформаEvolution

Настройка site-to-site VPN с помощью strongSwan


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

Для организации защищенного соединения вы настроите IPsec-туннель с помощью ПО strongSwan, где в качестве одной из сторон выступает инфраструктура в облаке Cloud.ru Evolution. Виртуальная машина в облаке используется как VPN-шлюз, через который другие машины из этого облака отправляют трафик в удаленную подсеть. Такой туннель позволяет безопасно передавать трафик между приватными сетями через интернет.

В качестве удаленной вы развернете аналогичную инфраструктуру на платформе Cloud.ru Advanced.

../_images/schm__site-to-site-vpn.svg

Вы будете использовать следующие сервисы:

  • «Виртуальные машины» — сервис, в рамках которого предоставляется виртуальная машина.

  • «Публичные IP» — сервис для организации доступа к удаленной инфраструктуре.

  • VPC — изолированная виртуальная сеть для создания безопасной инфраструктуры.

  • strongSwan — программное решение с открытым исходным кодом для создания защищенных VPN-соединений по протоколу IPsec.

Шаги:

  1. Разверните инфраструктуру на стороне Evolution.

  2. Разверните инфраструктуру на стороне Advanced.

  3. Добавьте правила в группу безопасности облачного VPN-шлюза.

  4. Настройте VPN-шлюзы.

  5. Настройте маршрутизацию.

  6. Проверьте сетевую связность.

Перед началом работы

  1. Зарегистрируйтесь в личном кабинете Cloud.ru.

    Если вы уже зарегистрированы, войдите под своей учетной записью.

  2. Убедитесь, что для вашей учетной записи достаточно прав на проект. При необходимости настройте права или запросите их у администратора.

1. Разверните инфраструктуру на стороне Evolution

На этом шаге в облаке Evolution вы создадите и подготовите виртуальную сеть, подсеть, группу безопасности и две виртуальные машины.

  1. Создайте виртуальную сеть с названием cloud-vpc.

  2. Создайте подсеть со следующими параметрами:

    • Названиеcloud-subnet.

    • VPCcloud-vpc.

    • Зона доступностиru.AZ-1.

    • Адрес172.16.0.0/24.

    Скопируйте и сохраните адрес подсети: он потребуется для дальнейшей настройки.

  3. Создайте группу безопасности с названием cloud-sg в зоне доступности ru.AZ-1 и добавьте в нее правило исходящего трафика:

    Протокол

    Порт

    Тип адресата

    Адресат

    Любой

    Оставьте пустым

    IP-адрес

    0.0.0.0/0

    После создания удаленного VPN-шлюза на платформе Advanced в эту группу необходимо добавить правила для входящего трафика.

  4. Создайте виртуальную машину со следующими параметрами:

    • Названиеcloud-gateway.

    • Зона доступностиru.AZ-1

    • Образ — на вкладке Маркетплейс выберите образ «strongSwan».

    • Сетевой интерфейс — выберите тип Подсеть с публичным IP.

    • VPCcloud-vpc.

    • Подсетьcloud-subnet.

    • Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.

    • Группы безопасности — добавьте группу cloud-sg.

    • Имя пользователяcloud-user.

    • Метод аутентификацииПароль.

    • Пароль — задайте пароль пользователя.

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

  5. В строке ВМ cloud-gateway скопируйте и сохраните адреса из столбцов Внутренний IP и Публичный IP: они потребуются для дальнейшей настройки.

  6. Создайте виртуальную машину со следующими параметрами:

    • Названиеcloud-vm.

    • Зона доступностиru.AZ-1

    • Образ — на вкладке Публичные выберите Ubuntu 22.04.

    • Сетевой интерфейс — выберите тип Подсеть.

    • VPCcloud-vpc.

    • Подсетьcloud-subnet.

    • Группы безопасности — добавьте группу cloud-sg.

    • Логинclient.

    • Метод аутентификацииПароль.

    • Пароль — задайте пароль пользователя.

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

  7. В строке ВМ cloud-vm скопируйте и сохраните адрес из столбца Внутренний IP: он потребуется для дальнейшей настройки.

  8. На сетевом интерфейсе облачного VPN-шлюза отключите проверку адресов источника и назначения.

    1. На странице сервиса «Виртуальные машины» выберите виртуальную машину cloud-gateway.

    2. Перейдите на вкладку Сетевые параметры.

    3. В правом верхнем углу блока нужного сетевого интерфейса нажмите Горизонтальное меню и выберите Свойства.

    4. Отключите опцию Проверка адреса источника/назначения.

    5. Подтвердите отключение.

2. Разверните инфраструктуру на стороне Advanced

На этом шаге в облаке Advanced вы создадите и подготовите виртуальную сеть, подсеть, группу безопасности и две виртуальные машины.

  1. Создайте сеть VPC и подсеть со следующими параметрами:

    • В блоке Basic Information:

      • Nameremote-vpc.

      • IPv4 CIDR Block10.0.0.0/8-24.

      • Enterprise Project — выберите существующий проект из списка или нажмите Create Enterprise Project, чтобы создать новый.

    • В блоке Subnet Setting:

      • Subnet Nameremote-subnet.

      • IPv4 CIDR Block10.0.0.0/24. Сохраните адрес подсети — он потребуется для дальнейшей настройки.

  2. Создайте группу безопасности со следующими параметрами:

    • Nameremote-sg.

    • Enterprise Project — выберите существующий проект из списка или нажмите Create Enterprise Project, чтобы создать новый.

    • TemplateFast-add rule.

  3. Добавьте правила в группу безопасности согласно таблице:

    Priority

    Action

    Type

    Protocol & Port

    Source

    1

    Allow

    IPv4

    UDP: 500

    <cloud_gateway_public_ip>

    1

    Allow

    IPv4

    UDP: 4500

    <cloud_gateway_public_ip>

    1

    Allow

    IPv4

    ICMP: All

    <cloud_subnet_ip>

    Где:

    • <cloud_gateway_public_ip> — публичный IP-адрес ВМ cloud-gateway на платформе Evolution.

    • <cloud_subnet_ip> — адрес подсети cloud-subnet на платформе Evolution.

  4. Создайте виртуальную машину со следующими параметрами:

    1. На этапе Configure Basic Settings:

      • AZAZ1.

      • Specifications — выберите спецификацию General-Purpose и флейвор s6.small.1.

      • ImageUbuntu 22.04.

    2. На этапе Configure Network:

      • Network — выберите облачную сеть remote-vpc и подсеть remote-subnet.

      • Source/Destination Check — отключите опцию.

      • Security Groupremote-sg.

      • EIPAuto assign.

      • Billed ByBy Traffic.

    3. На этапе Configure Advanced Settings:

      • ECS Nameremote-gateway.

      • Login ModePassword.

      • Password — введите пароль пользователя.

      • Confirm Password — повторите введенный ранее пароль.

    4. На этапе Confirm проверьте настройки виртуальной машины и в поле Enterprise Project выберите проект, в котором она будет создана.

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

  5. Сохраните IP-адреса виртуальной машины remote-gateway из столбца IP Address: публичный (EIP) и внутренний (Private IP). Они потребуются для дальнейшей настройки.

  6. Создайте виртуальную машину со следующими параметрами:

    1. На этапе Configure Basic Settings:

      • AZAZ1.

      • Specifications — выберите спецификацию General-Purpose и флейвор s6.small.1.

      • ImageUbuntu 22.04.

    2. На этапе Configure Network:

      • Network — выберите облачную сеть remote-vpc и подсеть remote-subnet.

      • Security Groupremote-sg.

      • EIPDo not use.

    3. На этапе Configure Advanced Settings:

      • ECS Nameremote-vm.

      • Login ModePassword.

      • Password — введите пароль пользователя.

      • Confirm Password — повторите введенный ранее пароль.

    4. На этапе Confirm проверьте настройки виртуальной машины и в поле Enterprise Project выберите проект, в котором она будет создана.

    Виртуальная машина будет выполнять роль клиента, который отправляет трафик в подсеть на стороне Evolution через удаленный VPN-шлюз.

  7. Сохраните внутренний IP-адрес виртуальной машины remote-vm из столбца IP Address: он потребуется для дальнейшей настройки.

3. Добавьте правила в группу безопасности облачного VPN-шлюза

Для работы strongSwan и проверки доступности виртуальных машин необходимо:

  • разрешить входящий трафик со стороны удаленного VPN-шлюза через порты UDP 500 и 4500;

  • разрешить входящий трафик из удаленной подсети по протоколу ICMP.

Добавьте правила входящего трафика в группу безопасности cloud-sg согласно таблице:

Протокол

Порт

Тип источника

Источник

UDP

500

IP-адрес

<remote_gateway_public_ip>

UDP

4500

IP-адрес

<remote_gateway_public_ip>

ICMP

Любой

IP-адрес

<remote_subnet_ip>

Где:

  • <remote_gateway_public_ip> — публичный IP-адрес ВМ remote-gateway на платформе Advanced.

  • <remote_subnet_ip> — адрес подсети remote-subnet на платформе Advanced.

4. Настройте VPN-шлюзы

Для установления IPsec-туннеля необходимо настроить VPN-шлюзы на стороне Evolution и Advanced.

Настройте облачный VPN-шлюз

  1. Перейдите в личный кабинет платформы Evolution.

  2. На верхней панели слева нажмите Кнопка с изображением девяти точек и выберите Инфраструктура → Виртуальные машины.

  3. Выберите виртуальную машину cloud-gateway в списке.

  4. Перейдите на вкладку Серийная консоль.

  5. Введите логин и пароль, указанные при создании виртуальной машины.

  6. Включите маршрутизацию пакетов и отключите функциональность ICMP Redirects:

    1. Откройте файл /etc/sysctl.conf для редактирования. В терминале выполните команду:

      sudo nano /etc/sysctl.conf
    2. Добавьте в файл параметры:

      net.ipv4.ip_forward = 1
      net.ipv4.conf.all.accept_redirects = 0
      net.ipv4.conf.all.send_redirects = 0
      net.ipv4.conf.enp3s0.accept_redirects = 0
      net.ipv4.conf.enp3s0.send_redirects = 0
    3. Примените изменения:

      sudo sysctl -p /etc/sysctl.conf
  7. Заполните файл конфигурации IPsec-туннеля:

    1. Откройте файл /etc/ipsec.conf для редактирования:

      sudo nano /etc/ipsec.conf
    2. Вставьте конфигурацию в файл:

      config setup
      strictcrlpolicy=yes
      uniqueids=yes
      conn evo-to-advanced
      type=tunnel
      auto=start
      keyexchange=ikev2
      authby=secret
      left=<left_internal_ip>
      leftid=<left_public_ip>
      leftsubnet=<left_subnet>
      right=<right_public_ip>
      rightsubnet=<right_subnet>
      ike=aes256-sha2_256-modp1024!
      esp=aes256-sha2_256!

      Где:

      • <left_internal_ip> — внутренний IP-адрес ВМ cloud-gateway.

      • <left_public_ip> — публичный IP-адрес ВМ cloud-gateway.

      • <left_subnet> — адрес подсети cloud-subnet.

      • <right_public_ip> — публичный IP-адрес ВМ remote-gateway на платформе Advanced.

      • <right_subnet> — адрес подсети remote-subnet на платформе Advanced.

      Подробное описание параметров файла /etc/ipsec.conf смотрите в документации strongSwan.

  8. Заполните файл секретов:

    1. Откройте файл /etc/ipsec.secrets для редактирования:

      sudo nano /etc/ipsec.secrets
    2. Вставьте в файл ключевую фразу (PSK, Pre-Shared Key) туннеля:

      <left_public_ip> <right_public_ip> : PSK "<secret_phrase>"

      Где:

      • <left_public_ip> — публичный IP-адрес ВМ cloud-gateway.

      • <right_public_ip> — публичный IP-адрес ВМ remote-gateway на платформе Advanced.

      • <secret_phrase> — ключ для установки IPsec-соединения. Значение ключа необходимо придумать самостоятельно.

  9. Перезапустите strongSwan:

    sudo systemctl restart strongswan-starter.service
  10. Проверьте, что VPN-шлюз на стороне Evolution поднят и находится в ожидании установления IPsec-туннеля c удаленной стороной:

    sudo ipsec status

    Результат:

    Security Associations (0 up, 1 connecting):
    evo-to-advanced[1]: CONNECTING, 172.31.***.***[%any]...37.18.***.***[%any]

Настройте удаленный VPN-шлюз

  1. Войдите в консоль управления Advanced:

  2. В списке сервисов выберите Elastic Cloud Server.

  3. Напротив виртуальной машины remote-gateway нажмите Remote Login.

  4. Введите логин и пароль, указанные при создании виртуальной машины.

  5. Обновите версии пакетов. В терминале выполните команду:

    sudo apt update
  6. Установите strongSwan:

    sudo apt install -y strongswan
  7. Включите маршрутизацию пакетов и отключите функциональность ICMP Redirects:

    1. Откройте файл /etc/sysctl.conf для редактирования:

      sudo nano /etc/sysctl.conf
    2. Добавьте в файл параметры:

      net.ipv4.ip_forward = 1
      net.ipv4.conf.all.accept_redirects = 0
      net.ipv4.conf.all.send_redirects = 0
      net.ipv4.conf.eth0.accept_redirects = 0
      net.ipv4.conf.eth0.send_redirects = 0
      Примечание

      На практике имена локальных интерфейсов на удаленной стороне могут отличаться.

    3. Примените изменения:

      sudo sysctl -p /etc/sysctl.conf
  8. Заполните файл конфигурации IPsec-туннеля:

    1. Откройте файл /etc/ipsec.conf для редактирования.

      sudo nano /etc/ipsec.conf
    2. Вставьте конфигурацию в файл:

      config setup
      strictcrlpolicy=yes
      uniqueids=yes
      conn advanced-to-evo
      type=tunnel
      auto=start
      keyexchange=ikev2
      authby=secret
      right=<right_public_ip>
      rightsubnet=<right_subnet>
      left=<left_internal_ip>
      leftid=<left_public_ip>
      leftsubnet=<left_subnet>
      ike=aes256-sha2_256-modp1024!
      esp=aes256-sha2_256!

      Где:

      • <right_public_ip> — публичный IP-адрес ВМ cloud-gateway на платформе Evolution.

      • <right_subnet> — адрес подсети cloud-subnet на платформе Evolution.

      • <left_internal_ip> — внутренний IP-адрес ВМ remote-gateway.

      • <left_public_ip> — публичный IP-адрес ВМ remote-gateway.

      • <left_subnet> — адрес подсети remote-subnet.

      При настройке удаленной стороны она становится левой стороной туннеля, а сторона облака Evolution становится правой стороной.

      Подробное описание параметров файла /etc/ipsec.conf смотрите в документации strongSwan.

  9. Заполните файл секретов:

    1. Откройте файл /etc/ipsec.secrets для редактирования:

      sudo nano /etc/ipsec.secrets
    2. Вставьте в файл ключевую фразу (PSK, Pre-Shared Key) туннеля:

      <left_public_ip> <right_public_ip> : PSK "<secret_phrase>"

      Где:

      • <left_public_ip> — публичный IP-адрес ВМ cloud-gateway на платформе Evolution.

      • <right_public_ip> — публичный IP-адрес ВМ remote-gateway.

      • <secret_phrase> — ключ для установки IPsec-соединения. Укажите такое же значение, как и в настройках облачного VPN-шлюза.

  10. Перезапустите strongSwan:

    sudo systemctl restart strongswan-starter.service
  11. Проверьте, что VPN-шлюз на стороне Advanced поднят, а IPsec-туннель установлен:

    sudo ipsec status

    Результат:

    Security Associations (1 up, 0 connecting):
    advanced-to-evo[2]: ESTABLISHED 110 seconds ago, 10.0.***.***[37.18.***.***]...176.108.***.***[176.108.***.***]
    advanced-to-evo{1}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: c9c35ad9_i c0c7b197_o
    advanced-to-evo{1}: 10.0.***.***/24 === 172.31.***.***/24

Проверьте работу шлюзов

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

  1. На стороне платформы Evolution на ВМ cloud-gateway выполните команду:

    ping -c4 <remote_gateway_internal_ip>

    Где <remote_gateway_internal_ip> — внутренний IP-адрес ВМ remote-gateway на платформе Advanced.

  2. На стороне платформы Advanced на ВМ remote-gateway выполните команду:

    ping -c4 <cloud_gateway_internal_ip>

    Где <cloud_gateway_internal_ip> — внутренний IP-адрес ВМ cloud-gateway на платформе Evolution.

5. Настройте маршрутизацию

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

Настройте маршрутизацию в Evolution

  1. Перейдите в личный кабинет платформы Evolution.

  2. На верхней панели слева нажмите Кнопка с изображением девяти точек и выберите Сеть → VPC.

  3. Выберите сеть cloud-vpc.

  4. Перейдите на вкладку Маршруты.

  5. Нажмите Создать маршрут.

  6. Укажите параметры маршрута:

    • Адрес назначения — адрес подсети remote-subnet на платформе Advanced.

    • Next Hop TypeВиртуальная машина.

    • Виртуальная машинаcloud-gateway.

    • Интерфейс — выберите интерфейс ВМ cloud-gateway, который подключен к подсети cloud-subnet.

  7. Нажмите Создать.

    Дождитесь, когда статус маршрута сменится на «Активен».

Настройте маршрутизацию в Advanced

  1. Войдите в консоль управления Advanced:

  2. В списке сервисов выберите Virtual Private Cloud.

  3. В меню слева выберите Route Tables.

  4. Нажмите Create Route Table.

  5. Укажите параметры таблицы маршрутизации:

    • Namertb-remote-vpc.

    • VPCremote-vpc.

  6. Добавьте маршрут в таблицу:

    1. В блоке Route Settings нажмите Add Route.

    2. Укажите параметры маршрута:

      • Destination TypeIP address.

      • Destination — адрес подсети cloud-subnet на платформе Evolution.

      • Next Hop TypeServer.

      • Next Hopremote-gateway.

  7. Нажмите OK.

  8. Во всплывающем окне нажмите Associate Subnet.

  9. На вкладке Associated Subnets нажмите Associate Subnet.

  10. Отметьте подсеть remote-subnet и нажмите OK.

6. Проверьте сетевую связность

  1. Проверьте, что удаленный VPN-шлюз и удаленная клиентская ВМ доступны с облачной клиентской ВМ:

    1. Перейдите в личный кабинет платформы Evolution.

    2. На верхней панели слева нажмите Кнопка с изображением девяти точек и выберите Инфраструктура → Виртуальные машины.

    3. Выберите виртуальную машину cloud-vm в списке.

    4. Перейдите на вкладку Серийная консоль.

    5. Введите логин и пароль, указанные при создании виртуальной машины.

    6. В терминале поочередно выполните команды:

      ping -c4 <remote_gateway_internal_ip>
      ping -c4 <remote_vm_internal_ip>

      Где:

      • <remote_gateway_internal_ip> — внутренний IP-адрес ВМ remote-gateway на платформе Advanced.

      • <remote_vm_internal_ip> — внутренний IP-адрес ВМ remote-vm на платформе Advanced.

  2. Проверьте, что облачный VPN-шлюз и облачная ВМ доступны с удаленной клиентской ВМ:

    1. Войдите в консоль управления Advanced:

    2. В списке сервисов выберите Elastic Cloud Server.

    3. Напротив виртуальной машины remote-vm нажмите Remote Login.

    4. Введите логин и пароль, указанные при создании виртуальной машины.

    5. В терминале поочередно выполните команды:

      ping -c4 <cloud_gateway_internal_ip>
      ping -c4 <cloud_vm_internal_ip>

      Где:

      • <cloud_gateway_internal_ip> — внутренний IP-адрес ВМ cloud-gateway на платформе Evolution.

      • <cloud_vm_internal_ip> — внутренний IP-адрес ВМ cloud-vm на платформе Evolution.

Теперь клиентские ВМ могут обмениваться трафиком с помощью настроенного IPsec-туннеля.

Результат

Вы научились настраивать защищенное соединение между инфраструктурой в облаке Cloud.ru Evolution и удаленной стороной.