Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
    • Все инструкции
    • Подключение к узлу по SSH
    • Подключение к узлу через OS Login
    • Обновление Kubernetes
    • Настройка автомасштабирования
    • Подключение Terraform-провайдера Kubernetes
    • Подключение внешних узлов к кластеру
    • Настройка WireGuard-шлюзов для подключения внешних узлов к кластеру
    • Настройка IPSec-шлюзов для подключения внешних узлов к кластеру
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

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

  • Перед началом работы
  • Настройка групп безопасности
  • Настройка маршрутизации
  • Настройка IPSec-шлюзов
  • Решение проблем
  • Ошибка при работе с пакетами docker-ce и containerd на внешнем узле
  1. Пошаговые инструкции
  2. Настройка IPSec-шлюзов для подключения внешних узлов к кластеру

Настройка IPSec-шлюзов для подключения внешних узлов к кластеру

Статья создана
Yandex Cloud
Обновлена 18 августа 2025 г.
  • Перед началом работы
  • Настройка групп безопасности
  • Настройка маршрутизации
  • Настройка IPSec-шлюзов
  • Решение проблем
    • Ошибка при работе с пакетами docker-ce и containerd на внешнем узле

Сервис Yandex Managed Service for Kubernetes позволяет подключать в качестве узлов кластера Kubernetes серверы, расположенные вне Yandex Cloud. Для подключения необходимо организовать сетевую связность между удаленной сетью, в которой расположен внешний сервер, и облачной сетью, в которой находится кластер Managed Service for Kubernetes. Это можно сделать с помощью VPN.

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

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

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

  2. В основной сети создайте кластер Managed Service for Kubernetes с высокодоступным типом мастера.

    Для создания внешней группы узлов кластер Managed Service for Kubernetes должен работать в туннельном режиме. Он включается только при создании кластера.

  3. Установите kubectl и настройте его на работу с созданным кластером.

  4. В основной сети создайте виртуальную машину Compute Cloud с публичным IP-адресом и назовите ее VM-1. На этой ВМ будет настроен основной IPSec-шлюз.

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

  6. В дополнительной сети создайте виртуальную машину Compute Cloud с публичным IP-адресом и назовите ее VM-2. На этой ВМ будет настроен дополнительный IPSec-шлюз.

Настройка групп безопасностиНастройка групп безопасности

  1. В основной сети создайте группу безопасности и назначьте ее VM-1. Добавьте в группу правила:

    Исходящий трафик
    Входящий трафик
    Описание Диапазон портов Протокол Назначение CIDR блоки
    any 0-65535 Любой CIDR 0.0.0.0/0
    Описание Диапазон портов Протокол Источник CIDR блоки
    icmp 0-65535 ICMP CIDR 0.0.0.0/0
    ssh 22 TCP CIDR 0.0.0.0/0
    ipsec-udp-500 500 UDP CIDR <публичный_адрес_VM-2>/32
    ipsec-udp-4500 4500 UDP CIDR <публичный_адрес_VM-2>/32
    VM-2-subnet 0-65535 Любой CIDR <CIDR_подсети_VM-2>
  2. В дополнительной сети создайте группу безопасности и назначьте ее VM-2. Добавьте в группу правила:

    Исходящий трафик
    Входящий трафик
    Описание Диапазон портов Протокол Назначение CIDR блоки
    any 0-65535 Любой CIDR 0.0.0.0/0
    Описание Диапазон портов Протокол Источник CIDR блоки
    icmp 0-65535 ICMP CIDR 0.0.0.0/0
    ssh 22 TCP CIDR 0.0.0.0/0
    ipsec-udp-500 500 UDP CIDR <публичный_адрес_VM-1>/32
    ipsec-udp-4500 4500 UDP CIDR <публичный_адрес_VM-1>/32
    k8s-VM-1-subnets 0-65535 Любой CIDR <CIDR_основной_подсети1>, <CIDR_основной_подсети2>, <CIDR_основной_подсети3>
    cluster&services 0-65535 Любой CIDR <CIDR_кластера>, <CIDR_сервисов>
  3. В группу безопасности кластера и групп узлов Managed Service for Kubernetes добавьте правило:

    Входящий трафик
    Описание Диапазон портов Протокол Источник CIDR блоки
    VM-2-subnet 0-65535 Любой CIDR <CIDR_подсети_VM-2>

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

  1. Настройте маршрутизацию для основного IPSec-шлюза:

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

      • Префикс назначения — укажите CIDR подсети, где расположена VM-2.
      • IP-адрес — укажите внутренний IP-адрес VM-1.
    2. Привяжите таблицу маршрутизации ко всем подсетям основной сети.

  2. Настройте маршрутизацию для дополнительного IPSec-шлюза:

    1. В дополнительной сети создайте таблицу маршрутизации.

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

      • Префикс назначения — укажите CIDR подсети, где расположена VM-1.
      • IP-адрес — укажите внутренний IP-адрес VM-2.

      Повторите этот шаг для каждой подсети основной сети.

    3. Привяжите таблицу маршрутизации к подсети, в которой расположена VM-2.

