Site-to-Site VPN#
Описание#
Подход к построению VPN сети Site-to-Site подразумевает добавление удаленных участников VPN сети, которые могут быть сконфигурированы для обмена зашифрованной информацией между ними и устройством под управлением ПО Факел или подключенными к ним сетями.
Для конфигурирования Site-to-Site подключений необходимо добавить
участников VPN сети с помощью команды set vpn ipsec site-to-site
.
Удаленный участник VPN сети может быть идентифицирован с помощью следующих данных:
IPv4 или IPv6 адреса. Этот способ является самым простым и используется в случае назначения участникам VPN сети статических публичных IP адресов.
Имя хоста. Этот способ аналогичен предыдущему, только с одним отличием - указывается DNS имя участника VPN сети вместо IP адреса. Используется в случае, если участник имеет публичный IP адрес и DNS имя, но IP адрес может иногда изменяться.
Идентификатор удаленного участника VPN сети. Этот способ не предусматривает задания IP-адреса или DNS имени участника VPN сети. Используется в случае, если участник не имеет доступных публичных IP адресов (например, в случае использования трансляции адресов - NAT) или IP адреса могут быть изменены.
Каждый участник VPN сети Site-to-Site располагает следующим набором параметров:
authentication
- набор параметров аутентификации между устройством под управлением ПО Факел и удаленным участником VPN сети:id
- локальный идентификатор устройства под управлением ПО Факел. Если данный параметр задан, то в процессе аутентификации он будет направлен удаленному участнику VPN сети;mode
- режим аутентификации между устройством под управлением ПО Факел и удаленным участником VPN сети:pre-shared-secret
- последовательность символов, представляющая собой общий секретный ключ, который должен быть одинаковым как для локальной, так и для удаленной стороны защищенной коммуникации;rsa
- общий RSA ключ, который должен быть определен в секцииset vpn rsa-keys
конфигурации;x509
- инфраструктура сертификатов, используемая для аутентификации.
pre-shared-secret
- общий секретный ключ, используется в случае, если задан параметрmode pre-shared-secret
;remote-id
- идентификатор удаленного участника VPN сети, который используется вместо DNS имени или IP адреса. Данный параметр рекомендуется использовать в случае, если удаленный участник VPN сети находится за устройством с настроенным механизмом трансляции адресов (NAT) или если задан параметрmode x509
;rsa-key-name
- общий RSA ключ, используемый для аутентификации, который должен быть определен в секцииset vpn rsa-keys
конфигурации;use-x509-id
- признак использования локального идентификатора из сертификата X.509. Данный параметр не может быть использован совместно с заданным параметромid
;x509
- набор параметров аутентификации с использованием сертификатов X.509:ca-cert-file
- путь до файла сертификата удостоверяющего центра. Используется для аутентификации удаленного участника VPN сети;cert-file
- путь до файла сертификата, используемого для аутентификации локального участника VPN сети по отношению к удаленному участнику;crl-file
- путь до файла со списком отозванных сертификатов, который используется для проверки действительности сертификата удаленного участника VPN сети;key
- закрытый ключ, который используется для аутентификации локального участника VPN сети по отношению к удаленному участнику:file
- путь до контейнера с закрытым ключом;password
- пароль для доступа к контейнеру с закрытым ключом (опционально).
connection-type
- режим взаимодействия устройства под управлением ПО Факел с удаленными участниками VPN сети:initiate
- режим, при котором устройство пытается установить соединение с удаленным участником VPN сети сразу после применения конфигурации и после перезагрузки. В этом режиме соединение не будет установлено повторно в случае его разрыва. Рекомендуется использовать только совместно механизмом DPD или другими механизмами контроля соединений.respond
- режим, при котором устройство не пытается установить соединение с удаленным участником VPN сети. В этом режиме IPSec-сессия будет установлена по инициативе удаленного участника. Рекомендуется использовать в случае, если отсутствует прямое подключение к удаленному участнику, например, из-за того, что он находится за межсетевым экраном или устройством с настроенным механизмом трансляции адресов (NAT).
default-esp-group
- группа алгоритмов для протокола ESP по умолчанию, которая будет использована при шифровании передаваемых данных. Группа может быть переопределена отдельными настройками туннеля или VTI интерфейса;description
- краткое описание для локального участника VPN сети;dhcp-interface
- признак использования IP адреса, полученного локальным участником VPN сети по протоколу DHCP, для установления IPSec сессий вместо адреса, указанного в параметреlocal-address
;force-encapsulation
- признак принудительной инкапсуляции ESP пакетов в UDP. Рекомендуется использовать в случае, если между локальным и удаленным участниками VPN сети находится межсетевой экран или устройство с настроенным механизмом трансляции адресом (NAT), которое не может обрабатывать ESP пакеты;ike-group
- группа алгоритмов для протокола IKE, которая будет использована при обмене ключами;ikev2-reauth
- режим повторной аутентификации удаленного участника VPN сети при смене ключей, которая выполняется только в рамках протокола IKEv2:yes
- режим, при котором со сменой ключей осуществляется попытка повторного создания всех ранее созданных записей в новой таблице SA;no
- режим, при котором со сменой ключей не происходит изменений изменений в части записей таблицы SA;inherit
- режим, при котором со сменой ключей используется порядок действий по умолчанию, обусловленный выбранной группой алгоритмов для протокола IKE.
local-address
- локальный IP адрес для подключения к данному участнику VPN сети. При значенииany
используется IP адрес интерфейса, на который указывает маршрут по умолчанию.tunnel
- классификатор трафика, при соответствии которому принимается решение о шифровании данных, перед их передачей другому участнике VPN сети:disable
- признак отключения данного туннеля;esp-group
- группа алгоритмов для протокола ESP по отношению к выбранному туннелю;local
- локальный отправитель трафика, для которого выполняется шифрование перед передачей данному участнику VPN сети:port
- номер порта отправителя, учитывается только при совместном использовании с параметромprefix
;prefix
- IP адрес сети на локальной стороне.
protocol
- протокол, для которого выполняется шифрование перед передачей данному участнике VPN сети;remote
- удаленный получатель трафика, для которого выполняется шифрование перед передачей данному участнику VPN сети:port
- номер порта отправителя, учитывается только при совместном использовании с параметромprefix
;prefix
- IP адрес сети на удаленной стороне.
vti
- набор параметров использования VTI интерфейса для шифрования трафика. Любой трафик, который будет отправлен на VTI интерфейс, будет зашифрован и отправлен данному участнику VPN сети. Использование VTI интерфейса упрощает настройку механизма IPSec и предоставляет некоторую гибкость в сложных сценариях использования, а также позволяет динамически добавлять и удалять сети, доступные через удаленного участника VPN сети, так как в этом режиме для устройства не требуется создание дополнительных записей в таблице SA или политик SP для каждой удаленной сети:bind
- параметр, который позволяет выбрать и привязать к данному участнике VPN сети определенный VTI интерфейс;esp-group
- группа алгоритмов для протокола ESP, которая будет использована для шифрования трафика, проходящего через данный VTI интерфейс.
Настройка#
Пример настройки#
Протокол IKEv1#
В данном примере рассматривается настройка взаимодействия двух устройств, которые для удобства обозначены Левой стороной и Правой стороной соответственно, при следующих условиях:
в качестве внешнего (WAN) интерфейса рассматривается интерфейс
eth1
;левая подсеть с адресом
192.168.0.0/24
рассматривается как сеть головного офиса;локальный IP адрес левой стороны
198.51.100.3
рассматривается как внешний (WAN) IP адрес головного офиса;правая подсеть с адресом
10.0.0.0/24
рассматривается как сеть удаленного филиала;локальный IP адрес правой стороны
203.0.113.2
рассматривается как внешний (WAN) IP адрес удаленного филиала;
# hq side
set vpn ipsec esp-group office-srv-esp compression 'disable'
set vpn ipsec esp-group office-srv-esp lifetime '1800'
set vpn ipsec esp-group office-srv-esp mode 'tunnel'
set vpn ipsec esp-group office-srv-esp pfs 'enable'
set vpn ipsec esp-group office-srv-esp proposal 1 encryption 'aes256'
set vpn ipsec esp-group office-srv-esp proposal 1 hash 'sha1'
set vpn ipsec ike-group office-srv-ike ikev2-reauth 'no'
set vpn ipsec ike-group office-srv-ike key-exchange 'ikev1'
set vpn ipsec ike-group office-srv-ike lifetime '3600'
set vpn ipsec ike-group office-srv-ike proposal 1 encryption 'aes256'
set vpn ipsec ike-group office-srv-ike proposal 1 hash 'sha1'
set vpn ipsec ipsec-interfaces interface 'eth1'
set vpn ipsec site-to-site peer 203.0.113.2 authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer 203.0.113.2 authentication pre-shared-secret 'SomePreSharedKey'
set vpn ipsec site-to-site peer 203.0.113.2 ike-group 'office-srv-ike'
set vpn ipsec site-to-site peer 203.0.113.2 local-address '198.51.100.3'
set vpn ipsec site-to-site peer 203.0.113.2 tunnel 0 allow-nat-networks 'disable'
set vpn ipsec site-to-site peer 203.0.113.2 tunnel 0 allow-public-networks 'disable'
set vpn ipsec site-to-site peer 203.0.113.2 tunnel 0 esp-group 'office-srv-esp'
set vpn ipsec site-to-site peer 203.0.113.2 tunnel 0 local prefix '192.168.0.0/24'
set vpn ipsec site-to-site peer 203.0.113.2 tunnel 0 remote prefix '10.0.0.0/21'
# branch side
set vpn ipsec esp-group office-srv-esp compression 'disable'
set vpn ipsec esp-group office-srv-esp lifetime '1800'
set vpn ipsec esp-group office-srv-esp mode 'tunnel'
set vpn ipsec esp-group office-srv-esp pfs 'enable'
set vpn ipsec esp-group office-srv-esp proposal 1 encryption 'aes256'
set vpn ipsec esp-group office-srv-esp proposal 1 hash 'sha1'
set vpn ipsec ike-group office-srv-ike ikev2-reauth 'no'
set vpn ipsec ike-group office-srv-ike key-exchange 'ikev1'
set vpn ipsec ike-group office-srv-ike lifetime '3600'
set vpn ipsec ike-group office-srv-ike proposal 1 encryption 'aes256'
set vpn ipsec ike-group office-srv-ike proposal 1 hash 'sha1'
set vpn ipsec ipsec-interfaces interface 'eth1'
set vpn ipsec site-to-site peer 198.51.100.3 authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer 198.51.100.3 authentication pre-shared-secret 'SomePreSharedKey'
set vpn ipsec site-to-site peer 198.51.100.3 ike-group 'office-srv-ike'
set vpn ipsec site-to-site peer 198.51.100.3 local-address '203.0.113.2'
set vpn ipsec site-to-site peer 198.51.100.3 tunnel 0 allow-nat-networks 'disable'
set vpn ipsec site-to-site peer 198.51.100.3 tunnel 0 allow-public-networks 'disable'
set vpn ipsec site-to-site peer 198.51.100.3 tunnel 0 esp-group 'office-srv-esp'
set vpn ipsec site-to-site peer 198.51.100.3 tunnel 0 local prefix '10.0.0.0/21'
set vpn ipsec site-to-site peer 198.51.100.3 tunnel 0 remote prefix '192.168.0.0/24'
После этого необходимо убедиться в результатах конфигурирования.
fakel@hq:~$ show vpn ike sa
Peer ID / IP Local ID / IP
------------ -------------
203.0.113.2 198.51.100.3
State Encrypt Hash D-H Grp NAT-T A-Time L-Time
----- ------- ---- ------- ----- ------ ------
up aes256 sha1 5 no 734 3600
fakel@hq:~$ show vpn ipsec sa
Peer ID / IP Local ID / IP
------------ -------------
203.0.113.2 198.51.100.3
Tunnel State Bytes Out/In Encrypt Hash NAT-T A-Time L-Time Proto
------ ----- ------------ ------- ---- ----- ------ ------ -----
0 up 7.5M/230.6K aes256 sha1 no 567 1800 all
При настроенных правилах трансляции адреса отправителя (SNAT) на интерфейсе
eth1
необходимо добавить исключающее правило.
# hq side
set nat source rule 10 destination address '10.0.0.0/24'
set nat source rule 10 'exclude'
set nat source rule 10 outbound-interface 'eth1'
set nat source rule 10 source address '192.168.0.0/24'
# branch side
set nat source rule 10 destination address '192.168.0.0/24'
set nat source rule 10 'exclude'
set nat source rule 10 outbound-interface 'eth1'
set nat source rule 10 source address '10.0.0.0/24'
Для прохождения трафика, адресованного клиентским хостам, необходимо добавить соответствующие разрешающие правила фильтрации.
# hq side
set firewall name OUTSIDE-LOCAL rule 32 action 'accept'
set firewall name OUTSIDE-LOCAL rule 32 source address '10.0.0.0/24'
# branch side
set firewall name OUTSIDE-LOCAL rule 32 action 'accept'
set firewall name OUTSIDE-LOCAL rule 32 source address '192.168.0.0/24'
Протокол IKEv2#
Рассмотрим следующую топологию сети.

