Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Архитектура и защита базового интернет-сервиса
    • Анализ поресурсной детализации расходов с помощью Object Storage
        • Схема решения
        • Самостоятельная реализация средствами Yandex Cloud
        • Решение SGW от команды архитекторов Yandex Cloud
      • Соединение с облачной сетью при помощи OpenVPN
      • Создание и настройка шлюза UserGate в режиме прокси-сервера

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте пару ключей SSH
  • Настройте облачную площадку
  • Создайте и настройте облачную сеть
  • Создайте и настройте виртуальные машины на облачной площадке
  • Настройте удаленную площадку
  • Создайте и настройте удаленную сеть
  • Создайте и настройте виртуальные машины на удаленной площадке
  • Проверьте работу IPsec-соединения и связность между удаленными и облачными ресурсами
  • Установите IPsec-соединение между шлюзами и проверьте его работу
  • Проверьте связность между ВМ
  • Как удалить созданные ресурсы
  1. Базовая инфраструктура
  2. VPNs
  3. Организация сетевой связности с помощью IPsec-шлюзов
  4. Самостоятельная реализация средствами Yandex Cloud

Самостоятельная организация сетевой связности с помощью IPsec-шлюзов средствами Yandex Cloud

Статья создана
Yandex Cloud
Улучшена
Danila N.
Обновлена 6 марта 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
    • Создайте пару ключей SSH
  • Настройте облачную площадку
    • Создайте и настройте облачную сеть
    • Создайте и настройте виртуальные машины на облачной площадке
  • Настройте удаленную площадку
    • Создайте и настройте удаленную сеть
    • Создайте и настройте виртуальные машины на удаленной площадке
  • Проверьте работу IPsec-соединения и связность между удаленными и облачными ресурсами
    • Установите IPsec-соединение между шлюзами и проверьте его работу
    • Проверьте связность между ВМ
  • Как удалить созданные ресурсы

Вы можете самостоятельно реализовать защищенное соединение между облачной инфраструктурой и условным корпоративным ЦОД с помощью IPsec-шлюзов по схеме:

  1. Подготовьте облако к работе.
  2. Настройте облачную площадку.
  3. Настройте удаленную площадку.
  4. Проверьте работу IPsec-соединения и связность между удаленными и облачными ресурсами.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость развертывания инфраструктуры для данного решения на базе IPsec-шлюзов входят:

  • Плата за постоянно запущенные виртуальные машины (см. тарифы Yandex Compute Cloud).
  • Плата за использование статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud).

Создайте пару ключей SSHСоздайте пару ключей SSH

Чтобы подключаться к виртуальной машине по SSH, нужна пара ключей: открытый ключ размещается на ВМ, а закрытый ключ хранится у пользователя. Такой способ более безопасен, чем подключение по логину и паролю.

Примечание

В публичных образах Linux, предоставляемых Yandex Cloud, возможность подключения по протоколу SSH с использованием логина и пароля по умолчанию отключена.

Чтобы создать пару ключей:

Linux/macOS
Windows 10/11
Windows 7/8
  1. Откройте терминал.

  2. Создайте новый ключ с помощью команды ssh-keygen:

    ssh-keygen -t ed25519 -C "<опциональный_комментарий>"
    

    Вы можете передать в параметре -C пустую строку, чтобы не добавлять комментарий, или не указывать параметр -C вообще — в таком случае будет добавлен комментарий по умолчанию.

    После выполнения команды вам будет предложено указать имя и путь к файлам с ключами, а также ввести пароль для закрытого ключа. Если задать только имя, пара ключей будет создана в текущей директории. Открытый ключ будет сохранен в файле с расширением .pub, закрытый ключ — в файле без расширения.

    По умолчанию команда предлагает сохранить ключ под именем id_ed25519 в директории /home/<имя_пользователя>/.ssh. Если в этой директории уже есть SSH-ключ с именем id_ed25519, вы можете случайно перезаписать его и потерять доступ к ресурсам, в которых он используется. Поэтому рекомендуется использовать уникальные имена для всех SSH-ключей.

Если у вас еще не установлен OpenSSH, установите его по инструкции.

  1. Запустите cmd.exe или powershell.exe (предварительно обновите PowerShell).

  2. Создайте новый ключ с помощью команды ssh-keygen:

    ssh-keygen -t ed25519 -C "<опциональный_комментарий>"
    

    Вы можете передать в параметре -C пустую строку, чтобы не добавлять комментарий, или не указывать параметр -C вообще — в таком случае будет добавлен комментарий по умолчанию.

    После выполнения команды вам будет предложено указать имя и путь к файлам с ключами, а также ввести пароль для закрытого ключа. Если задать только имя, пара ключей будет создана в текущей директории. Открытый ключ будет сохранен в файле с расширением .pub, закрытый ключ — в файле без расширения.

    По умолчанию команда предлагает сохранить ключ под именем id_ed25519 в папку C:\Users\<имя_пользователя>/.ssh. Если в этой директории уже есть SSH-ключ с именем id_ed25519, вы можете случайно перезаписать его и потерять доступ к ресурсам, в которых он используется. Поэтому рекомендуется использовать уникальные имена для всех SSH-ключей.

