Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Практические руководства
  • Веб-сервис
    • Все руководства
    • Статический сайт в Object Storage
    • Сайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки с помощью Network Load Balancer
    • Отказоустойчивый сайт с балансировкой нагрузки с помощью Application Load Balancer
    • Сайт на базе Joomla с БД PostgreSQL
    • Создание сайта на WordPress
    • Сайт на WordPress с БД MySQL
    • Перенос WordPress сайта с хостинга в Yandex Cloud
    • Сайт на базе 1С-Битрикс
    • Организация виртуального хостинга
    • Создание балансировщика с защитой от DDoS
    • Публикация обновлений для игр с помощью Cloud CDN
    • Интеграция L7-балансировщика с Cloud CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
    • Терминирование TLS-соединений
  • Интернет-магазины
    • Все руководства
    • Интернет-магазин на 1С-Битрикс
    • Интернет-магазин на OpenCart
  • Архив данных
    • Все руководства
    • Однонодовый файловый сервер
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование в Object Storage через Acronis
    • Резервное копирование в Object Storage с помощью CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage с помощью Bacula
    • Резервное копирование в Object Storage с помощью Veritas Backup Exec
    • Распознавание архива изображений в Vision
  • Тестовая среда
    • Все руководства
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых ВМ
    • Эмуляция множества IoT-устройств
    • Нагрузочное тестирование gRPC-сервиса
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
    • Нагрузочное тестирование с нескольких агентов
  • Управление инфраструктурой
    • Все руководства
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Миграция в Yandex Cloud с помощью Hystax Acura
    • Защита от сбоев с помощью Hystax Acura
    • Настройка синхронизации часов с помощью NTP
    • Работа с группой ВМ с автомасштабированием
    • Масштабирование группы ВМ по расписанию
    • Автомасштабирование группы ВМ для обработки сообщений из очереди Message Queue
    • Обновление группы ВМ под нагрузкой
    • Передача логов с ВМ в Cloud Logging
    • Резервное копирование ВМ с помощью Hystax Acura Backup
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание SAP-программы в Yandex Cloud
    • Настройка локального кеширующего DNS-резолвера
    • Миграция DNS-зон из Яндекс 360 в Cloud DNS
    • Интеграция Cloud DNS и корпоративного сервиса DNS
    • Создание веб-хука резолвера ACME для ответов на DNS01-проверки
    • Запись логов балансировщика в PostgreSQL
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
  • Построение Data Platform
    • Все руководства
    • Миграция БД из стороннего кластера Apache Kafka® в Managed Service for Apache Kafka®
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse с помощью Data Transfer
    • Перенос данных между кластерами Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for YDB с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Настройка Kafka Connect для работы с кластером Managed Service for Apache Kafka®
    • Управление схемами данных в Managed Service for Apache Kafka®
    • Использование Managed Schema Registry с Managed Service for Apache Kafka®
    • Использование Confluent Schema Registry с Managed Service for Apache Kafka®
    • Миграция базы данных из MySQL в ClickHouse с помощью Data Transfer
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Обмен данными между Managed Service for ClickHouse и Data Proc
    • Настройка Managed Service for ClickHouse для Graphite
    • Получение данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse с помощью Data Transfer
    • Получение данных из RabbitMQ в Managed Service for ClickHouse
    • Сохранение потока данных Data Streams в Managed Service for ClickHouse
    • Использование гибридного хранилища в Managed Service for ClickHouse
    • Шардирование таблиц Managed Service for ClickHouse
    • Настройка Cloud DNS для доступа к кластерам управляемых баз данных из других облачных сетей
    • Настройка Cloud DNS для доступа к кластеру Managed Service for ClickHouse из других облачных сетей
    • Обмен данными между Managed Service for ClickHouse и Data Proc
    • Импорт данных из Managed Service for MySQL в Data Proc с помощью Sqoop
    • Импорт данных из Managed Service for PostgreSQL в Data Proc с помощью Sqoop
    • Использование скриптов инициализации для настройки GeeseFS в Data Proc
    • Миграция данных из стороннего кластера Elasticsearch в Managed Service for Elasticsearch с помощью Reindex API
    • Миграция коллекций из стороннего кластера MongoDB в Managed Service for MongoDB
    • Миграция данных в Managed Service for MongoDB
    • Шардирование коллекций MongoDB
    • Анализ производительности и оптимизация MongoDB
    • Миграция БД из стороннего кластера MySQL в кластер Managed Service for MySQL
    • Анализ производительности и оптимизация Managed Service for MySQL
    • Синхронизация данных из стороннего кластера MySQL в Managed Service for MySQL с помощью Data Transfer
    • Миграция БД из Managed Service for MySQL в сторонний кластер MySQL
    • Миграция БД из Managed Service for MySQL в Object Storage с помощью Data Transfer
    • Импорт данных из Managed Service for MySQL в Data Proc с помощью Sqoop
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Debezium
    • Миграция БД из Managed Service for MySQL в Managed Service for YDB с помощью Data Transfer
    • Создание кластера PostgreSQL для «1С:Предприятия»
    • Анализ производительности и оптимизация Managed Service for PostgreSQL
    • Миграция БД из Managed Service for PostgreSQL
    • Миграция БД из стороннего кластера PostgreSQL в Managed Service for PostgreSQL
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Импорт данных из Managed Service for PostgreSQL в Data Proc с помощью Sqoop
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for YDB с помощью Data Transfer
    • Миграция БД из Managed Service for PostgreSQL в Object Storage
    • Миграция БД из Greenplum® в ClickHouse
    • Миграция БД из Greenplum® в PostgreSQL
    • Миграция БД из стороннего кластера Redis в Managed Service for Redis
    • Использование кластера Managed Service for Redis в качестве хранилища сессий PHP
  • Продукты Microsoft в Yandex Cloud
    • Все руководства
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Развертывание Remote Desktop Gateway
  • Сетевая инфраструктура
    • Все руководства
    • Архитектура и защита базового интернет-сервиса
    • Настройки DHCP для работы с корпоративным DNS-сервером
    • Маршрутизация с помощью NAT-инстанса
    • Создание туннеля IPSec VPN
    • Установка виртуального роутера Cisco CSR 1000v
    • Установка виртуального роутера Mikrotik CHR
    • Соединение с облачной сетью при помощи OpenVPN
    • Создание и настройка шлюза UserGate в режиме прокси-сервера
    • Создание и настройка шлюза UserGate в режиме межсетевого экрана
    • Настройка сети для Data Proc
  • Визуализация и анализ данных
    • Все руководства
    • Визуализация данных из файла
    • Создание и публикация диаграммы с картой Москвы из CSV-файла
    • Анализ продаж сети магазинов из БД ClickHouse
    • Анализ открытых данных ДТП на дорогах России
    • Анализ продаж и локаций пиццерий на данных из БД ClickHouse и Cloud Marketplace
    • Веб-аналитика с подключением к Яндекс Метрике
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • Аналитика мобильного приложения на данных AppMetrica
    • Анализ статистики подкастов Яндекс Музыки (для авторов подкастов)
    • Визуализация данных с помощью QL-чарта
    • Анализ customer journey мобильного приложения на данных AppMetrica
    • Анализ логов Object Storage при помощи DataLens
  • Интернет вещей
    • Руководства по работе с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  • Бессерверные технологии
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Разработка навыка Алисы и сайта с авторизацией
  1. Сетевая инфраструктура
  2. Создание туннеля IPSec VPN