Настройка IPSec-шлюзовНастройка IPSec-шлюзов

  1. Настройте основной IPSec-шлюз:

    1. Подключитесь к VM-1 по SSH.

    2. Установите strongSwan:

      sudo apt update && sudo apt install strongswan
      
    3. Откройте файл конфигурации ipsec.conf:

      sudo nano /etc/ipsec.conf
      
    4. Замените содержимое файла следующим текстом:

      # basic configuration
      
      config setup
        charondebug="all"
        uniqueids=yes
      
      conn VM-1
        type=tunnel
        auto=route
        keyexchange=ikev2
        ike=aes256-sha2_256-modp2048!
        esp=aes256-sha2_256!
        authby=secret
        left=<внутренний_адрес_VM-1>
        leftsubnet=<CIDR_основной_подсети1>,<CIDR_основной_подсети2>,<CIDR_основной_подсети3>
        leftsourceip=<внутренний_адрес_VM-1>
        leftid=<публичный_адрес_VM-1>
        right=<публичный_адрес_VM-2>
        rightsubnet=<CIDR_подсети_VM-2>
        aggressive=no
        keyingtries=%forever
        ikelifetime=86400s
      

      Подробнее о параметрах см. в документации strongSwan.

    5. Откройте файл ipsec.secrets, который используется для аутентификации:

      sudo nano /etc/ipsec.secrets
      
    6. Замените содержимое файла следующим текстом:

      <публичный_адрес_VM-1> <публичный_адрес_VM-2> : PSK "<пароль>"
      

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

  2. Настройте дополнительный IPSec-шлюз:

    1. Подключитесь к VM-2 по SSH.

    2. Установите strongSwan:

      sudo apt update && sudo apt install strongswan
      
    3. Откройте файл конфигурации ipsec.conf:

      sudo nano /etc/ipsec.conf
      
    4. Замените содержимое файла следующим текстом:

      # basic configuration
      
      config setup
        charondebug="all"
      
      conn VM-2
        type=tunnel
        auto=route
        keyexchange=ikev2
        ike=aes256-sha2_256-modp2048!
        esp=aes256-sha2_256!
        authby=secret
        left=<внутренний_адрес_VM-2>
        leftid=<публичный_адрес_VM-2>
        leftsubnet=<CIDR_подсети_VM-2>
        right=<публичный_адрес_VM-1>
        rightsubnet=<CIDR_основной_подсети1>,<CIDR_основной_подсети2>,<CIDR_основной_подсети3>
        rightsourceip=<внутренний_адрес_VM-1>
        aggressive=no
        keyingtries=%forever
        ikelifetime=86400s
        lifetime=43200s
        lifebytes=576000000
        dpddelay=30s
      

      Подробнее о параметрах см. в документации strongSwan.

    5. Откройте файл ipsec.secrets, необходимый для аутентификации:

      sudo nano /etc/ipsec.secrets
      
    6. Замените содержимое файла следующим текстом:

      <публичный_адрес_VM-2> <публичный_адрес_VM-1> : PSK "<пароль>"
      

      Пароли должны быть одинаковыми на обеих ВМ.

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

  3. Перезапустите strongSwan на обеих ВМ:

    sudo ipsec restart
    
  4. Проверьте статус соединения на обеих ВМ:

    sudo ipsec statusall
    

    ESTABLISHED в выводе команды означает, что соединение установлено:

    ...
    Security Associations (1 up, 0 connecting):
         VM-1[1]: ESTABLISHED 5 seconds ago, 10.128.*.**[46.21.***.***]...84.201.***.***[84.201.***.***]
    ...
    

    Если соединение не установилось, попробуйте запустить его вручную. На VM-1 выполните команду:

    sudo ipsec up VM-1
    

    Эту команду достаточно выполнить только на одной из ВМ.

  5. Настройте MTU на обеих ВМ:

    ETH_NIC=eth0
    sudo iptables -t mangle -A FORWARD -i ${ETH_NIC} -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
    sudo iptables -t mangle -A FORWARD -o ${ETH_NIC} -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
    echo "net.ipv4.ip_no_pmtu_disc = 1" | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p /etc/sysctl.conf
    

    Важно

    Если оставить значение MTU по умолчанию, возможны потери сетевого трафика.

  6. Подключите VM-2 к кластеру Managed Service for Kubernetes в качестве внешнего узла.