Создайте ключи с помощью приложения PuTTY:

  1. Скачайте и установите PuTTY.

  2. Добавьте папку с PuTTY в переменную PATH:

    1. Нажмите кнопку Пуск и в строке поиска Windows введите Изменение системных переменных среды.
    2. Справа снизу нажмите кнопку Переменные среды....
    3. В открывшемся окне найдите параметр PATH и нажмите Изменить.
    4. Добавьте путь к папке в список.
    5. Нажмите кнопку ОК.
  3. Запустите приложение PuTTYgen.

  4. В качестве типа генерируемой пары выберите EdDSA. Нажмите Generate и поводите курсором в поле выше до тех пор, пока не закончится создание ключа.

    ssh_generate_key

  5. В поле Key passphrase введите надежный пароль. Повторно введите его в поле ниже.

  6. Нажмите кнопку Save private key и сохраните закрытый ключ. Никому не сообщайте ключевую фразу от него.

  7. Нажмите кнопку Save public key и сохраните открытый ключ в файле <имя_ключа>.pub.

Настройте облачную площадкуНастройте облачную площадку

На этом этапе вы зарезервируете два статических IP-адреса для IPsec-шлюзов, а также создадите и настроите инфраструктуру облачной площадки Yandex Cloud: IPsec-шлюз, две виртуальные машины, сеть с двумя подсетями.

Создайте и настройте облачную сетьСоздайте и настройте облачную сеть

Зарезервируйте публичные IP-адреса для шлюзовЗарезервируйте публичные IP-адреса для шлюзов

Зарезервируйте два статических публичных IP-адреса в зоне доступности ru-central1-b:

  • Адрес основного IPsec-шлюза cloud-gw — в дальнейшем будет обозначаться <x1.x1.x1.x1>.
  • Адрес удаленного IPsec-шлюза remote-gw — в дальнейшем будет обозначаться <x2.x2.x2.x2>.

Создайте сеть и подсети на облачной площадкеСоздайте сеть и подсети на облачной площадке

  1. Создайте сеть с именем cloud-net. При создании сети отключите опцию Создать подсети.

  2. В сети cloud-net вручную создайте подсети со следующими параметрами:

    1. Для подключения основного IPsec-шлюза cloud-gw:

      • Имя — ipsec-subnet.
      • Зона — ru-central1-b.
      • CIDR — 172.16.0.0/24.
    2. Для подключения виртуальной машины vm-d:

      • Имя — subnet-d.
      • Зона — ru-central1-d.
      • CIDR — 172.16.1.0/24.
    3. Для подключения виртуальной машины vm-b:

      • Имя — subnet-b.
      • Зона — ru-central1-b.
      • CIDR — 172.16.2.0/24.

Создайте и настройте группу безопасности для основного IPsec-шлюзаСоздайте и настройте группу безопасности для основного IPsec-шлюза

  1. В сети cloud-net создайте группу безопасности с именем cloud-net-sg.

  2. В группе безопасности cloud-net-sg создайте правила в соответствии с таблицей:

    Направление
    трафика
    Описание Диапазон портов Протокол Источник /
    Назначение
    CIDR блоки
    Исходящий any Весь Любой CIDR 0.0.0.0/0
    Входящий icmp Весь ICMP CIDR 0.0.0.0/0
    Входящий ssh 22 TCP CIDR 0.0.0.0/0
    Входящий ipsec-udp-500 500 UDP CIDR <x2.x2.x2.x2>/32
    Входящий ipsec-udp-4500 4500 UDP CIDR <x2.x2.x2.x2>/32
    Входящий subnet-d Весь Любой CIDR 172.16.1.0/24
    Входящий subnet-b Весь Любой CIDR 172.16.2.0/24