Создание туннеля IPSec VPN

Статья создана
Yandex Cloud
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте сети и подсети
  • Создайте IPSec-инстанс
  • Настройте IPSec
  • Настройте статическую маршрутизацию
  • Настройте IPSec на другом шлюзе
  • Проверьте работу IPSec-туннеля
  • Удалите созданные ресурсы

В сценарии рассматривается настройка IPSec-инстанса для передачи трафика от виртуальных машин Yandex Cloud в туннель IPSec VPN с использованием демона strongSwan.

В примере туннель настраивается между двумя VPN-шлюзами. Для тестирования работы VPN-туннеля вам потребуется настроить шлюзы на обеих сторонах туннеля. Для этого можно воспользоваться другой сетью в Yandex Cloud или вашей локальной сетью.

Чтобы настроить VPN-туннель:

  1. Подготовьте облако к работе.
  2. Создайте и настройте IPSec-инстанс.
  3. Настройте IPSec.
  4. Настройте статическую маршрутизацию в облачной сети.
  5. Настройте IPSec на втором шлюзе.
  6. Проверьте работу IPSec-туннеля.

Если IPSec-инстанс больше не нужен, удалите его.

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

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

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

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

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

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

В стоимость поддержки инфраструктуры IPSec VPN входят:

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

Создайте сети и подсети

Для связи облачных ресурсов с интернетом необходимо иметь созданные сети и подсети.

Создайте IPSec-инстанс

