VPN IPsec site-to-site на Mikrotik

В данной статье будет рассмотрен процесс построения IPsec VPN туннеля между маршрутизатором MikroTik и NSX Edge.

Сетевая топология:

  • Edge ip: 185.17.66.222 – внешний ip NSX Edge
  • WAN ip: 178.46.1.1 – внешний ip MikroTik
  • MikroTik subnet: 192.168.41.0/24 — внутренняя сеть MikroTik
  • Local WAN ip: 192.168.1.210 – ip адрес MikroTik на интерфейсе, подключенном к интернету
  • Edge subnet: 10.10.10.0/24 -  внутренняя сеть Edge

Основные моменты в настройке:

  • Если у вас не белый/статический IP-адрес, то обязательно активируйте в IPsec Profile галочку - NAT Traversal. При активации опции, порт подключения 4500, вместо 500.
  • Если у вас несколько сетей, то для каждой нужно создавать свою политику, а поле level указывать как unique. Если используется одна сеть, то level установить, как require.

Настройка сетевого соединения на MikroTik

1. Настроим сетевые интерфейсы: ether1, подключенный к внешней сети, переименуем в WAN и укажем ip адрес — 192.168.1.210.24. Этот адрес далее будет использоваться для создания VPN:

interface set ether1 name=”WAN”

ip address add address=192.168.1.210/24 network=192.168.1.0 netmask=255.255.255.0 interface=WAN

2. Теперь настроим интерфейс ether2: дадим ему адрес 192.168.41.1.24 и имя LAN – это будет шлюз по умолчанию для внутренней сети.

interface set ether2 name=”LAN”

ip address add address=192.168.41.1/24 network=192.168.41.0 netmask=255.255.255.0 interface=LAN

3. Так же настроим DHCP-сервер и создадим пул адресов для внутренней сети и установим DNS:

ip pool add name=internalpool ranges=192.168.41.2-192.168.41.200 ip dhcp-server add address-pool=internalpool disabled=no interface=LAN lease-time=1d name=LANDHCP ip dhcp-server network add address=192.168.41.0/24 dns-server=1.1.1.1 ip dns set servers=1.1.1.1,8.8.8.8

4. Далее добавим маршрут по умолчанию для того, чтобы трафик из внутренней сети мог выходить в интернет. Для этого создадим статический маршрут, где укажем, что весь трафик должен пересылаться на маршрут по умолчанию для внешней сети. И настроим правила NAT.

ip route add dst-address=0.0.0.0/0 gateway=192.168.1.1 ip firewall nat add chain=srcnat out-interface=WAN action=masquerade

Настройка VPN IPsec site-to-site на Mikrotik с IP за NAT

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

1. Создадим IPsec профиль под именем TSTVPN, где укажем параметры шифрования, которое будет применяться:

ip ipsec profile add dh-group=modp2046 enc-algorithm=aes-256 hash-alogrithm=sha256 lifetime=8h name=TSTVPN nat-traversal=yes

В нашем случае мы будем использовать группа Диффи-Хеллмана 14(она же modp2048), aes-256 как алгоритм шифрования. Для хэширования будет применяться алгоритм sha256.

Параметр nat-traversal указан как yes, так как наш MicroTik находится за NAT. В противном случае рекомендуем перевести этот  параметр в no.

2. Теперь создадим IPsec Proposal с названием TSTVPN

ip ipsec proposal add auth-algorithm=sha256 enc-algorithms=aes-256-cbc,aes-256-crt,aes-256-gcm lifetime=1h name=TSTVPN pfs-group=modp2048

Указываем алгоритм аутентификации — sha256.

В качестве алгоритмов для шифрования укажем aes-256-cbc, aes-256-crt, aes-256-gcm. PFS группу выберем равную параметру dh-group из IPsec профиля: modp2048.

3. Создаем IPSec-peer с названием TSTPEER и привяжем к нему ранее созданый профиль TSTVPN:

ip ipsec peer add address=185.17.66.222 exchange-mode=ike2 local-address=192.168.1.210 name=TSTVPN profile=TSTVPN

В настройках peer мы указываем в качестве удаленного адреса внешний ip NSX Edge (185.17.66.222), в качестве локального адреса укажем 192.168.1.210, в параметр exchange-mode введем значение ike2 и выберем профиль TSTVPN.

4. Теперь создадим IPsec Identity, где укажем секретный ключ, и привяжем его к созданному peer.

ip ipsec identity add peer=TSTVPN secret=”KVMzqjoU4fCnneJNikXs”

В качестве секретного ключа будем использовать KVMzqjoU4fCnneJNikXs