Настройте статическую маршрутизацию для основного IPsec-шлюзаНастройте статическую маршрутизацию для основного IPsec-шлюза

  1. В консоли управления перейдите в каталог, в котором создана сеть cloud-net.

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

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

  4. Перейдите на вкладку Таблицы маршрутизации и нажмите Создать.

  5. В поле Имя укажите cloud-net-rt.

  6. В блоке Статические маршруты нажмите Добавить маршрут.

    1. В открывшемся окне в поле Префикс назначения укажите 10.10.0.0/16.
    2. В поле IP-адрес укажите внутренний IP-адрес основного IPsec-шлюза — 172.16.0.10.
    3. Нажмите Добавить.
  7. Нажмите Создать таблицу маршрутизации.

  8. Привяжите таблицу маршрутизации cloud-net-rt к подсетям subnet-d и subnet-b:

    1. Перейдите на вкладку Обзор.
    2. В строке подсети subnet-d нажмите и выберите Привязать таблицу маршрутизации.
    3. В открывшемся окне выберите таблицу маршрутизации cloud-net-rt и нажмите Привязать.
    4. Повторите два предыдущих шага для подсети subnet-b, чтобы привязать к ней таблицу маршрутизации cloud-net-rt.

Создайте и настройте виртуальные машины на облачной площадкеСоздайте и настройте виртуальные машины на облачной площадке

Создайте ВМ с основным IPsec-шлюзом на облачной площадкеСоздайте ВМ с основным IPsec-шлюзом на облачной площадке

  1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите Виртуальная машина.

  2. В блоке Образ загрузочного диска в поле Поиск продукта введите IPSec-инстанс и выберите публичный образ IPSec-инстанс.

  3. В блоке Расположение выберите зону доступности ru-central1-b, где находится подсеть, к которой будет подключен основной IPsec-шлюз.

  4. В блоке Сетевые настройки:

    1. В поле Подсеть выберите подсеть ipsec-subnet.

    2. В поле Публичный IP-адрес выберите Список.

    3. В открывшемся поле IP-адрес выберите публичный IP-адрес <x1.x1.x1.x1>, который вы ранее зарезервировали.

    4. В поле Группы безопасности выберите ранее созданную группу безопасности cloud-net-sg.

    5. Разверните блок Дополнительно:

      • В поле Внутренний IPv4 адрес выберите Вручную.
      • В появившемся поле для ввода укажите 172.16.0.10.
  5. В блоке Доступ выберите вариант SSH-ключ и укажите данные для доступа на ВМ:

    • В поле Логин укажите ipsec.

    • В поле SSH-ключ:

      • Нажмите кнопку Добавить ключ.
      • Задайте имя SSH-ключа.
      • Загрузите или вставьте содержимое созданного ранее публичного SSH-ключа для доступа к ВМ.
      • Нажмите кнопку Добавить.

      SSH-ключ будет добавлен в ваш профиль пользователя организации.

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

  6. В блоке Общая информация задайте имя ВМ: cloud-gw.

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

Дождитесь, когда ВМ перейдет в статус Running.

Настройте основной IPsec-шлюзНастройте основной IPsec-шлюз

Для настройки шлюза используйте IP-адреса, имя пользователя и ключ SSH, которые вы указывали при создании виртуальной машины cloud-gw.

  1. Подключитесь к виртуальной машине по SSH:

    ssh ipsec@<x1.x1.x1.x1>
    
  2. Задайте параметры даты и времени для ВМ:

    sudo timedatectl set-timezone Europe/Moscow
    sudo timedatectl set-ntp True
    timedatectl
    
  3. Для оптимальной работы протокола ICMP отключите функциональность ICMP Redirects на IPsec-шлюзе:

      sudo su -c "echo 'net.ipv4.conf.eth0.send_redirects=0' >> /etc/sysctl.conf"
      sudo su -c "echo 'net.ipv4.conf.default.send_redirects=0' >> /etc/sysctl.conf"
    

    Подробнее об этом читайте в документации strongSwan.

  4. Создайте резервную копию файла конфигурации swanctl.conf:

    sudo mv /etc/swanctl/swanctl.conf /etc/swanctl/swanctl.orig
    
  5. Создайте конфигурацию для основного IPsec-шлюза в файле /etc/swanctl/swanctl.conf:

    sudo nano /etc/swanctl/swanctl.conf
    

    В открывшемся файле укажите:

    connections {
      cloud-ipsec {
        local_addrs = 172.16.0.10
        remote_addrs = <x2.x2.x2.x2>
        local {
          auth = psk
        }
        remote {
          auth = psk
        }
        version = 2 # IKEv2
        mobike = no
        proposals = aes128gcm16-prfsha256-ecp256, default
        dpd_delay = 10s
        children {
          cloud-ipsec {
            # List of local IPv4 subnets
            local_ts = 172.16.1.0/24, 172.16.2.0/24
    
            # List of remote IPv4 subnets
            remote_ts = 10.10.0.0/16
    
            start_action = trap
            esp_proposals = aes128gcm16
            dpd_action = clear
          }
        }
      }
    }
    
    # Pre-shared key (PSK) for IPsec connection
    secrets {
      ike-cloud-ipsec {
        secret = <пароль_ipsec>
      }
    }
    

    Где:

    • cloud-ipsec — имя IPsec-соединения.
    • remote_addrs — публичный IP-адрес <x2.x2.x2.x2> удаленного IPsec-шлюза.
    • proposals — Internet Key Exchange Version 2 (IKEv2). Список шифров (ciphers), которые могут использоваться для шифрования канала управления IPsec-соединением.
    • esp_proposals — Encapsulating Security Payload. Список шифров (ciphers), которые могут использоваться для шифрования передаваемых данных.
    • secret — Pre-Shared Key. Ключ (пароль) <пароль_ipsec>, который будет использоваться для установки IPsec-соединения.

    Примечание

    В файле конфигурации swanctl.conf вы можете указать дополнительные параметры в соответствии с документацией strongSwan.

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

  6. Загрузите конфигурацию в strongSwan:

    sudo swanctl --load-all
    
  7. Перезапустите strongSwan:

    sudo systemctl restart strongswan
    
  8. Проверьте состояние strongSwan:

    sudo swanctl -L
    
  9. (Опционально) Посмотрите логи strongSwan:

    sudo journalctl -u strongswan --no-pager
    sudo journalctl -u strongswan -n 20
    sudo journalctl -u strongswan -f
    
  10. Закройте соединение с cloud-gw:

    exit
    

