VPN IPSec (site-to-site) между VPNaaS (SIM-Cloud) и роутером OPNsense (remote office)

Описание

Рассмотрим настройку VPN соединения IPSec «site-to-site» между сервисом VPNaaS со стороны облачной инфраструктуры и роутером на основе OPNsense со стороны удалённого офиса.
Оба роутера имеют реальные IP адреса на WAN интерфейсах, т.е. не используют NAT.
Статья содержит примеры конфигурации через графический интерфейс управления (GUI)

Начальные условия

  • Оба узла, между которыми строится VPN туннель, имеют реальные IP адреса.
  • Site «A» - сервис VPNaaS в облаке SIM-Cloud
  • Site «B» - клиентская инфраструктура на основе OPNsense.
  • Каждая сторона имеет свою собственную приватную подсеть:
    • Site «A» - 10.5.4.0/24
    • Site «B» - 192.168.255.0/24
  • Версия VPNaaS - v. 12.0.5
  • Версия OPNsense - v. 19.7-amd64

Предупреждение

В зависимости от версии ОС роутера или программного обеспечения, дальнейшая настройка может отличаться.

Примечание

Для установления VPN-соединения необходимо обеспечить выполнения обязательных условий:

  • Сетевая доступность между маршрутизаторами:

    • Protocol: UDP, port 500 (for IKE, to manage encryption keys).
    • Protocol: UDP, port 4500 (for IPSEC NAT-Traversal mode).
    • Protocol: ESP, value 50 (for IPSEC).
    • Protocol: AH, value 51 (for IPSEC).
  • Правила фаерволов не должны блокировать сетевой трафик между маршрутизаторами и приватными подсетями.

  • Приватные подсети, которые будут соединяться средствами IPSec, должны быть разными, а также не включать в себя друг друга.

«Сводная таблица»
VPN Router VPN Peer IP Private Network Private Network GW IP Private Network Host IP
Site «A» (VPNaaS) 156.67.54.218 10.5.4.0/24 10.5.4.1/32 10.5.4.7
Site «B» (OPNsense) 156.67.53.137 192.168.255.0/24 192.168.255.21/32 192.168.255.29

В данном примере будет выполнена первоначальная настройка защищенного VPN соединения IPSec «site-to-site». Тем самым мы соединим приватные сети 10.5.4.0/24 и 192.168.255.0/24, которые находятся за маршрутизаторами.

Конфигурация Site «A» (VPNaaS)

Сервис VPNaaS настраиваем согласно имеющейся в документации инструкции:

A1. Выполним настройку IKE Policy. На этом этапе будем использовать следующие параметры:

«IKE Policy»
Name ikepolicy
Authorization algorithm sha1
Encryption algorithm 3des
IKE version v2
Lifetime value for IKE keys 86400
Perfect Forward Secrecy group5
IKE Phase1 negotiation mode main

A2. Выполним настройку IPsec Policy. На этом этапе будем использовать следующие параметры:

«IPsec Policy»
Name ipsecpolicy
Authorization algorithm sha1
Encapsulation mode tunnel
Encryption algorithm 3des
Lifetime value for IKE keys 3600
Perfect Forward Secrecy group5
Transform Protocol esp

A3. Выполним настройку VPN service. На этом этапе будем использовать следующие параметры:

«VPN service»
Name VPNservice
Router выберем из списка роутер облачного проекта

A4. Выполним настройку Endpoint Groups. На этом этапе будем использовать следующие параметры:

«Endpoint Groups»
Endpoint group name Type Value
local_epg SUBNET 10.5.4.0/24
remote_epg CIDR 192.168.255.0/24

A5. Выполним настройку IPsec site connection. На этом этапе будем использовать следующие параметры:

«IPsec site connection»
Name ipsecsiteconn
VPN service associated with this connection VPNservice
Endpoint group for local subnet(s) local_epg
IKE policy associated with this connection ikepolicy
IPsec policy associated with this connection ipsecpolicy
Peer gateway public IPv4/IPv6 Address or FQDN 156.67.53.137
Peer router identity for authentication (Peer ID) 156.67.53.137
Endpoint group for remote peer CIDR(s) remote_epg
Pre-Shared Key (PSK) string Baejii9ahwoo
MTU 1500

A6. После всех проведённых манипуляций видим, что «IPsec site connection» успешно создался и имеет статус - «Down». Когда туннель будет настроен с другой стороны и успешно поднимется, статус изменится на «Active».

Конфигурация Site «B» (OPNsense)

При настройке VPN соединения на ПО OPNsense, будем руководствоваться оригинальной статьей от производителя ПО - «Setup IPsec site to site tunnel».

B0-1. Перед непосредственной настройкой VPN туннеля, необходимо разрешить маршрутизацию трафика с приватных сетей (определённых в RFC1918) через WAN интерфейс.
Для этого перейдём в меню «Interfaces ‣ [WAN]» и снимем отметку с пункта «Block private networks».
Сохраним изменения нажатием на кнопку «Save» и применим их нажатием на кнопку «Apply changes».
B0-2. Чтобы разрешить соединения IPSec туннелей, настроим в firewall правила для протоколов:
  • Protocol ESP
  • UDP Traffic on Port 500 (ISAKMP)
  • UDP Traffic on Port 4500 (NAT-T)

