Настройка IPSec VPN (Site to Site) на Mikrotik

Объединение офисов в единую сеть при помощи IPSec VPN на оборудовании MikroTik.

Два удаленных офисных маршрутизатора MikroTik соединены с Интернетом, и пользователи в офисах выходят в интернет через NAT. У каждого офиса есть своя собственная локальная подсеть, 192.168.1.0/24 для первого офиса (Office1) и 192.168.2.0/24 для второго офиса (Office2). Задача: соединить два офиса через безопасный туннель через сеть Internet при использовании оборудования MikroTik. В данном случае используется IPSec VPN (Site to Site)

1. Настройка подключения к интернет
На обоих маршрутизаторах ether1 интерфейс используется как WAN порт, и ether2 используется, что бы подключиться к локальной сети. Также правила NAT установлен параметр masquerade для трансляции адресов локальной сети в глобальный адрес ISP провайдера.

Маршрутизатор MikroTik Office1:
/ip address
add address=1.1.1.2/30 interface=ether1
add address=192.168.1.1/24 interface=ether2
/ip route
add gateway=1.1.1.1
/ip firewall nat
add chain=srcnat out-interface=ether1 action=masquerade

Маршрутизатор MikroTik Office2:
/ip address
add address=2.2.2.2/30 interface=ether1
add address=192.168.2.1/24 interface=ether2
/ip route
add gateway=2.2.2.1
/ip firewall nat
add chain=srcnat out-interface=ether1 action=masquerade

2. Настройки IPSec peer
Добавляем настройки соседа, с которым будет строится VPN. Настраиваем адрес соседа и порт,а также pre-shared-key ключ. Другие параметры без изменений.

Маршрутизатор MikroTik Office1:
/ip ipsec peer
add address=2.2.2.2/32:500 auth-method=pre-shared-key secret="test"

Маршрутизатор MikroTik Office2:
/ip ipsec peer
add address=1.1.1.2/32:500 auth-method=pre-shared-key secret="test"

3. Настройки политик
Проверим, что бы были одинаковые настройки шифрования и аутентификации на обоих маршрутизаторах MikroTik.
[admin@MikroTik] /ip ipsec proposal> print

Настраиваем политики VPN IPSec на MikroTik.

Зашифруем трафик из сети 192.168.1.0/24 к 192.168.2.0/24 и наоборот.

Маршрутизатор Office1:
/ip ipsec policy
add src-address=192.168.1.0/24:any dst-address=192.168.2.0/24:any sa-src-address=1.1.1.2 sa-dst-address=2.2.2.2 tunnel=yes action=encrypt proposal=default

Маршрутизатор Office2:
/ip ipsec policy
add src-address=192.168.2.0/24:any dst-address=192.168.1.0/24:any sa-src-address=2.2.2.2 sa-dst-address=1.1.1.2 tunnel=yes action=encrypt proposal=default

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

4. Настройка NAT.
Если на данном шаге установить туннель IPSec, он не будет работать, пакеты будут отброшены. Это вызвано тем, что у обоих маршрутизаторов есть правила NAT, которые изменяют исходный адрес после того, как пакет зашифрован. Удаленный маршрутизатор MikroTik получает зашифрованный пакет, но не способен дешифровать его, потому что исходный адрес не соответствует политике.

Что бы устранить данную проблему, создадим правило обхода NAT.

Маршрутизатор Office1:
/ip firewall nat
add chain=srcnat action=accept place-before=0 src-address=192.168.1.0/24 dst-address=192.168.2.0/24

Маршрутизатор Office2:
/ip firewall nat
add chain=srcnat action=accept place-before=0 src-address=192.168.2.0/24 dst-address=192.168.1.0/24

Данное правило необходимо поместить первым при настройке NAT на MikroTik.

Евгений

Добрый день, Дмитрий! Спасибо за хорошую и подробную статью. Скоро предстоит мне настройка как раз такого случая, как спрашивал Антон, т.е. нескольких удалённых офисов, а если точнее, то 24. Как я понял надо будет создать 24 тоннеля, а сколько должно быть правил для NAT?! Тоже 24 или можно объединить для "центрального" офиса подчинённые по маске? т.е. правило для центрального такое
/ip firewall nat
add chain=srcnat action=accept place-before=0 src-address=172.33.16.0/16 dst-address=172.33.18.0/16

для офиса 1

/ip firewall nat
add chain=srcnat action=accept place-before=0 src-address=172.33.18.0/26 dst-address=172.33.16.0/16

для офиса 2

/ip firewall nat
add chain=srcnat action=accept place-before=0 src-address=172.33.18.64/26 dst-address=172.33.16.0/16

и т.д. Подчинённые не должны общаться между собой.

комментировать
Дмитрий

Настроил, в remote peers, записи появляются, а что в файрволе прописать? не подскажите?

комментировать
Дмитрий

Я прописал с двух сторон
/ip firewall filter
add chain=input action=accept protocol=udp port=1701,500,4500
add chain=input action=accept protocol=ipsec-esp
но не могу подключится в удаленный офис

Антон

Если есть необходимость объединить 5 офисов на оборудовании MikroTik, что изменится в конфигурации?

комментировать
Андрей Татарников

Ничего. Просто будет 5 разных туннелей. Тут вано другое! Общаться НАПРЯМУЮ могут только офисы соединенные туннелями ДРУГ С ДРУГОМ (!!!) т.е. если надо чтобы "все со всеми" то будет полносвязная топология. Обычно делается по-другому: все сетевые сервисы размещаются в условно"центральном" офисе и до него "стелятся" туннели.

Артем

Скажите, добавляемые шлюзы 1.1.1.1 и 2.2.2.1 в данном примере это что?

комментировать
Андрей Татарников

Это адреса шлюзов выданные вашим Интернет-провайдером

Ivor

Вот делаю совершенно идентичную картину, и не пингуют два микротика друг друга, хоть убейся. Что я могу делать не так?

комментировать
Андрей Татарников

Посмотрите во вкладке IP-IP Sec-Remote Peers есть записи?
Если есть - туннель сформировался, проверяйте правила фаерволла; если нет - проверяйте параметры туннеля где то ошибку допустили.

Сергей

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

alexl

add address=1.1.1.2/30 interface=ether1
add address=192.168.1.1/24 interface=ether2
/ip route
add gateway=1.1.1.1
Адрес интерфейса 1.1.1.2, добавляемый шлюз 1.1.1.1. Исправьте, пожалуйста.

комментировать
Андрей Татарников

Тут как раз правильно)
Не правильно дальше:
Маршрутизатор MikroTik Office2:
/ip address
add address=2.2.2.2/30 interface=ether1
add address=192.168.2.1/24 interface=ether2
/ip route
add gateway=2.2.2.2

Должно быть:
add gateway=2.2.2.1