Разверните тестовые ВМ на облачной площадкеРазверните тестовые ВМ на облачной площадке

  1. Создайте тестовую ВМ vm-d со следующими параметрами:

    • Операционная система — Ubuntu 22.04 LTS.
    • Зона доступности — ru-central1-d.
    • Подсеть — subnet-d.
    • Публичный IP-адрес — Без адреса.
    • Внутренний IPv4-адрес — 172.16.1.5.
    • Логин — ipsec.
    • SSH-ключ — публичный SSH-ключ для доступа к ВМ.
    • Имя — vm-d.
  2. Создайте тестовую ВМ vm-b со следующими параметрами:

    • Операционная система — Ubuntu 22.04 LTS.
    • Зона доступности — ru-central1-b.
    • Подсеть — subnet-b.
    • Публичный IP-адрес — Без адреса.
    • Внутренний IPv4-адрес — 172.16.2.5.
    • Логин — ipsec.
    • SSH-ключ — публичный SSH-ключ для доступа к ВМ.
    • Имя — vm-b.

Настройте удаленную площадкуНастройте удаленную площадку

На этом этапе вы создадите и настроите инфраструктуру удаленной площадки условного корпоративного ЦОД. В нее войдут IPsec-шлюз, виртуальная машина, сеть и подсеть.

Создайте и настройте удаленную сетьСоздайте и настройте удаленную сеть

Создайте сеть и подсеть на удаленной площадкеСоздайте сеть и подсеть на удаленной площадке

  1. Создайте сеть с именем remote-net. При создании сети отключите опцию Создать подсети.

  2. В сети remote-net вручную создайте подсеть для подключения удаленного IPsec-шлюза remote-gw и ВМ vm-1 со следующими параметрами:

    • Имя — subnet-1.
    • Зона — ru-central1-b.
    • CIDR — 10.10.0.0/16.

Создайте и настройте группу безопасности для удаленного IPsec-шлюзаСоздайте и настройте группу безопасности для удаленного IPsec-шлюза

  1. В сети remote-net создайте группу безопасности с именем remote-net-sg.

  2. В группе безопасности remote-net-sg создайте правила в соответствии с таблицей:

    Направление
    трафика
    Описание Диапазон портов Протокол Источник /
    Назначение
    CIDR блоки
    Исходящий any Весь Любой CIDR 0.0.0.0/0
    Входящий icmp Весь ICMP CIDR 0.0.0.0/0
    Входящий ssh 22 TCP CIDR 0.0.0.0/0
    Входящий ipsec-udp-500 500 UDP CIDR <x1.x1.x1.x1>/32
    Входящий ipsec-udp-4500 4500 UDP CIDR <x1.x1.x1.x1>/32
    Входящий subnet-1 Весь Любой CIDR 10.10.0.0/16

