tocdepth

2

Организация IPSEC VPN-туннелей между VPC-сетью Evolution и удаленной площадкой

В этой статье описывается решение по организации IPSEC VPN-туннелей между VPC-сетью платформы Evolution и удаленной площадкой

Описание паттерна

Паттерн описывает решение по организации IPSEC VPN-туннеля от платформы Evolution к внешнему ресурсу (on-prem площадка Заказчика или другие облачные платформы).

Преимущества паттерна

Ограничения и риски

Паттерн разработан для стандартизации организации IPSEC-туннелей на платформе Evolution

Сетевые накладные расходы при использовании туннелей IPSEC.

Не более 15 сетевых сегментов в VPC.

Общая схема

../../_images/schm__templates_networks_evo-network-tools_ipsec-creation.svg

Реализация

Для построения IPSEC VPN-туннеля на платформе Evolution используется виртуальная машина с ОС Ubuntu и установленным на ней ПО Strongswan.

Strongswan — это открытое ПО, распространяемое по лицензии GPL, предоставляющее реализацию протокола IPSEC для различных операционных систем, включая Linux.

Схему организации сети в VPC нужно построить таким образом, чтобы VM Strongswan выполняла функции шлюза в интернет.

Таким образом, эта VM будет иметь один интерфейс с Direct IP и некоторое количество интерфейсов (от 1 до 15) в сторону сетей VPC.

Важно использовать именно Direct IP, а не Floating IP. Это позволит избежать возражений со стороны служб информационной безопасности, что потенциально какие-то сети могут иметь путь в интернет минуя VM Strongswan.

Ограничение в 15 интерфейсов не строгое, среда виртуализации позволяет создавать до 28 интерфейсов на VM (включая интерфейс с Direct IP), однако мы рекомендуем создавать не более 15 интерфейсов.

Сетевые сегменты, в которых размещается пользовательская нагрузка, создаются как изолированные.

Далее рассмотрим пошаговый процесс по реализации этого сценария.

В инструкции указаны конкретные адреса и сети. При использовании этого сценария не забудьте изменить адреса и сети на собственные.

В этом примере развертывание VM выполняется в зоне доступности ru.AZ-2. Вы можете выбрать другую AZ, но она должна быть одна в рамках сценария.

Шаг 1. Создание изолированных сетей

  1. В личном кабинете перейдите в раздел Сеть → Подсети и нажмите Создать подсеть.

  2. В появившемся окне укажите следующие данные:

    • Название: net-internal-1;

    • Локальная подсеть: Трафик замкнут;

    • Зона доступности: ru.AZ-2;

    • Адрес: «192.168.1.0/24».

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

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

    • Название: net-internal-2;

    • Локальная подсеть: Трафик замкнут;

    • Зона доступности: ru.AZ-2;

    • Адреc: «192.168.2.0/24».

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

Шаг 2. Создание группы безопасности

Необходимо создать две группы безопасности: одну для VM внутренней сети, а другую для внешнего интерфейса VM Strongswan.

Группа безопасности VM внутренней сети

Создадим группу безопасности для VM внутренней сети:

  1. В личном кабинете перейдите в раздел Сеть → Группы безопасности и нажмите Создать группы безопасности.

  2. В появившемся окне укажите следующие данные:

    • Зона доступности: ru.AZ-2;

    • Название: sg-app;

    • Правила входящего трафика:

      • Протокол — любой;

      • Тип источника — IP адрес;

      • Источник — «192.168.0.0/16».

      или

      • Протокол — любой;

      • Тип источника — группа безопасности;

      • Источник — sg-app.

    • Правила исходящего трафика:

      • Протокол - любой, Тип источника - IP адрес, Источник - «0.0.0.0/0».

  3. Нажмите кнопку Создать.

Группа безопасности внешнего интерфейса VM Strongswan

Создадим группу безопасности для внешнего интерфейса VM Strongswan:

  1. В разделе Группы безопасности нажмите Создать группы безопасности.

  2. В появившемся окне укажите следующие данные:

    • Зона доступности: ru.AZ-2;

    • Название: sg-swan-externa;

    • Правила входящего трафика:

      • Протокол - UDP, Порт - 500, Тип источника - IP адрес, Источник - «0.0.0.0/0»;

      • Протокол - UDP, Порт - 4500, Тип источника - IP адрес, Источник - «0.0.0.0/0».

    • Правила исходящего трафика:

      • Протокол - любой, Тип источника - IP адрес, Источник - «0.0.0.0/0».

  3. Нажмите кнопку Создать.

Шаг 3. Создание виртуальной машины

  1. В личном кабинете перейдите в раздел Инфраструктура → Виртуальные машины и нажмите Создать виртуальную машину.

  2. В разделе Конфигурация укажите следующие данные:

    • Название: vm-swan;

    • Зона доступности: ru.AZ-2;

    • Образ: Ubuntu 22.04;

    • СPU: в зависимости от требований к пропускной способности;

    • RAM: для работы IPSEC не требуется много памяти, выбирайте минимально возможное значение для заданного количества CPU;

    • Диск: 10 Гб.

  3. В разделе Настройки выберите следущие данные:

    • Подключить публичный IP: Прямой → Арендовать новый → Группа безопасности → sg-swan-external, SSH-access_ru.AZ-2.

    • Метод аутентификации: Публичный ключ.

  4. Нажмите кнопку Создать.

