Настройка Mikrotik в связке с DNS для обеспечения доступности сервисов

Привет, Хабр!

Данная статья не претендует на уникальность, возможно где-то уже реализовано. Но однако понадобилось. Итак, имеем, роутер Mikrotik RB3011 и два канала разных операторов с «белыми» IP-адресами, свой домен и сервисы которые должны быть доступны извне сотрудникам. Само наше оборудование запитано хорошо, АКБ +дизель. Но в силу того, что головной офис расположен в городе Махачкала, а с электричеством у нас иногда бывает ахтунг, то может оказаться в оффлайне один из коммутаторов оператора и соответственно канал связи!

А все сервисы связанные с этим каналом и «белым» IP-адресом будут не доступны для удаленных сотрудников, решено было завести второго, а еще и третьего оператора и настроить DNS.
/
DNS-хостинг приобрели на nic.ru (услуга всего-то стоит 600 руб. в год. ), завели А-записи. Можно возразить, что есть куча бесплатных DNS, типа яндекс, но у того же яндекса не возможно установить ttl меньше 900 сек, а в данном случае нужно меньше. Если есть бесплатный DNS-хостинг с API и гибким ttl, прошу подсказать…

1. Получаем логин и пароль для управлени по API в разделе в Услугах DNS-Хостинг, в разделе Динамический DNS и нажимаем получить логин и пароль



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

Смена значения для записи, например VPN.MYDOMAIN.COM":

/tool fetch url="https://<b>ЛОГИН</b>:<b>ПАРОЛЬ</b>@api.nic.ru/dyndns/update\?hostname=vpn.mydoain.com" mode=https

Далее не стали особо заморачивать и сделали родным микротиковским NetWatch, приблизительно так

Обработка при падении канала основного провайдера:

/ip route disable  [find comment="ISP1"]
/ip route set distance=1  [find comment="ISP2"]
/system script run NICRU-MYDOMAIN-VPN

Логика очень простая, каждые 15 сек. пингуется хост 8.8.8.8 через канала основного оператора с указанием таймаута 1000 мс., соответственно при его недоступности в роутинг таблице ищется маршрут на основного провайдера с комментом ISP1 и переводит его в статус — disabled. А маршрут резервного, изменяется с указанием administrativ distance на 1. Далее запускается наш скрипт, который по API меняет значение A-записи в домене!

При этом, чтоб не ошибиться с оценкой о состоянии доступности 8.8.8.8 через основного провайдера, небходимо в фаерволе создать правило запрещающее через резервного оператора пакеты на 8.8.8.8 или банально написать маршрут на 8.8.8.8 через основного оператора, как мы и сделали.

Ну вроде как и все, у нас это работает без проблем.

Конечно, можете сказать что у микротика есть своя DDNS, но нас это не устраивает. SSL для сайта и разнообразные сервисы которые переносим и меняются в зависимости от обстоятельства бизнеса.

Буду рад, если кому-либо это решение поможет в облегчении…
Метки:
mikrotik, ddns

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.