Настройте статическую маршрутизацию для удаленного IPsec-шлюзаНастройте статическую маршрутизацию для удаленного IPsec-шлюза

  1. В консоли управления перейдите в каталог, в котором создана сеть remote-net.

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

  3. Выберите сеть remote-net.

  4. Перейдите на вкладку Таблицы маршрутизации и нажмите Создать.

  5. В поле Имя укажите remote-net-rt.

  6. В блоке Статические маршруты нажмите Добавить маршрут.

    1. В открывшемся окне в поле Префикс назначения укажите 172.16.1.0/24.
    2. В поле IP-адрес укажите внутренний IP-адрес основного IPsec-шлюза — 10.10.20.20.
    3. Нажмите Добавить.
  7. Повторите предыдущий шаг, чтобы добавить второе правило с параметрами:

    • Префикс назначения — 172.16.2.0/24.
    • IP-адрес — 10.10.20.20.
  8. Нажмите Создать таблицу маршрутизации.

  9. Привяжите таблицу маршрутизации remote-net-rt к подсети subnet-1:

    1. Перейдите на вкладку Обзор.
    2. В строке подсети subnet-1 нажмите значок и выберите пункт Привязать таблицу маршрутизации.
    3. В открывшемся окне выберите таблицу remote-net-rt и нажмите Привязать.

Создайте и настройте виртуальные машины на удаленной площадкеСоздайте и настройте виртуальные машины на удаленной площадке

Создайте ВМ с удаленным IPsec-шлюзомСоздайте ВМ с удаленным IPsec-шлюзом

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

  1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите Виртуальная машина.

  2. В блоке Образ загрузочного диска в поле Поиск продукта введите IPSec-инстанс и выберите публичный образ IPSec-инстанс.

  3. В блоке Расположение выберите зону доступности ru-central1-b — зону доступности, где находится подсеть, к которой будет подключен удаленный IPsec-шлюз.

  4. В блоке Сетевые настройки:

    1. В поле Подсеть выберите subnet-1.

    2. В поле Публичный IP-адрес выберите Список.

    3. В открывшемся поле IP-адрес выберите публичный IP-адрес <x2.x2.x2.x2>, который был зарезервирован ранее.

    4. В поле Группы безопасности выберите ранее созданную группу безопасности remote-net-sg.

    5. Разверните блок Дополнительно:

      • В поле Внутренний IPv4 адрес выберите Вручную.
      • В появившемся поле для ввода укажите 10.10.20.20.
  5. В блоке Доступ выберите вариант SSH-ключ и укажите данные для доступа на ВМ:

    • В поле Логин укажите ipsec.

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

      Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:

      • Нажмите кнопку Добавить ключ.
      • Задайте имя SSH-ключа.
      • Загрузите или вставьте содержимое созданного ранее публичного SSH-ключа для доступа к ВМ.
      • Нажмите кнопку Добавить.

      SSH-ключ будет добавлен в ваш профиль пользователя организации.

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

  6. В блоке Общая информация задайте имя ВМ: remote-gw. Требования к имени:

    • длина — от 2 до 63 символов;
    • может содержать строчные буквы латинского алфавита, цифры и дефисы;
    • первый символ — буква, последний — не дефис.
  7. Нажмите кнопку Создать ВМ.

Дождитесь, когда ВМ перейдет в статус Running.

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

Для настройки шлюза используйте IP-адреса, имя пользователя и ключ SSH, которые вы указывали при создании ВМ remote-gw.

  1. Подключитесь к виртуальной машине по SSH:

    ssh ipsec@<x2.x2.x2.x2>
    
  2. Задайте параметры даты и времени для ВМ:

    sudo timedatectl set-timezone Europe/Moscow
    sudo timedatectl set-ntp True
    timedatectl
    
  3. Для оптимальной работы протокола ICMP отключите функциональность ICMP Redirects на IPsec-шлюзе:

      sudo su -c "echo 'net.ipv4.conf.eth0.send_redirects=0' >> /etc/sysctl.conf"
      sudo su -c "echo 'net.ipv4.conf.default.send_redirects=0' >> /etc/sysctl.conf"
    

    Подробнее об этом читайте в документации strongSwan.

  4. Создайте резервную копию файла конфигурации swanctl.conf:

    sudo mv /etc/swanctl/swanctl.conf /etc/swanctl/swanctl.orig
    
  5. Создайте конфигурацию для удаленного IPsec-шлюза в файле /etc/swanctl/swanctl.conf:

    sudo nano /etc/swanctl/swanctl.conf
    

    В открывшемся файле укажите:

    connections {
      cloud-ipsec {
        local_addrs = 10.10.20.20
        remote_addrs = <x1.x1.x1.x1>
        local {
          auth = psk
        }
        remote {
          auth = psk
        }
        version = 2 # IKEv2
        mobike = no
        proposals = aes128gcm16-prfsha256-ecp256, default
        dpd_delay = 10s
        children {
          cloud-ipsec {
            # List of local IPv4 subnets
            local_ts = 10.10.0.0/16
    
            # List of remote IPv4 subnets
            remote_ts = 172.16.1.0/24, 172.16.2.0/24
    
            start_action = trap
            esp_proposals = aes128gcm16
            dpd_action = clear
          }
        }
      }
    }
    
    # Pre-shared key (PSK) for IPsec connection
    secrets {
      ike-cloud-ipsec {
        secret = <пароль_ipsec>
      }
    }
    

    Где:

    • cloud-ipsec — имя IPsec-соединения.
    • remote_addrs — публичный IP-адрес <x1.x1.x1.x1> основного IPsec-шлюза.
    • proposals — Internet Key Exchange Version 2 (IKEv2). Список шифров (ciphers), которые могут использоваться для шифрования канала управления IPsec-соединением.
    • esp_proposals — Encapsulating Security Payload. Список шифров (ciphers), которые могут использоваться для шифрования передаваемых данных.
    • secret — Pre-Shared Key. Ключ (пароль) <пароль_ipsec>, который будет использоваться для установки IPsec-соединения.

    Примечание

    В файле конфигурации swanctl.conf вы можете указать дополнительные параметры в соответствии с документацией strongSwan.

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

  6. Загрузите конфигурацию в strongSwan:

    sudo swanctl --load-all
    
  7. Перезапустите strongSwan:

    sudo systemctl restart strongswan
    
  8. Проверьте состояние strongSwan:

    sudo swanctl -L
    
  9. (Опционально) Посмотрите логи strongSwan:

    sudo journalctl -u strongswan --no-pager
    sudo journalctl -u strongswan -n 20
    sudo journalctl -u strongswan -f
    
  10. Закройте соединение с remote-gw:

    exit
    

