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

Описание

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

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

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

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

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

Примечание

Для установления 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» (MikroTik) 156.67.53.178 192.168.255.0/24 192.168.255.23/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 aes-128
IKE version v1
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 aes-128
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.178
Peer router identity for authentication (Peer ID) 156.67.53.178
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» (MikroTik)

При настройке VPN соединения на ПО MikroTik, будем руководствоваться оригинальной статьей от производителя ПО - «Site to Site IPsec tunnel».
Для каждого пункта будет описана его настройка через графический веб-интерфейс и с помощью интерфейса командной строки (CLI).

B1. Создадим профиль для «Phase 1»

Для создания через графический веб-интерфейс перейдем в меню «IP:IPsec» и на вкладке «Profiles» нажмём «Add New».
Будем использовать следующие параметры:
new profile
Name VPNaaS  
Hash Algorithms sha1 должно совпадать со значением установленным в сервисе VPNaaS
Encryption Algorithm aes-128 должно совпадать со значением установленным в сервисе VPNaaS
DH Group modp1536 должно совпадать со значением установленным в сервисе VPNaaS
Lifetime 1d должно совпадать со значением установленным в сервисе VPNaaS
Сохраним изменения нажатием на кнопку «OK»

Для создания через CLI выполним команду:
/ip ipsec profile
add enc-algorithm=aes-128 hash-algorithm=sha1 dh-group=modp1536 lifetime=1d name=VPNaaS

B2. Создадим «proposal» запись для «Phase 2»

Для создания через графический веб-интерфейс перейдем в меню «IP:IPsec» и на вкладке «Proposals» нажмём «Add New».
Будем использовать следующие параметры:
new proposal
Name VPNaaS  
Auth. Algorithms sha1 должно совпадать со значением установленным в сервисе VPNaaS
Encr. Algorithms aes-128 cbc должно совпадать со значением установленным в сервисе VPNaaS
Lifetime 01:00:00 должно совпадать со значением установленным в сервисе VPNaaS
PFS Group modp1536 должно совпадать со значением установленным в сервисе VPNaaS
Сохраним изменения нажатием на кнопку «OK»

Для создания через CLI выполним команду:
/ip ipsec proposal
add enc-algorithms=aes-128-cbc auth-algorithms=sha1 pfs-group=modp1536 lifetime=1h name=VPNaaS

B3 Опишем параметры удаленного пира

Для создания через графический веб-интерфейс перейдем в меню «IP:IPsec» и на вкладке «Peers» нажмём «Add New».
Будем использовать следующие параметры:
new peer
Name VPNaaS  
Address 156.67.54.218/32 IP сервиса VPNaaS
Profile VPNaaS созданный ранее профиль
Exchange Mode main должно совпадать со значением установленным в сервисе VPNaaS
Сохраним изменения нажатием на кнопку «OK»

Для создания через CLI выполним команду:
/ip ipsec peer
add address=156.67.54.218/32 exchange-mode=main profile=VPNaaS name=VPNaaS

B4 Укажем механизм идентификации

Для создания через графический веб-интерфейс перейдем в меню «IP:IPsec» и на вкладке «Identities» нажмём «Add New».
Будем использовать следующие параметры:
new identitie
Peer VPNaaS созданный ранее peer
Auth. Method pre shared key  
Secret Baejii9ahwoo должно совпадать со значением установленным в сервисе VPNaaS
Сохраним изменения нажатием на кнопку «OK»

Для создания через CLI выполним команду:
/ip ipsec identity
add auth-method=pre-shared-key peer=VPNaaS secret=Baejii9ahwoo

B5 Создадим ipsec правило разрешающее трафик из локальной приватной сети в удалённую локальную сеть через туннель.

Для создания через графический веб-интерфейс перейдем в меню «IP:IPsec» и на вкладке «Policies» нажмём «Add New».
Будем использовать следующие параметры:
new policie
Peer VPNaaS созданный ранее peer
Tunnel checked включим режим туннелирования
Src. Address 192.168.255.0/24 локальная сеть со стороны MikroTik
Dst. Address 10.5.4.0/24 локальная сеть со стороны сервиса VPNaaS
Action encrypt  
IPsec Protocols esp должно совпадать со значением установленным в сервисе VPNaaS
Proposal VPNaaS созданный ранее proposal
Сохраним изменения нажатием на кнопку «OK»

Для создания через CLI выполним команду:
/ip ipsec policy
add src-address=192.168.255.0/24 src-port=any dst-address=10.5.4.0/24 dst-port=any tunnel=yes action=encrypt proposal=VPNaaS ipsec-protocols=esp peer=VPNaaS

B6 На этом этапе, если отправить трафик через туннель IPsec, он не будет работать, пакеты со стороны MikroTik будут потеряны.

Это связано с тем, что маршрутизатор имеет правило NAT (маскарад), которое изменяет адрес источника перед шифрованием пакета. Маршрутизатор не может зашифровать пакет, поскольку адрес источника не совпадает с адресом, указанным в конфигурации политики. Для получения дополнительной информации см. Пример потока пакетов IPsec.

Чтобы исправить ситуацию, необходимо добавить правило обхода NAT на маршрутизаторе MikroTik
Для создания через графический веб-интерфейс перейдем в меню «IP:Firewall» и на вкладке «NAT» нажмём «Add New».
Будем использовать следующие параметры:
new nat rule
Chain srcnat  
Src. Address 192.168.255.0/24 локальная сеть со стороны MikroTik
Dst. Address 10.5.4.0/24 локальная сеть со стороны сервиса VPNaaS
action accept  
Сохраним изменения нажатием на кнопку «OK». После создания, перетянем наше правило мышью в самый верх списка.

Для создания через CLI выполним команду:
/ip firewall nat
add chain=srcnat action=accept place-before=0 src-address=192.168.255.0/24 dst-address=10.5.4.0/24

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

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

Примечание

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

  • Просмотр статуса туннеля в MikroTik:

    Для просмотра через графический веб-интерфейс перейдем в меню «IP:IPsec»

    • на вкладке «Installed SAs» должны увидеть две строки с характеристиками соединения между пирами
    • на вкладке «Policies» , пункт «PH2 State» должен иметь значение established

    Для просмотра через CLI выполним команды
    /ip ipsec
    
    installed-sa print
      (должны увидеть две строки с характеристиками соединения между пирами)
    
    active-peers print
      (состояние соединения STATE должно иметь значение established)
    
  • Cтатус «IPsec site connection» в VPNaaS изменился на «Active».