Решение проблемРешение проблем

Ошибка при работе с пакетами и на внешнем узлеОшибка при работе с пакетами docker-ce и containerd на внешнем узле

Чтобы диагностировать и исправить ошибку:

  1. Посмотрите список служб, которые работают некорректно:

    sudo systemctl --failed
    

    Результат:

    UNIT LOAD ACTIVE SUB DESCRIPTION
    docker.socket loaded failed failed Docker Socket for the API
    LOAD = Reflects whether the unit definition was properly loaded.
    ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
    SUB = The low-level unit activation state, values depend on unit type.
    1 loaded units listed.
    
  2. Проверьте состояние docker.socket:

    sudo systemctl status docker.socket
    

    Результат:

    docker.socket - Docker Socket for the API
    Loaded: loaded (/lib/systemd/system/docker.socket; disabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Tue 2024-02-10 09:53:37 UTC; 6s ago
    Triggers: ● docker.service
    Listen: /run/docker.sock (Stream)
    CPU: 1ms
    Feb 10 09:53:37 ext-node systemd[1]: Starting Docker Socket for the API...
    Feb 10 09:53:37 ext-node systemd[7052]: docker.socket: Failed to resolve group docker: No such process
    Feb 10 09:53:37 ext-node systemd[1]: docker.socket: Control process exited, code=exited, status=216/GROUP
    Feb 10 09:53:37 ext-node systemd[1]: docker.socket: Failed with result 'exit-code'.
    Feb 10 09:53:37 ext-node systemd[1]: Failed to listen on Docker Socket for the API.
    
  3. Посмотрите ошибки в системных логах:

    sudo journalctl -xe
    

    Результат:

    ...
    Feb 10 09:56:40 ext-node maintainer[19298]: E: Sub-process /usr/bin/dpkg returned an error code (1)
    ...
    
  4. Переустановите пакеты и исправьте ошибки:

    sudo apt install -f
    
  5. Когда установщик спросит, что делать с файлом config.toml, введите N, чтобы оставить текущую версию файла.

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

Предыдущая
Настройка WireGuard-шлюзов для подключения внешних узлов к кластеру
Следующая
Все руководства
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»