Разверните тестовую ВМ на удаленной площадкеРазверните тестовую ВМ на удаленной площадке

Создайте тестовую ВМ со следующими параметрами:

  • Операционная система — Ubuntu 22.04 LTS.
  • Зона доступности — ru-central1-b.
  • Подсеть — subnet-1.
  • Публичный IP-адрес — Без адреса.
  • Внутренний IPv4-адрес — 10.10.10.10.
  • Логин — ipsec.
  • SSH-ключ — публичный SSH-ключ для доступа к ВМ.
  • Имя — vm-1.

Проверьте работу IPsec-соединения и связность между удаленными и облачными ресурсамиПроверьте работу IPsec-соединения и связность между удаленными и облачными ресурсами

Установите IPsec-соединение между шлюзами и проверьте его работуУстановите IPsec-соединение между шлюзами и проверьте его работу

IPsec-шлюзы на основной и удаленной площадках настроены на установление IPsec-соединения между собой при получении любым из них трафика, предназначенного для подсети на другой стороне IPsec-соединения (за другим шлюзом).

Примечание

На создание туннеля между шлюзами может потребоваться время. Если при активации IPsec-соединения команда ping не выдает нужного результата, подождите несколько минут, затем попробуйте выполнить команду снова.

Для активации IPsec-соединения между шлюзами:

  1. Отправьте несколько пакетов ICMP со стороны удаленной площадки, например, от ВМ vm-1 к ВМ vm-d с помощью команды ping:

    ssh -J ipsec@<x2.x2.x2.x2> ipsec@10.10.10.10 ping -c4 172.16.1.5
    

    Результат:

    PING 172.16.1.5 (172.16.1.5) 56(84) bytes of data.
    64 bytes from 172.16.1.5: icmp_seq=1 ttl=58 time=4.92 ms
    64 bytes from 172.16.1.5: icmp_seq=2 ttl=58 time=4.33 ms
    64 bytes from 172.16.1.5: icmp_seq=3 ttl=58 time=4.31 ms
    64 bytes from 172.16.1.5: icmp_seq=4 ttl=58 time=4.38 ms
    
    --- 172.16.1.5 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3005ms
    rtt min/avg/max/mdev = 4.306/4.483/4.916/0.251 ms
    
  2. Активируйте IPsec-соединение со стороны облачной площадки — отправьте пакеты ICMP от ВМ vm-b к ВМ vm-1:

    ssh -J ipsec@<x1.x1.x1.x1> ipsec@172.16.2.5 ping -c4 10.10.10.10
    

    Результат:

    PING 10.10.10.10 (10.10.10.10) 56(84) bytes of data.
    64 bytes from 10.10.10.10: icmp_seq=1 ttl=58 time=4.92 ms
    64 bytes from 10.10.10.10: icmp_seq=2 ttl=58 time=4.33 ms
    64 bytes from 10.10.10.10: icmp_seq=3 ttl=58 time=4.31 ms
    64 bytes from 10.10.10.10: icmp_seq=4 ttl=58 time=4.38 ms
    
    --- 10.10.10.10 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3005ms
    rtt min/avg/max/mdev = 4.306/4.483/4.916/0.251 ms
    