5. Теперь создадим политику TSTVPN, привяжем её к ранее созданным peer и proposal, и в которой укажем связанность между локальной подсетью и удаленной внутренней подсетью:

ip ipsec policy add dst-address=10.10.10.0/24 peer=TSTVPN sa-dst-address=185.17.66.222 sa-src-address=192.168.1.210 src-address=192.168.41.0/24 tunnel=yes

В этой политике мы указываем ряд параметров:

  1. dst-address=10.10.10.0/24 – удаленная локальная подсеть
  2. peer=TSTVPN – созданный peer
  3. sa-dst-address=185.17.66.222 – удаленный узел для подключения (внешний адрес NSX Edge)
  4. sa-src-address=192.168.1.210 – адрес роутера на интерфейсе WAN
  5. src-address=192.168.41.0/24 – локальная подсеть

Примечание: Если необходимо соединить несколько локальных сетей, то для каждой нужно создавать свою политику, а поле level указывать как unique. В нашем случае level будет require.

6. Пропишем правила firewall:

1. разрешаем подключение по 500 и 4500 udp портам:

ip firewall filter add action=accept chain=input dst-port=500,4500 in-interface=WAN protocol=udp

2. разрешаем established и related соединения:

ip firewall filter add action=accept chain=input connection-state=established,related in-interface=WAN

ip firewall filter add action-accept chain=forward connection-state=established,related in-interface=WAN

3. Разрешаем IPsec-ESP и  AH

ip firewall filter add action=accept chain=input in-interface=WAN protocol=ipsec-esp

ip firewall filter add action=accept chain=input in-interface=WAN protocol=ipsec-ah

4. Разрешаем icmp трафик для удобства проверки с помощью ICMP запросов.

ip firewall filter add action=accept chain=input in-interface=WAN protocol=icmp

5. Добавим правила, разрешающие трафик между сайтами VPN в обход NAT

ip firewall raw add chain=prerouting dst-address=192.168.41.0/24 src-address=10.10.10.0/24 place-before=0

ip firewall nat add chain=srcnat dst-address=10.10.10.0/24 src-address=192.168.41.0/24 place-before=0

6. Так же добавим два правила Firewall для пропуска трафика между удаленными подсетями:

ip firewall filter chain=forward action=accept src-address=192.168.41.0/24 dst-address=10.10.10.0/24 out-interface=WAN

Второе правило создается аналогично с одним лишь отличием в Src.Address и Dst.Address - их нужно будет поменять местами.

У этих двух правил важно указать place-before=0, чтобы они были сверху таблицы.

С настройками на MikroTik  закончено и переходим на NSX Edge и настроим  IPSec VPN на его стороне.

Настройка NSX Edge для подключения VPN

Переходим на Edge во вкладку VPN → IPSec VPN sites и создадим новый сайт.

И укажем его параметры:

  • Name – имя соединения, может быть произовльнм
  • local id – идентификатор узла, указываем внешний ip Edge
  • local endpoint – локальная точка подключения — ip, к которому будет производиться подключение, указываем так же внешний ip Edge
  • local subnets – локальные, подсети, к которым мы хотим подключаться по VPN, указываем необходимые (в нашем случае — 10.10.10.0.24). если надо указать несколько сетей, то пишем их через запятую без пробела.
  • Peer id – идентификатор удаленной точки. Указываем ip адрес на MicroTik, с интерфейса, подключенного к интернету, то есть, 192.168.1.210.
  • Peer endpoint – удаленная точка подключения — указываем внешний ip адрес MicroTik: 178.46.152.153.
  • Pre-shared key – указываем тот, что и на MicroTik
  • Diffie-Helman group – выбираем DH14 (она же modp2048, идентично и на роутере)
  • Digest Algorithm – выбираем SHA-256
  • IKE Option – указываем IKEv2, аналогично роутеру
  • Session Type – выбираем Policy Based Session

 

На этом настройка  VPN сайта завершена. Нажимаем кнопку Keep и сохраняем изменения.

Проверяем, что все работает. Переходим во вкладку  Statistics, затем в IPSec VPN и видим, что и у VPN сайта, и у VPN  туннеля в поле Status стоит галочка. Это означает, что все настроено правильно и VPN туннель успешно поднят.

Теперь перейдем в настройки firewall и создадим правило для пропуска трафика между удаленными подсетями

Теперь настройка IPSec  VPN завершена, и проведем последнюю проверку. Перейдем на тестовый компьютер, расположенный во внутренней сети MicroTik и проверим доступность подсети 10.10.10.0/24, расположенную за Edge

Связанность есть, а это говорит о том, что всё настроено правильно, и теперь мы имеем защищенный VPN туннель между двумя удаленными подсетями.