Создание VPN соединения
В статье приведен пример создания и настройки VPN-соединения при помощи Terraform.
Пройдя шаги инструкции вы:
- Создадите файл конфигурации.
- Добавите ресурсы и источники данных для виртуальной сети.
- Добавите ресурс для VPN-соединения.
- Создадите добавленные ресурсы.
Полное описание параметров — в документации провайдера Terraform.
-
Проверьте квоты. Убедитесь, что в выбранном регионе достаточно ресурсов для создания сетей. В разных регионах могут действовать разные квоты.
При необходимости увеличьте квоты.
-
Установите Terraform и настройте провайдер, если этого еще не сделано.
-
Поместите файл с настройками провайдера в директорию, из которой вы будете работать с проектом, и из этой директории выполните команду:
terraform initДождитесь завершения инициализации Terraform.
В директории, из которой вы будете работать с проектом, создайте файл vpn.tf. В этом файле будет описана конфигурация создаваемого подключения.
-
В зависимости от используемой SDN скопируйте в файл
vpn.tfсодержимое одной из вкладок ниже.NeutronSprutdata "vkcs_networking_network" "extnet" {name = "ext-net"}resource "vkcs_networking_network" "network" {name = "vpnaas_network"sdn = "neutron"}resource "vkcs_networking_subnet" "subnet" {name = "vpnaas_subnet"network_id = vkcs_networking_network.network.idcidr = "192.168.199.0/24"}resource "vkcs_networking_router" "router" {name = "router"sdn = "neutron"external_network_id = data.vkcs_networking_network.extnet.id}resource "vkcs_networking_router_interface" "router_interface" {router_id = vkcs_networking_router.router.idsubnet_id = vkcs_networking_subnet.subnet.id}Для создания сети потребуются следующие объекты:
-
Ресурсы (resource):
- vkcs_networking_network — сеть, в которой будет создана ВМ.
- vkcs_networking_subnet — подсеть в этой сети.
- vkcs_networking_router — маршрутизатор, соединяющий приватную сеть с внешними сетями.
- vkcs_networking_router_interface — интерфейс, который подключает маршрутизатор к внутренней сети.
-
Источник данных (data source): vkcs_networking_network — внешняя сеть для получения публичного IP-адреса маршрутизатором, а также выделения Floating IP-адреса сущностям приватной сети.
-
-
Отредактируйте значения настроек для вашего подключения.
Подробнее о создании виртуальных сетей с помощью Terraform — в практическом руководстве Создание сетей.
-
Скопируйте в файл
vpn.tfнастройки VPN-соединения:resource "vkcs_vpnaas_service" "service" {router_id = vkcs_networking_router.router.id}resource "vkcs_vpnaas_ipsec_policy" "policy_1" {name = "ipsec-policy"}resource "vkcs_vpnaas_ike_policy" "policy_2" {name = "ike-policy"}resource "vkcs_vpnaas_endpoint_group" "group_1" {type = "cidr"endpoints = ["10.0.0.24/24", "10.0.0.25/24"]}resource "vkcs_vpnaas_endpoint_group" "group_2" {type = "subnet"endpoints = [ vkcs_networking_subnet.subnet.id ]}resource "vkcs_vpnaas_site_connection" "connection" {name = "connection"ikepolicy_id = vkcs_vpnaas_ike_policy.policy_2.idipsecpolicy_id = vkcs_vpnaas_ipsec_policy.policy_1.idvpnservice_id = vkcs_vpnaas_service.service.idpsk = "secret"peer_address = "192.168.10.1"peer_id = "192.168.10.1"local_ep_group_id = vkcs_vpnaas_endpoint_group.group_2.idpeer_ep_group_id = vkcs_vpnaas_endpoint_group.group_1.iddpd {action = "restart"timeout = 42interval = 21}depends_on = [vkcs_networking_router_interface.router_interface]}Для добавления VPN-соединения используются следующие ресурсы:
-
vkcs_vpnaas_service — управляет сервисом VPN внутри VK Cloud. Включает в себя параметр
router_id— ID маршрутизатора. Изменив значение этого параметра, вы создадите новый сервис. Если необходимо использовать существующий маршрутизатор, укажите его ID (data.vkcs_networking_router.router.idилиdata.vkcs_dc_router.router.id), используя источник данных. -
vkcs_vpnaas_ipsec_policy — управляет IPSec-политикой ресурса внутри VK Cloud. Включает в себя параметр
name— имя создаваемой политики. Изменив значение этого параметра, вы поменяете имя существующей политики. -
vkcs_vpnaas_ike_policy — управляет IKE-политикой ресурса внутри VK Cloud. Включает в себя параметр
name— имя создаваемой политики. Изменив значение этого параметра, вы поменяете имя существующей политики. -
vkcs_vpnaas_endpoint_group — управляет группой эндпоинтов внутри VK Cloud. Включает в себя следующие параметры:
type— тип эндпоинтов в группе. Может принимать значенияsubnet,cidr,network,routerилиvlan. Изменив значения этого параметра, вы создадите новую группу.endpoints— список эндпоинтов одинакового типа, включаемых в группу эндпоинтов. Тип элементов списка определяется параметромtype. Изменив значение параметраendpoints, вы создадите новую группу.
-
vkcs_vpnaas_site_connection — управляет ресурсом IPSec-подключения сайта внутри VK Cloud. Включает в себя следующие параметры:
-
name— имя соединения. Изменив значение этого параметра, вы измените имя существующего подключения. -
ikepolicy_id— ID IKE-политики. Изменив значение этого параметра, вы создадите новое соединение. -
ipsecpolicy_id— ID IPsec-политики. Изменив значение этого параметра, вы создадите новое соединение. -
vpnservice_id— ID VPN-сервиса. Изменив значение этого параметра, вы создадите новое соединение. -
psk— публичный ключ. Принимает любые значения типаstring. -
peer_address— FQDN или публичный IP-адрес (IPv4 или IPv6) peer-шлюза. -
peer_id— ID peer-роутера для прохождения аутентификации. Может принимать значения типов<АДРЕС_IPv4>,<АДРЕС_IPv6>,<EMAIL>,<KEY_ID>,<FQDN>. Обычно значение этого параметра совпадает со значением параметраpeer_address. Изменив значение этого параметра, вы поменяете политику существующего подключения. -
local_ep_group_id— ID группы эндпоинтов, которая включает в себя частные подсети локального подключения. Требует указания параметраpeer_ep_group_id, если не включен режим обратной совместимости, где значенияpeer_cidrsуже предоставляются вместе со значениемsubnet_idVPN-сервиса. Изменив значение этого параметра, вы измените существующее подключение. -
peer_ep_group_id— ID группы эндпоинтов, которая включает в себя частные CIDR-адреса peer-подключения в формате<IP-АДРЕС>/<ПРЕФИКС>. Требует указания параметраlocal_ep_group_id, если не включен режим обратной совместимости, где значенияpeer_cidrsуже предоставляются вместе со значениемsubnet_idVPN-сервиса. -
dpd— словарь настроек для протокола Dead Peer Detection (DPD). Включает в себя следующие ресурсы:action— действие DPD. Возможные значения:clear,hold,restart,disabled,restart-by-peer. Значение по умолчанию:hold.timeout— тайм-аут DPD в секундах. Принимаются данные типаpositive integer, значения которых больше, чемinterval. Значение по умолчанию:120.interval— интервал DPD в секундах. Принимаются данные типаpositive integer. Значение по умолчанию:30.
-
depends_on— VPN-соединение запустится после создания указанных ресурсов.
-
-
-
Отредактируйте значения настроек для вашего подключения.
-
Перейдите в директорию с файлом
vpn.tf. -
Убедитесь, что конфигурационные файлы корректны и содержат нужные изменения:
terraform validate && terraform plan -
Примените изменения:
terraform applyПри запросе подтверждения введите
yes. -
Дождитесь завершения операции.
Убедитесь, что сеть и инфраструктура были успешно созданы:
- Перейдите в личный кабинет VK Cloud.
- Перейдите в раздел Виртуальные сети → VPN. Убедитесь, что VPN-соединение создано и содержит все добавленные в примере ресурсы.
Если созданные с помощью Terraform ресурсы больше не нужны, удалите их:
-
Перейдите в директорию с файлами конфигурации Terraform.
-
Выполните команду:
terraform destroyПри запросе подтверждения введите
yes. -
Дождитесь завершения операции.