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>#