Для этого перейдем в меню «Firewall ‣ Rules ‣ WAN» и создадим правила согласно таблице:

«Edit WAN Firewall rules»
Action Interface TCP/IP Version Protocol Destination Destination port range Description
Pass WAN IPv4 ESP WAN address Any IPsec ESP
Pass WAN IPv4 TCP/UDP WAN address ISAKMP IPsec ISAKMP
Pass WAN IPv4 TCP/UDP WAN address IPsec NAT-T IPsec NAT-T

Примечание

Для дополнительной безопасности, в поле «Source» правил можно указать IP адрес VPNaaS маршрутизатора (в данном примере это 156.67.54.218)

После создания правил применим изменения нажатием на кнопку «Apply changes»

B1. Настройка VPN IPsec туннеля. Phase 1

Перейдем в меню «VPN ‣ IPsec ‣ Tunnel Settings» и нажмём «+».
Будем использовать следующие параметры:
General information
Connection method default  
Key Exchange version V2 должно совпадать с версией установленной в VPNaaS
Internet Protocol IPv4  
Interface WAN должен быть выбран интерфейс смотрящий в сеть интернет
Remote gateway 156.67.54.218 в нашем случае, публичный IP адрес VPNaaS
Description VPNaaS описание
Phase 1 proposal (Authentication)
Authentication method Mutual PSK Используем Pre-shared Key
My identifier My IP address Простая идентификация, если используем фиксированный ip
Peer identifier Peer IP address Простая идентификация, если используем фиксированный ip
Pre-Shared Key Baejii9ahwoo Случайная фраза, должна совпадать с введённой с другой стороны
Phase 1 proposal (Algorithms)
Encryption algorithm 3DES должно совпадать с версией установленной в VPNaaS
Hash algoritm SHA1 должно совпадать с версией установленной в VPNaaS
DH key group 5 должно совпадать с версией установленной в VPNaaS
Lifetime 86400 должно совпадать с версией установленной в VPNaaS
Advanced Options
Disable Rekey Unchecked Перезапросить ключ, когда истекает срок его действия
Disable Reauth Unchecked For IKEv2 only re-authenticate peer on rekeying
NAT Traversal Disabled For IKEv2 NAT traversal всегда включён
Dead Peer Detection Unchecked  

Сохраним изменения нажатием на кнопку «Save»

B2. Настройка VPN IPsec туннеля. Phase 2

Перейдем в меню «VPN ‣ IPsec ‣ Tunnel Settings». После нажатия кнопки «+ Show 0 Phase-2 entries» откроется пустой список, справа нажмём «+» (add phase 2 entry) чтобы добавить запись для «Phase 2».
Будем использовать следующие параметры:
General information
Mode Tunnel IPv4 Выберем Tunnel mode
Description Локальная сеть в VPNaaS Описание
Local Network
Type LAN subnet Route the local LAN subnet
Remote Network
Type Network Route a remote network
Address 10.5.4.0/24 The remote LAN subnet
Phase 2 proposal (SA/Key Exchange)
Protocol ESP Выберем ESP для шифрования
Encryption algorithms 3DES должно совпадать с версией установленной в VPNaaS
Hash algortihms SHA1 должно совпадать с версией установленной в VPNaaS
PFS Key group 5(1536bits) должно совпадать с версией установленной в VPNaaS
Lifetime 3600 должно совпадать с версией установленной в VPNaaS

Сохраним изменения нажатием на кнопку «Save» и применим их нажатием на кнопку «Apply changes».

B3. Включение VPN IPsec туннеля.

Перейдем в меню «VPN ‣ IPsec ‣ Tunnel Settings» и поставим отметку в пункте «Enable IPsec».
Сохраним изменения нажатием на кнопку «Save»

B4. Добавим правила в firewall, чтобы разрешить прохождение трафика через IPsec туннель в нашу локальную сеть.

Для этого перейдем в меню «Firewall ‣ Rules ‣ IPsec» и добавим правило согласно таблице:

«Edit IPsec Firewall rules»
Action Interface TCP/IP Version Protocol Destination Destination port range Description
Pass IPsec IPv4 any LAN net any Allow IPsec traffic to LAN net

После создания правил применим изменения нажатием на кнопку «Apply changes»

Проверка работы туннеля

После проведённых манипуляций VPN туннель должен поднятся и через него должен ходить трафик между локальными сетями.
Это можно проверить с помощью команды ping между хостами в противоположных локальных сетях.

Примечание

Если туннель не поднялся, нужно рестартовать VPN сервис с обоих сторон.

  • Для просмотра статуса туннеля в OPNsense нужно зайти в меню «VPN ‣ IPsec ‣ Status Overview». Там же можно нажать на пиктограмму с символом «(i)», чтобы увидеть детали для «phase 2»
  • Cтатус «IPsec site connection» в VPNaaS изменился на «Active».