Создание VPN соединения
Чтобы создать VPN соединение, создайте файл vpn.tf
, где будет описана конфигурация создаваемого подключения. Добавьте текст из примеров ниже, и исправьте значения настроек для вашего подключения.
Для создания VPN соединения нам потребуются виртуальная сеть с роутером. Если у вас уже есть существующая сеть и роутер, то перейдите на шаг «Создание VPN соединения».
Создайте сеть со следующими объектами:
- Ресурсы (resource):
- vkcs_networking_network — сеть, в которой будет создана ВМ. В примере ниже сеть создается с именем «extnet».
- vkcs_networking_subnet — подсеть из сети. В примере: «subnet».
- vkcs_networking_router — роутер для внешней сети и взаимодействия с внешним миром. В примере: router.
- vkcs_networking_router_interface — подключить роутер к внутренней сети.
- Источники данных (data source):
- vkcs_networking_network – внешняя сеть для получения публичного IP (Floating IP).
1data "vkcs_networking_network" "extnet" { 2 name = "ext-net" 3} 4 5resource "vkcs_networking_network" "network" { 6 name = "vpnaas_network" 7} 8 9resource "vkcs_networking_subnet" "subnet" { 10 network_id = "${vkcs_networking_network.network.id}" 11 cidr = "192.168.199.0/24" 12} 13 14resource "vkcs_networking_router" "router" { 15 name = "router" 16 external_network_id = data.vkcs_networking_network.extnet.id 17} 18 19resource "vkcs_networking_router_interface" "router_interface" { 20 router_id = "${vkcs_networking_router.router.id}" 21 subnet_id = "${vkcs_networking_subnet.subnet.id}" 22}
- vkcs_vpnaas_service — управляет сервисом VPN внутри VK Cloud. Включает в себя следующий параметр:
- router_id — ID роутера. Изменение значения этого параметра создает новый сервис. Если необходимо использовать существующий роутер, то укажите его id (data.vkcs_networking_router.router.id), используя источник данных:
1data "vkcs_networking_router" "router" { 2 name = "router_1" 3}
- 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 — список эндпоинтов одинакового типа, включаемых в группу эндпоинтов. Тип значений зависит от типа эндпоинтов. Изменение значения этого параметра создает новую группу.
- vkcs_vpnaas_site_connection - управляет ресурсом подключения IPSec сайта внутри VK Cloud. Включает в себя следующие параметры:
-
name — имя соединения. Изменение значения этого параметра меняет имя существующего подключения.
-
ikepolicy_id — ID политики IKE. Изменение значения этого параметра создает новое соединение.
-
ipsecpolicy_id — ID политики IPsec. Изменение значения этого параметра создает новое соединение.
-
vpnservice_id — ID VPN сервиса. Изменение значения этого параметра создает новое соединение.
-
psk — публичный ключ. Принимает любые значения типа «string».
-
peer_address — публичный адрес IPv4 или IPv6 peer-шлюза, либо FQDN.
-
peer_id — ID peer-роутера для прохождения аутентификации. Принимаются значения типов: адрес IPv4, адрес IPv6, e-mail, key ID, FQDN. Обычно значение этого параметра совпадает со значением параметра peer_address. Изменение значения этого параметра меняет политику существующего подключения.
-
local_ep_group_id — ID группы эндпоинтов, которая включает в себя частные подсети локального подключения. Требует указания параметра peer_ep_group_id, если не включен режим обратной совместимости, где peer_cidrs уже предоставляются с subnet_id VPN сервиса. Изменение значения этого параметра меняет существующее подключение.
-
peer_ep_group_id — ID группы эндпоинтов, которая включает в себя частные CIDR-адреса peer-подключения в формате
<net_adress>/<префикс>
. Требует указания параметра local_ep_group_id, если не включен режим обратной совместимости, где peer_cidrs уже предоставляются с subnet_id VPN сервиса. -
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 соединение не запустится прежде чем не будет выполнено создание указанных ресурсов.
1resource "vkcs_vpnaas_service" "service" { 2 router_id = "${vkcs_networking_router.router.id}" 3} 4 5resource "vkcs_vpnaas_ipsec_policy" "policy_1" { 6 name = "ipsec-policy" 7} 8 9resource "vkcs_vpnaas_ike_policy" "policy_2" { 10 name = "ike-policy" 11} 12 13resource "vkcs_vpnaas_endpoint_group" "group_1" { 14 type = "cidr" 15 endpoints = ["10.0.0.24/24", "10.0.0.25/24"] 16} 17resource "vkcs_vpnaas_endpoint_group" "group_2" { 18 type = "subnet" 19 endpoints = [ "${vkcs_networking_subnet.subnet.id}" ] 20} 21 22resource "vkcs_vpnaas_site_connection" "connection" { 23 name = "connection" 24 ikepolicy_id = "${vkcs_vpnaas_ike_policy.policy_2.id}" 25 ipsecpolicy_id = "${vkcs_vpnaas_ipsec_policy.policy_1.id}" 26 vpnservice_id = "${vkcs_vpnaas_service.service.id}" 27 psk = "secret" 28 peer_address = "192.168.10.1" 29 peer_id = "192.168.10.1" 30 local_ep_group_id = "${vkcs_vpnaas_endpoint_group.group_2.id}" 31 peer_ep_group_id = "${vkcs_vpnaas_endpoint_group.group_1.id}" 32 dpd { 33 action = "restart" 34 timeout = 42 35 interval = 21 36 } 37 depends_on = ["vkcs_networking_router_interface.router_interface"] 38}
Добавьте обе части примера в файл vpn.tf и выполните следующие команды:
terraform init
terraform apply