Прежде всего убедитесь, что вы установили Terraform и создали файл main.tf с необходимыми провайдерами.
Для установления VPN соединения необходимо создать файл vpn.tf, где будет описана конфигурация создаваемого подключения. Чтобы изменить настройки подключения воспользуйтесь командами, приведенными ниже.
Создание виртуальной сети
Чтобы создать VPN соединение, нужно иметь виртуальная сеть с роутером, если они уже есть, то переходите на шаг Создание VPN соединения. В ином случае сеть необходимо создать со следующими объектами:
- Ресурсы (resource):
- linxcs_networking_network — сеть, в которой будет создана ВМ. В примере ниже сеть создается с именем «extnet».
- linxcs_networking_subnet — подсеть из сети. В примере: «subnet».
- linxcs_networking_router — роутер для внешней сети и взаимодействия с внешним миром. В примере: router.
- linxcs_networking_router_interface — подключить роутер к внутренней сети.
- Источники данных (data source):
- linxcs_networking_network – внешняя сеть для получения публичного IP (Floating IP).
1data «linxcs_networking_network» «extnet» {
2 name = «ext-net»
3}
4
5resource «linxcs_networking_network» «network» {
6 name = «vpnaas_network»
7}
8
9resource «linxcs_networking_subnet» «subnet» {
10 network_id = «${linxcs_networking_network.network.id}»
11 cidr = «192.168.199.0/24»
12 ip_version = 4
13}
14
15resource «linxcs_networking_router» «router» {
16 name = «router»
17 external_network_id = data.linxcs_networking_network.extnet.id
18}
19
20resource «linxcs_networking_router_interface» «router_interface» {
21 router_id = «${linxcs_networking_router.router.id}»
22 subnet_id = «${linxcs_networking_subnet.subnet.id}»
23}
Создание VPN соединения
- linxcs_vpnaas_service — управляет сервисом VPN внутри LINX Cloud. Включает в себя следующий параметр:
- router_id — ID роутера. Изменение значения этого параметра создает новый сервис. Если необходимо использовать существующий роутер, то укажите его id (data.linxcs_networking_router.router.id), используя источник данных:
1data «linxcs_networking_router» «router» {
2 name = «router_1»
3}
- linxcs_vpnaas_ipsec_policy — управляет политикой IPSec ресурса внутри LINX Cloud. Включается в себя следующий параметр:
- name — имя создаваемой политики. Изменение значения этого параметра меняет имя существующей политики.
- linxcs_vpnaas_ike_policy — управляет политикой IKE ресурса внутри LINX Cloud. Включает в себя следующий параметр:
- name — имя создаваемой политики. Изменение значения этого параметра меняет имя существующей политики.
- linxcs_vpnaas_endpoint_group — управляет ресурсом «группа эндпоинтов» внутри LINX Cloud. Включает в себя следующие параметр:
- type — тип эндпоинтов в группе. Принимаются значения типов subnet, cidr, network, router или vlan. Изменение значения этого параметра создает новую группу.
- endpoints — список эндпоинтов одинакового типа, включаемых в группу эндпоинтов. Тип значений зависит от типа эндпоинтов. Изменение значения этого параметра создает новую группу.
- linxcs_vpnaas_site_connection — управляет ресурсом подключения IPSec сайта внутри LINX 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 «linxcs_vpnaas_service» «service» {
2 router_id = «${linxcs_networking_router.router.id}»
3}
4
5resource «linxcs_vpnaas_ipsec_policy» «policy_1» {
6 name = «ipsec-policy»
7}
8
9resource «linxcs_vpnaas_ike_policy» «policy_2» {
10 name = «ike-policy»
11}
12
13resource «linxcs_vpnaas_endpoint_group» «group_1» {
14 type = «cidr»
15 endpoints = [«10.0.0.24/24», «10.0.0.25/24»]
16}
17resource «linxcs_vpnaas_endpoint_group» «group_2» {
18 type = «subnet»
19 endpoints = [ «${linxcs_networking_subnet.subnet.id}» ]