Примечание
Использование маски /31
для подсети туннеля допускается
подключений «точка-точка» согласно RFC 3021.
Настройки на левой стороне:
set interfaces vti vti10 address '10.0.0.2/31'
set vpn ipsec esp-group ESP_DEFAULT compression 'disable'
set vpn ipsec esp-group ESP_DEFAULT lifetime '3600'
set vpn ipsec esp-group ESP_DEFAULT mode 'tunnel'
set vpn ipsec esp-group ESP_DEFAULT pfs 'dh-group19'
set vpn ipsec esp-group ESP_DEFAULT proposal 10 encryption 'aes256gcm128'
set vpn ipsec esp-group ESP_DEFAULT proposal 10 hash 'sha256'
set vpn ipsec ike-group IKEv2_DEFAULT dead-peer-detection action 'hold'
set vpn ipsec ike-group IKEv2_DEFAULT dead-peer-detection interval '30'
set vpn ipsec ike-group IKEv2_DEFAULT dead-peer-detection timeout '120'
set vpn ipsec ike-group IKEv2_DEFAULT ikev2-reauth 'no'
set vpn ipsec ike-group IKEv2_DEFAULT key-exchange 'ikev2'
set vpn ipsec ike-group IKEv2_DEFAULT lifetime '10800'
set vpn ipsec ike-group IKEv2_DEFAULT mobike 'disable'
set vpn ipsec ike-group IKEv2_DEFAULT proposal 10 dh-group '19'
set vpn ipsec ike-group IKEv2_DEFAULT proposal 10 encryption 'aes256gcm128'
set vpn ipsec ike-group IKEv2_DEFAULT proposal 10 hash 'sha256'
set vpn ipsec ipsec-interfaces interface 'eth0.201'
set vpn ipsec site-to-site peer 172.18.202.10 authentication id '172.18.201.10'
set vpn ipsec site-to-site peer 172.18.202.10 authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer 172.18.202.10 authentication pre-shared-secret 'secretkey'
set vpn ipsec site-to-site peer 172.18.202.10 authentication remote-id '172.18.202.10'
set vpn ipsec site-to-site peer 172.18.202.10 connection-type 'initiate'
set vpn ipsec site-to-site peer 172.18.202.10 ike-group 'IKEv2_DEFAULT'
set vpn ipsec site-to-site peer 172.18.202.10 ikev2-reauth 'inherit'
set vpn ipsec site-to-site peer 172.18.202.10 local-address '172.18.201.10'
set vpn ipsec site-to-site peer 172.18.202.10 vti bind 'vti10'
set vpn ipsec site-to-site peer 172.18.202.10 vti esp-group 'ESP_DEFAULT'
Настройки на правой стороне:
set interfaces vti vti10 address '10.0.0.3/31'
set vpn ipsec esp-group ESP_DEFAULT compression 'disable'
set vpn ipsec esp-group ESP_DEFAULT lifetime '3600'
set vpn ipsec esp-group ESP_DEFAULT mode 'tunnel'
set vpn ipsec esp-group ESP_DEFAULT pfs 'dh-group19'
set vpn ipsec esp-group ESP_DEFAULT proposal 10 encryption 'aes256gcm128'
set vpn ipsec esp-group ESP_DEFAULT proposal 10 hash 'sha256'
set vpn ipsec ike-group IKEv2_DEFAULT dead-peer-detection action 'hold'
set vpn ipsec ike-group IKEv2_DEFAULT dead-peer-detection interval '30'
set vpn ipsec ike-group IKEv2_DEFAULT dead-peer-detection timeout '120'
set vpn ipsec ike-group IKEv2_DEFAULT ikev2-reauth 'no'
set vpn ipsec ike-group IKEv2_DEFAULT key-exchange 'ikev2'
set vpn ipsec ike-group IKEv2_DEFAULT lifetime '10800'
set vpn ipsec ike-group IKEv2_DEFAULT mobike 'disable'
set vpn ipsec ike-group IKEv2_DEFAULT proposal 10 dh-group '19'
set vpn ipsec ike-group IKEv2_DEFAULT proposal 10 encryption 'aes256gcm128'
set vpn ipsec ike-group IKEv2_DEFAULT proposal 10 hash 'sha256'
set vpn ipsec ipsec-interfaces interface 'eth0.202'
set vpn ipsec site-to-site peer 172.18.201.10 authentication id '172.18.202.10'
set vpn ipsec site-to-site peer 172.18.201.10 authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer 172.18.201.10 authentication pre-shared-secret 'secretkey'
set vpn ipsec site-to-site peer 172.18.201.10 authentication remote-id '172.18.201.10'
set vpn ipsec site-to-site peer 172.18.201.10 connection-type 'initiate'
set vpn ipsec site-to-site peer 172.18.201.10 ike-group 'IKEv2_DEFAULT'
set vpn ipsec site-to-site peer 172.18.201.10 ikev2-reauth 'inherit'
set vpn ipsec site-to-site peer 172.18.201.10 local-address '172.18.202.10'
set vpn ipsec site-to-site peer 172.18.201.10 vti bind 'vti10'
set vpn ipsec site-to-site peer 172.18.201.10 vti esp-group 'ESP_DEFAULT'
В данном примере используются ключевые параметры, представленные ниже.
authentication local-id/remote-id
- идентификация IKE используется для валидации устройств участников VPN в процессе фазы согласования IKE. Если вы не будете использовать параметрыlocal-id
илиremote-id
, по умолчанию устройство будет использовать IPv4 или IPv6 адрес, соответствующий локальному или удаленному участнику VPN сети соответственно. В некоторых сетевых конфигурация, например, если используется интерфейс IPSec с динамическим адресом или устройство находится за другим устройством с настроенным механизмом трансляции адресов (NAT), идентификатор IKE, полученный от участника VPN сети, не будет совпадать со шлюзом IKE, настроенным на устройстве. Это может привести к сбою валидации в ходе Фазы 1 IKE. Поэтому очень важно убедиться в том, что параметрыlocal-id
илиremote-id
заданы, а также в том, что идентификатор IKE соответствует значениюremote-id
, сконфигурированному на другом участнике VPN сетиdisable-route-autoinstall
- данная опция отключает использование маршрутов, установленных в таблице по умолчанию с идентификатором 220 для поддержки маршрутизации в топологии Site-to-Site. Данная таблица в основном используется при настройке VTI интерфейсов.dead-peer-detection action = clear | hold | restart
- данная опция предусматривает периодическую отправку участнику VPN сети сообщений R_U_THERE (IKEv1) и пустых сообщений INFORMATIONAL (IKEv2) для проверки работоспособности. Значенияclear
,hold
иrestart
активируют механизм DPD и определяют действия при истечении соответствующего тайм-аута. При использовании значенияclear
соединение разрывается без каких-либо дальнейших действий. При использовании значенияhold
устанавливается политика перехвата подходящего трафика с попыткой повторного согласования соединения по запросу. При использовании значенияrestart
выполняется безусловная попытка повторного согласования соединения.close-action = none | clear | hold | restart
- данная опция определяет действие, которое необходимо предпринять в случае, если удаленный участник VPN сети непредвиденно удаляет дочернюю запись SA (CHILD_SA). Значениеclose
не должно использоваться, если участник VPN сети использует повторную аутентификацию или уникальные идентификаторы. Когда данная опция установлена для участников, необходимо внимательно выбирать режим взаимодействия, задаваемый параметромconnection-type
. Например, если опция установлена для обоих участников VPN сети, то оба участника будут пытаться инициировать и удерживать открытыми соединения, соответствующие каждой дочерней записи SA (CHILD_SA). Это может привести к нестабильной работе устройства или исчерпанию ресурсов процессора и памяти.
Представленная ниже схема алгоритма отражает возможные комбинации в зависимости от конфигурации участника VPN сети.

