Pull to refresh

Настройка 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 для сайта и разнообразные сервисы которые переносим и меняются в зависимости от обстоятельства бизнеса.

Буду рад, если кому-либо это решение поможет в облегчении…
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.