Узел IPSec с динамическим IP (MIKROTIK)

У многих возникает задача подцепить к офисной сети точку с динамическим IP (ну скажем ваша домашняя сеть). Итак все настройки сделаны осталось при смене внешнего IP с динамической стороны прописать его в IPSec политиках с обоих сторон.

Сразу оговорюсь: использование IPSec за NAT – дело не благодарное. Поэтому если ваш провайдер поставил вас за NAT лучше используйте PPTP с динамической точки в сторону статической (с белым IP).

Сделать базовую настройку объединения офисов можно при помощи мастера. Выясните текущий IP с динамической стороны и добейтесь работы VPN/IPSec с действующим IP.

Чтобы иметь сведения об IP динамической точки включаем функцию IP / Cloud:

QIP Shot - Screen 133

В Cloud-DNS abcdef.sn.mynetname.net микротик динамической точки будет публиковать свой внешний IP при его смене.

1. Динамическая точка

Основная задача здесь следить за изменением своего публичного IP (который мы возьмем с внешнего интерфейса) и менять локальные IPSec политики.

Добавляем комментарий к IPSec политике (IP / IPSec / Policy) “MAIN_OFFICE”, чтобы из скрипта иметь возможность менять нужную политику, т.к. политик может быть несколько.

QIP Shot - Screen 134

У локальной политики, с комментарием MAIN_OFFICE, необходимо, при смене публичного IP, менять параметр sa-src-address. Для этого добавляем скрипт (System /Scripts):

,где <имя_wan_интерфейса> – замените на имя интерфейса (PPPoE, PPTP и т.д.) вашего интернет-подключения на динамической точке.

Добавьте этот скрипт в System / Sheduler, чтобы он выполнялся каждые, например, 5 секунд.

Скрипт работает так:

  1. Получаем IP адрес ($localIP) с WAN интерфейса в формате a.b.c.d/32;
  2. Убираем “/32” из $localIP;
  3. Получаем атрибут sa-src-address у IPSec политики с комментарием MAIN_OFFICE в переменную $ipsecIP;
  4. Если $localIP отличается $ipsecIP, то устанавливаем sa-src-address, у IPSec политики с комментарием MAIN_OFFICE, равным $localIP;

2. Статическая точка (с белым IP)

Здесь необходимо контролировать домен abcdef.sn.mynetname.net и при изменении менять фильтр Firewall (разрешающий входящие подключения с динамической точки), политики IPSec и peer связанные с этим подключением.

Чтобы идентифицировать правило Firewall, политику IPSec и IPSec Peer необходимо добавить к ним одинаковый комментарий, например, DYN_OFFICE;

Далее создаем скрипт:

, где в переменной $ipsecComment содержится комментарий для идентификации записей связанных с удаленной точкой, $pointDNS – Cloud-DNS имя удаленной точки.

Скрипт работает так:

  1.  Разрешаем в $pointIP имя динамической точки abcdef.sn.mynetname.net;
  2. Добавляем к $pointIP суффикс “/32” и сохраняем в переменную $pointIPscope. Именно в таком формате задается атрибут address у IPSec Peer;
  3. Получаем значение атрибута address у IPSec Peer с комментарием DYN_OFFICE в переменную $ipsecIP;
  4. Если $ipsecIP отличается от $pointIPscope то:
    1. Устанавливаем атрибут src-address для правила Firewall с комментарием DYN_OFFICE равным  $pointIP;
    2. Устанавливаем атрибут sa-dst-address у IPSec политики с комментарием DYN_OFFICE равным $pointIP;
    3. Устанавливаем атрибут address у IPSec Peer с комментарием DYN_OFFICE равным $pointIPscope;

Добавляем скрипт в System / Sheduler с интервалом, например, 10 секунд (учтите TTL Cloud-DNS).

Заключение

При смене IP понадобится некоторое время для восстановления связи, поэтому, если необходимо более оперативное восстановление лучше воспользоваться вариантом, например, с PPTP.

В статье использовалась RouterOS версии 6.22.