Проверьте связность между ВМПроверьте связность между ВМ

  1. Подключитесь к основному IPsec-шлюзу cloud-gw:

    ssh ipsec@<x1.x1.x1.x1>
    
    1. Проверьте состояние strongSwan:

      sudo swanctl -L
      

      Результат:

      cloud-to-remote-site: IKEv1/2, reauthentication every 3060s, no rekeying, dpd delay 30s
        local:  %any
        remote: <x2.x2.x2.x2>
        local pre-shared key authentication:
          id: <x1.x1.x1.x1>
        remote pre-shared key authentication:
          id: <x2.x2.x2.x2>
        cloud-to-remote-site: TUNNEL, rekeying every 28260s, dpd action is restart
          local:  172.16.1.0/24
          remote: 10.10.0.0/16
      cloud-ipsec: IKEv2, no reauthentication, rekeying every 14400s, dpd delay 10s
        local:  172.16.0.10
        remote: <x2.x2.x2.x2>
        local pre-shared key authentication:
        remote pre-shared key authentication:
        cloud-ipsec: TUNNEL, rekeying every 3600s, dpd action is clear
          local:  172.16.1.0/24 172.16.2.0/24
          remote: 10.10.0.0/16
      
    2. Проверьте активные IPsec-соединения:

      sudo swanctl -l
      

      Результат:

      cloud-ipsec: #6, ESTABLISHED, IKEv2, 80e6fa659b4f6307_i* 9f63a85191df1e48_r
        local  '172.16.0.10' @ 172.16.0.10[4500]
        remote '10.10.20.20' @ <x2.x2.x2.x2>[4500]
        AES_GCM_16-128/PRF_HMAC_SHA2_256/ECP_256
        established 9716s ago, rekeying in 4107s
        cloud-ipsec: #19, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_GCM_16-128
          installed 682s ago, rekeying in 2735s, expires in 3278s
          in  cf9668bb,      0 bytes,     0 packets
          out c3a00b2c,      0 bytes,     0 packets
          local  172.16.1.0/24 172.16.2.0/24
          remote 10.10.0.0/16
      

      Состояние соединения ESTABLISHED означает, что IPsec-соединение установилось и работает.

    3. Закройте соединение с cloud-gw:

      exit
      
  2. Подключитесь к удаленному IPsec-шлюзу remote-gw:

    ssh ipsec@<x2.x2.x2.x2>
    
    1. Проверьте состояние strongSwan:

      sudo swanctl -L
      

      Результат:

      remote-site-to-cloud: IKEv1/2, reauthentication every 3060s, no rekeying, dpd delay 30s
        local:  %any
        remote: <x1.x1.x1.x1>
        local pre-shared key authentication:
          id: <x2.x2.x2.x2>
        remote pre-shared key authentication:
          id: <x1.x1.x1.x1>
        remote-site-to-cloud: TUNNEL, rekeying every 28260s, dpd action is restart
          local:  10.10.0.0/16
          remote: 172.16.1.0/24
      cloud-ipsec: IKEv2, no reauthentication, rekeying every 14400s, dpd delay 10s
        local:  10.10.20.20
        remote: <x1.x1.x1.x1>
        local pre-shared key authentication:
        remote pre-shared key authentication:
        cloud-ipsec: TUNNEL, rekeying every 3600s, dpd action is clear
          local:  10.10.0.0/16
          remote: 172.16.1.0/24 172.16.2.0/24
      
    2. Проверьте активные IPsec-соединения:

      sudo swanctl -l
      

      Результат:

      cloud-ipsec: #6, ESTABLISHED, IKEv2, 80e6fa659b4f6307_i 9f63a85191df1e48_r*
        local  '10.10.20.20' @ 10.10.20.20[4500]
        remote '172.16.0.10' @ <x1.x1.x1.x1>[4500]
        AES_GCM_16-128/PRF_HMAC_SHA2_256/ECP_256
        established 9833s ago, rekeying in 3346s
        cloud-ipsec: #19, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_GCM_16-128
          installed 799s ago, rekeying in 2620s, expires in 3161s
          in  c3a00b2c,      0 bytes,     0 packets
          out cf9668bb,      0 bytes,     0 packets
          local  10.10.0.0/16
          remote 172.16.1.0/24 172.16.2.0/24
      

      Состояние соединения ESTABLISHED означает, что IPsec-соединение установилось и работает.

    3. Закройте соединение с remote-gw:

      exit
      
  3. Подключитесь к ВМ vm-d:

    ssh -J ipsec@<x1.x1.x1.x1> ipsec@172.16.1.5
    
    1. Задайте параметры даты и времени для ВМ:

      sudo timedatectl set-timezone Europe/Moscow
      sudo timedatectl set-ntp True
      timedatectl
      
    2. Проверьте IP-связность между vm-d и vm-1:

      ping -c4 10.10.10.10
      

      Результат:

      PING 10.10.10.10 (10.10.10.10) 56(84) bytes of data.
      64 bytes from 10.10.10.10: icmp_seq=1 ttl=58 time=4.92 ms
      64 bytes from 10.10.10.10: icmp_seq=2 ttl=58 time=4.33 ms
      64 bytes from 10.10.10.10: icmp_seq=3 ttl=58 time=4.31 ms
      64 bytes from 10.10.10.10: icmp_seq=4 ttl=58 time=4.38 ms
      
      --- 10.10.10.10 ping statistics ---
      4 packets transmitted, 4 received, 0% packet loss, time 3005ms
      rtt min/avg/max/mdev = 4.306/4.483/4.916/0.251 ms
      
    3. Закройте соединение с vm-d:

      exit
      
  4. Подключитесь к ВМ vm-b:

    ssh -J ipsec@<x1.x1.x1.x1> ipsec@172.16.2.5
    
    1. Задайте параметры даты и времени для ВМ:

      sudo timedatectl set-timezone Europe/Moscow
      sudo timedatectl set-ntp True
      timedatectl
      
    2. Проверьте IP-связность между vm-b и vm-1:

      ping -c4 10.10.10.10
      

      Результат:

      PING 10.10.10.10 (10.10.10.10) 56(84) bytes of data.
      64 bytes from 10.10.10.10: icmp_seq=1 ttl=58 time=4.92 ms
      64 bytes from 10.10.10.10: icmp_seq=2 ttl=58 time=4.33 ms
      64 bytes from 10.10.10.10: icmp_seq=3 ttl=58 time=4.31 ms
      64 bytes from 10.10.10.10: icmp_seq=4 ttl=58 time=4.38 ms
      
      --- 10.10.10.10 ping statistics ---
      4 packets transmitted, 4 received, 0% packet loss, time 3005ms
      rtt min/avg/max/mdev = 4.306/4.483/4.916/0.251 ms
      
    3. Закройте соединение с vm-b:

      exit
      
  5. Подключитесь к ВМ vm-1:

    ssh -J ipsec@<x2.x2.x2.x2> ipsec@10.10.10.10
    
    1. Задайте параметры даты и времени для ВМ:

      sudo timedatectl set-timezone Europe/Moscow
      sudo timedatectl set-ntp True
      timedatectl
      
    2. Проверьте IP-связность между vm-1 и vm-d:

      ping -c4 172.16.1.5
      

      Результат:

      PING 172.16.1.5 (172.16.1.5) 56(84) bytes of data.
      64 bytes from 172.16.1.5: icmp_seq=1 ttl=58 time=4.92 ms
      64 bytes from 172.16.1.5: icmp_seq=2 ttl=58 time=4.33 ms
      64 bytes from 172.16.1.5: icmp_seq=3 ttl=58 time=4.31 ms
      64 bytes from 172.16.1.5: icmp_seq=4 ttl=58 time=4.38 ms
      
      --- 172.16.1.5 ping statistics ---
      4 packets transmitted, 4 received, 0% packet loss, time 3005ms
      rtt min/avg/max/mdev = 4.306/4.483/4.916/0.251 ms
      
    3. Проверьте IP-связность между vm-1 и vm-b:

      ping -c4 172.16.2.5
      

      Результат:

      PING 172.16.2.5 (172.16.2.5) 56(84) bytes of data.
      64 bytes from 172.16.2.5: icmp_seq=1 ttl=58 time=4.92 ms
      64 bytes from 172.16.2.5: icmp_seq=2 ttl=58 time=4.33 ms
      64 bytes from 172.16.2.5: icmp_seq=3 ttl=58 time=4.31 ms
      64 bytes from 172.16.2.5: icmp_seq=4 ttl=58 time=4.38 ms
      
      --- 172.16.2.5 ping statistics ---
      4 packets transmitted, 4 received, 0% packet loss, time 3005ms
      rtt min/avg/max/mdev = 4.306/4.483/4.916/0.251 ms
      
    4. Закройте соединение с vm-1:

      exit
      

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

  • Удалите ВМ.
  • Удалите статический публичный IP-адрес.
  • Удалите подсеть.
  • Удалите облачную сеть.

Была ли статья полезна?

Предыдущая
Схема решения
Следующая
Решение SGW от команды архитекторов Yandex Cloud
Проект Яндекса
© 2025 ООО «Яндекс.Облако»