Аналогичные комбинации применимы и в случае использования механизма DPD.
Список команд#
Базовые настройки#
- • set vpn ipsec esp-group <text> compression <enable | disable>#
- • set vpn ipsec esp-group <text> lifetime <30-86400>#
- • set vpn ipsec esp-group <text> mode <tunnel | transport>#
- • set vpn ipsec esp-group <text> pfs <enable | disable | dh-groupN>#
- • set vpn ipsec esp-group <text> proposal <1-65535> encryption <type>#
- • set vpn ipsec esp-group <text> proposal <1-65535> hash <type>#
- • set vpn ipsec ike-group <text> ikev2-reauth <yes | no>#
- • set vpn ipsec ike-group <text> key-exchange <ikev1 | ikev2>#
- • set vpn ipsec ike-group <text> lifetime <30-86400>#
- • set vpn ipsec ike-group <text> proposal <1-65535> encryption <type>#
- • set vpn ipsec ike-group <text> proposal <1-65535> hash <type>#
- • set vpn ipsec ipsec-interfaces interface <ethN>#
- • set vpn ipsec site-to-site peer <x.x.x.x> authentication mode <pre-shared-secret | rsa | x509>'#
- • set vpn ipsec site-to-site peer <x.x.x.x> authentication pre-shared-secret <text>#
- • set vpn ipsec site-to-site peer <x.x.x.x> ike-group <text>#
- • set vpn ipsec site-to-site peer <x.x.x.x> local-address <x.x.x.x>#
- • set vpn ipsec site-to-site peer <x.x.x.x> tunnel <0-4294967295> allow-nat-networks <enable | disable>#
- • set vpn ipsec site-to-site peer <x.x.x.x> tunnel <0-4294967295> allow-public-networks <enable | disable>#
- • set vpn ipsec site-to-site peer <x.x.x.x> tunnel <0-4294967295> esp-group <text>#
- • set vpn ipsec site-to-site peer <x.x.x.x> tunnel <0-4294967295> local prefix <x.x.x.x/x>#
- • set vpn ipsec site-to-site peer <x.x.x.x> tunnel <0-4294967295> remote prefix <x.x.x.x/x>#
- • set interfaces vti <vtiN> address <x.x.x.x/x>#
- • set vpn ipsec ike-group <text> dead-peer-detection action <hold | clear | restart>#
- • set vpn ipsec ike-group <text> dead-peer-detection interval <2-86400>#
- • set vpn ipsec ike-group <text> dead-peer-detection timeout <2-86400>#
- • set vpn ipsec ike-group <text> mobike <enable | disable>#
- • set vpn ipsec ike-group <text> proposal <1-65535> dh-group <number>#
- • set vpn ipsec site-to-site peer <x.x.x.x> authentication id <x.x.x.x>#
- • set vpn ipsec site-to-site peer <x.x.x.x> authentication remote-id <x.x.x.x>#
- • set vpn ipsec site-to-site peer <x.x.x.x> connection-type <initiate | respond>#
- • set vpn ipsec site-to-site peer <x.x.x.x> ike-group <text>#
- • set vpn ipsec site-to-site peer <x.x.x.x> ikev2-reauth <yes | no | inherit>#
- • set vpn ipsec site-to-site peer <x.x.x.x> local-address <x.x.x.x>#
- • set vpn ipsec site-to-site peer <x.x.x.x> vti bind <vtiN>#
- • set vpn ipsec site-to-site peer <x.x.x.x> vti esp-group <text>#