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
В этой политике мы указываем ряд параметров:
- dst-address=10.10.10.0/24 – удаленная локальная подсеть
- peer=TSTVPN – созданный peer
- sa-dst-address=185.17.66.222 – удаленный узел для подключения (внешний адрес NSX Edge)
- sa-src-address=192.168.1.210 – адрес роутера на интерфейсе WAN
- 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 туннель между двумя удаленными подсетями.