Шаг 4. Настройка виртуальной машины

Настройка виртуальной машины проводится в консоли SSH.

  1. Зайдите в консоль VM.

  2. Поменяйте Shell для пользователя. После этого действия необходимо переключиться на нужного пользователя:

    sudo chsh -s /bin/bash <username>
    
  3. Установите обновления операционной системы:

    sudo apt update && sudo apt upgrade -y
    
  4. Отредактируйте файл сетевых конфигураций, чтобы VM корректно отрабатывала маршруты:

    sudo vi /etc/netplan/50-cloud-init.yaml
    
    network:
        version: 2
        ethernets:
            enp3s0:
                dhcp4: true
                nameservers:
                    addresses: [8.8.8.8, 8.8.4.4]
            enp4s0:
                dhcp4: true
                dhcp4-overrides:
                    use-routes: false
                    use-dns: false
            enp5s0:
                dhcp4: true
                dhcp4-overrides:
                    use-routes: false
                    use-dns: false
    
  5. Разрешите форвардинг трафика:

    sudo echo "1" > /proc/sys/net/ipv4/ip_forward
    
    sudo vi /etc/sysctl.conf
    
  6. Расскомментируйте строку:

    net.ipv4.ip_forward=1
    
  7. Настройте ufw:

       ufw allow ssh
    
       ufw enable
    
       vi /etc/ufw/before.rules
    
    В конце необходимо добавить:
    
    *nat
    -F
    :POSTROUTING ACCEPT [0:0]
    -A POSTROUTING -s 192.168.0.0/16 -d 10.0.0.0/8 -j ACCEPT
    -A POSTROUTING -s 192.168.0.0/16 -o enp3s0 -j MASQUERADE
    
    COMMIT
    
  8. Завершите операцию:

    ufw reload
    

Шаг 5. Добавление внутреннего интерфейса

Для добавление внутренних интерфейсов к VM необходимо подключить подсети.

Подключим к VM первую подсеть:

  1. На вкладке Виртуальные машины выберете вашу VM.

  2. Выберете Сетевые параметры → Подключить к подсети.

  3. В открывшемся окне введите следующие данные:

    • VPC: Изолированные сети;

    • Подсети: «192.168.1.0/24»;

    • Внутренний IP: «192.168.1.254» (ввести вручную);

    • Группа безопасности: любая.

  4. Выберите Подсети → Свойства интерфейса → Проверка адреса источника/назначения: нет.

Теперь подключим к VM вторую подсеть:

  1. Выберете Сетевые параметры → Подключить к подсети.

  2. В открывшемся окне введите следующие данные:

    • VPC: Изолированные сети;

    • Подсети: «192.168.2.0/24»;

    • Внутренний IP: «192.168.2.254» (ввести вручную);

    • Группа безопасности: любая.

  3. Для каждой из добавленных подсетей сделайте Подсети → Свойства интерфейса → Проверка адреса источника/назначения: нет.

Шаг 6. Настройка Strongswan

  1. Примените изменения netplan, которые настраивали ранее:

    sudo netplan apply
    
  2. Установите пакеты Strongswan:

    sudo apt install charon-systemd strongswan-swanctl -y
    
  3. Настройте Strongswan:

    sudo vi /etc/swanctl/conf.d/onprem.conf
    
    connections {
    onprem-ipsec {
        local_addrs = <Direct IP>
        remote_addrs = <OnPrem IP>
        local {
        auth = psk
        }
        remote {
        auth = psk
        }
        version = 2 # IKEv2
        mobike = no
        proposals = aes128-sha256-modp2048, default
        dpd_delay = 10s
        children {
        onprem-ipsec {
            # List of local IPv4 subnets
            local_ts = 192.168.0.0/16
            # List of remote IPv4 subnets
            remote_ts = 10.0.0.0/8
            start_action = start
            esp_proposals = aes128-sha256-modp2048
            dpd_action = clear
        }
        }
    }
    }
    # Pre-shared key (PSK) for IPsec connection
    secrets {
    ike-onprem-ipsec {
        secret = <superstrongpassword>
    }
    }
    

    В данном примере реализована аутентификация по паролю (preshared key).

    Тем не менее, рекомендуется использовать аутентификацию по сертификатам. Более подробно об аутентификации по сертификатам можно прочитать в документации.

  4. Загрузите сертификаты и праватные ключи из конфиг файлов:

    sudo swanctl --load-creds
    
  5. Загрузите подключения из конфиг файла:

    sudo swanctl --load-conns
    
Запустили Evolution free tier
для Dev & Test
Получить