Создайте в Yandex Cloud виртуальную машину, которая будет служить шлюзом для IPSec-туннеля.

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

  2. Укажите имя виртуальной машины, например ipsec-instance.

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

  4. В блоке Выбор образа/загрузочного диска перейдите на вкладку Cloud Marketplace и выберите образ IPSec-инстанс.

  5. В блоке Сетевые настройки выберите требуемую сеть, подсеть и назначьте ВМ публичный IP-адрес из списка или автоматически.

    Используйте только статические публичные IP-адреса из списка, или сделайте IP-адрес созданной машины статическим. Динамический IP-адрес может измениться после перезагрузки ВМ и туннель перестанет работать.

  6. В поле Доступ укажите логин и SSH-ключ для доступа к ВМ.

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

Настройте IPSec

Настройте шлюз с публичным IP-адресом и подсетью, который будет устанавливать IPSec-соединение с удаленным шлюзом.

В примере ниже публичный IP-адрес шлюза будет 130.193.32.25. За шлюзом будет находиться подсеть 10.128.0.0/24. Этот шлюз будет устанавливать IPSec-соединение с удаленным шлюзом с IP-адресом 1.1.1.1, за которым находится подсеть 192.168.0.0/24.

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

    ssh 130.193.32.25
    
  2. Откройте конфигурацию IPSec:

    sudo nano /etc/ipsec.conf
    
  3. Приведите раздел config setup к следующему виду:

    config setup
            charondebug="all"
            uniqueids=yes
            strictcrlpolicy=no
    
  4. Задайте следующие параметры тестового соединения:

    • leftid — публичный IP-адрес IPSec-инстанса.
    • leftsubnet — CIDR подсети, к которой подключен IPSec-инстанс.
    • right — укажите публичный IP-адрес шлюза на другом конце VPN-туннеля.
    • rightsubnet — укажите CIDR подсети, к которой подключен VPN-шлюз на другом конце VPN-туннеля.
    • В параметрах ike и esp укажите алгоритмы шифрования, которые поддерживаются на удаленном шлюзе. Списки поддерживаемых алгоритмов шифрования см. на сайте strongSwan: IKEv1 и IKEv2.
    • Остальные настройки укажите, консультируясь с документацией strongSwan и учитывая настройки удаленного шлюза.

    Сохраните изменения и закройте файл.

    Должна получиться конфигурация вида:

    conn cloud-to-hq
          authby=secret
          left=%defaultroute
          leftid=130.193.32.25
          leftsubnet=10.128.0.0/24
          right=1.1.1.1
          rightsubnet=192.168.0.0/24
          ike=aes256-sha2_256-modp1024!
          esp=aes256-sha2_256!
          keyingtries=0
          ikelifetime=1h
          lifetime=8h
          dpddelay=30
          dpdtimeout=120
          dpdaction=restart
          auto=start
    
    Если IPSec-инстанс и ресурсы, которые необходимо связать VPN-туннелем, находятся в одной подсети

    Добавьте исключающие правила для шлюза по умолчанию и собственного интерфейса IPSec-инстанса:

    conn passthrough-1
       left=%defaultroute
       leftsubnet=<IP-адрес_шлюза_подсети_по_умолчанию>
       rightsubnet=10.0.0.0/8
       type=passthrough
       auto=route
    conn passthrough-2
       left=%defaultroute
       leftsubnet=<внутренний_IP-адрес_IPSec-инстанса>
       rightsubnet=10.0.0.0/8
       type=passthrough
       auto=route
    

    Где:

    • <IP-адрес_шлюза_подсети_по_умолчанию> — CIDR подсети, в которой находятся IPSec-инстанс и ресурсы, которые необходимо связать VPN-туннелем.
    • <внутренний_ip-адрес_IPSec-инстанса> — внутренний IP-адрес ВМ с IPSec-инстансом.

    IPSec-инстанс будет доступен для диагностики и отвечать по протоколу ICMP.

    Примечание

    Для повышения скорости передачи данных в туннеле можно использовать оптимизированные алгоритмы шифрования. Для этого добавьте в код выше следующие строки:

       keyexchange=ikev2
       ike=aes128gcm16-prfsha256-ecp256,aes256gcm16-prfsha384-ecp384!
       esp=aes128gcm16-ecp256,aes256gcm16-ecp384!
    

    Возможность использования оптимизированных алгоритмов шифрования зависит от реализации стека IPSEC на используемой вами платформе.

  5. Откройте файл /etc/ipsec.secrets и укажите в нем пароль для установки соединения:

    130.193.32.25 1.1.1.1 : PSK "<пароль>"
    
  6. Перезапустите strongSwan:

    systemctl restart strongswan-starter
    

Настройте статическую маршрутизацию

Настройте маршрутизацию между IPSec-инстансом и заранее созданной виртуальной машиной без публичного IP-адреса.

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

  1. Откройте раздел Virtual Private Cloud в каталоге, где требуется создать статический маршрут.

  2. Выберите сеть, в которой требуется создать таблицу маршрутизации.

  3. Нажмите кнопку Создать таблицу маршрутизации.

  4. Задайте имя таблицы маршрутизации.

    • Длина — от 3 до 63 символов.
    • Может содержать строчные буквы латинского алфавита, цифры и дефисы.
    • Первый символ — буква. Последний символ — не дефис.
  5. Нажмите кнопку Добавить маршрут.

  6. В открывшемся окне введите префикс подсети назначения на удаленной стороне, в примере это 192.168.0.0/24.

  7. В поле Next hop укажите внутренний IP-адрес IPSec-шлюза. Нажмите кнопку Добавить.

  8. Нажмите кнопку Создать таблицу маршрутизации.

Чтобы использовать статические маршруты, необходимо привязать таблицу маршрутизации к подсети. Для этого:

  1. В строке нужной подсети нажмите кнопку .
  2. В открывшемся меню выберите пункт Привязать таблицу маршрутизации.
  3. В открывшемся окне выберите созданную таблицу в списке.
  4. Нажмите кнопку Привязать.

Созданный маршрут можно применять и к другим подсетям в той же сети.

Настройте IPSec на другом шлюзе

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

  1. Настройте strongSwan аналогично первому IPSec-шлюзу, но с зеркальными настройками IP-адресов и подсетей в файле /etc/ipsec.conf:

    conn hq-to-cloud
          authby=secret
          left=%defaultroute
          leftid=1.1.1.1
          leftsubnet=192.168.0.0/24
          right=130.193.32.25
          rightsubnet=10.128.0.0/24
          ike=aes256-sha2_256-modp1024!
          esp=aes256-sha2_256!
          keyingtries=0
          ikelifetime=1h
          lifetime=8h
          dpddelay=30
          dpdtimeout=120
          dpdaction=restart
          auto=start
    

    Примечание

    Для повышения скорости передачи данных в туннеле можно использовать оптимизированные алгоритмы шифрования. Для этого добавьте в код выше следующие строки:

       keyexchange=ikev2
       ike=aes128gcm16-prfsha256-ecp256,aes256gcm16-prfsha384-ecp384!
       esp=aes128gcm16-ecp256,aes256gcm16-ecp384!
    

    Возможность использования оптимизированных алгоритмов шифрования зависит от реализации стека IPSEC на используемой вами платформе.

  2. Укажите пароль для соединения в /etc/ipsec.secrets, указав IP-адреса шлюзов в обратном порядке:

    1.1.1.1 130.193.32.25 : PSK "<пароль>"
    
  3. Перезапустите strongSwan:

    systemctl restart strongswan-starter
    

Проверьте работу IPSec-туннеля

Чтобы убедиться, что туннель между шлюзами установлен, выполните на любом из шлюзов команду:

sudo ipsec status
Security Associations (1 up, 0 connecting):
 hq-to-cloud[3]: ESTABLISHED 29 minutes ago, 10.128.0.26[130.193.33.12]...192.168.0.23[1.1.1.1]
 hq-to-cloud{3}:  INSTALLED, TUNNEL, reqid 3, ESP in UDP SPIs: c7fa371d_i ce8b91ad_o
 hq-to-cloud{3}:   10.128.0.0/24 === 192.168.0.0/24

Статус ESTABLISHED означает, что туннель между шлюзами создан.

Проверить статус демона strongSwan можно командой systemctl status strongswan-starter:

systemctl status strongswan-starter
● strongswan.service - strongSwan IPsec IKEv1/IKEv2 daemon using ipsec.conf
   Loaded: loaded (/lib/systemd/system/strongswan-starter.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-06-20 14:54:07 UTC; 3 days ago
 Main PID: 481 (starter)
    Tasks: 18 (limit: 1117)
   CGroup: /system.slice/strongswan-starter.service
           ├─481 /usr/lib/ipsec/starter --daemon charon --nofork
           └─527 /usr/lib/ipsec/charon

Посмотреть логи strongSwan можно с помощью команды journalctl -u strongswan-starter. В логах находятся сведения об установке и работе соединения.

Удалите созданные ресурсы

Если вам больше не нужен IPSec-инстанс, удалите ВМ ipsec-instance.

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте сети и подсети
  • Создайте IPSec-инстанс
  • Настройте IPSec
  • Настройте статическую маршрутизацию
  • Настройте IPSec на другом шлюзе
  • Проверьте работу IPSec-туннеля
  • Удалите созданные ресурсы