avatar Прямые руки Использование DDNS в MikroTik на примере changeip.com

Мне, иногда, необходимо подключаться домой, т.к. у меня теперь роутер MikroTik RouterBoard RB951G-2HnD о настройке которого я писал тут, то я решил использовать его по полной, понятно что TeamViewer никто не отменял, но лично мне, как человеку админившиму Windows удобнее использовать RDP (темболее что Microsoft его довольно неплохо допилили в Windows 8/2012, можно даже играть в игры), в общем, мне необходимо использовать VPN, сам VPN сервер был поднят на роутере, но проблема в том что мне его необходимо еще найти в интернет, скидывать куда-то внешний IP конечно можно, но это не спортивно, необходимо использовать DNS имя, его и запомнить легче и куда-то залезать не нужно, DNS запись будет всегда, а ее актуальность, будет поддерживаться автоматически.
Принимая во внимание то что NO-IP уже давно «скурвислся» и теперь отменил все бесплатные аккаунты, то сам бог велел использовать другого DDNS провайдера, лично мне, уже очень давно, нравится cahngeip.com, когда-то давно я им пользовался, когда сервер с этим сайтом стоял у меня дома под столом, то домен был прикручен к нему, отзывы только положительные.
Короче, чтобы обновлять IP в DNS записях, необходим скрипт, сначала я начал писать свой, но оказалось что «все придумано до нас» и уже есть готовая наработка, которую я и взял.

:local interfacename ("eth-name");
:local ddns ("domain.of.cahngeip.com");
:local login ("user");
:local password ("password");

:local CurrentDynDNSIP [:resolve $ddns]
:local TMPDynDNSIP [/ip address get [/ip address find interface=$interfacename] address]
:local RealDynDNSIP [:pick $TMPDynDNSIP 0 ([:len $TMPDynDNSIP]-3)]
:if ($CurrentDynDNSIP!=$RealDynDNSIP) do={/tool dns-update name=$ddns address=$RealDynDNSIP key-name=$login key=$password}


Где:
eth-name имя интерфейса которым мы подключаемся к провайдеру (если провайдер beeline то указываем имя L2TP подключения)
domain.of.cahngeip.com указываем имя домена, по которому будет доступен наш маршрутизатор
user логин пользователя на сайте changeip.com
password пароль

Остается только создать задание, которое будет запускать этот скрипт, чтобы он обновлял DNS запись
переходим в Winbox -> System -> Sheduler и создаем задание:


Все что менялось подчеркнуто красным
Зададим имя задания send_my_ip
Укажем интервал запуска, раз в 5 мин хотя можно и 1 раз в минуту.
Вставляем скрипт в поле On Event
Теперь наш скрипт будет запускаться раз в 5 мин и обновлять IP в DNS записи и мы сможем подключиться к роутеру по имени, в случае изменения IP, недоступность системы составляет не более 5 мин.

Логика работы скрипта: Скрипт получает IP от того соединения которое вы указали (у меня это VPN соединение), затем отрезает 3 последних символа, /32 это маска подсети, далее выполняет dns запрос аналог nslookup и получает значение IP вашей записи, если ваш текущий IP адрес отличается от IP который был записан в ДНС, то производится подключение к changeip.com и обновление записи, если расхождений нет, то никаких действий не производится, фактически, скрипт можно запускать раз в минуту без опасений что вас забанит changeip.com.

Если у вас есть домен, то можно прикрутить и его, заплатив денег, тем более что сумма не большая, но а если эта сумма для вас велика, то можно и бесплатно создав в вашем домене запись CNAME чтобы
ваш_домен.tld CNAME домен_который_вы_зарегили_у_changeip.com

т.е. ваш домен указывает на домен который принадлежит changeip, а его запись будет будет обновляться роутером каждые несколько минут.
Что еще могу от себя порекомендовать, в настройках домена changeip.com уменьшать ttl вашей записи, по умолчанию там стоит 30 сек, я уменьшил до 3, сделано это для только чтобы, вы, обновив IP вашей записи, если записи будут жить в закешированном виде 30 сек, то вы не сможете подключиться к новому адресу, а так срок жизни записи составляет 3 сек, то она быстрее будет обновляться на кеширующих DNS серверах, все проведено на скриншоте, свой IP я закрасил, чтобы не мешал, ну и не забываем сохранить сделанные изменения.



Скрипт взят с сайта mikrotik.axiom-pro.ru/scripts/ddnschangeip.php
На этом все, в случае возникновения вопросов прошу в комментарии.
Все что касается оборудования Mikrotik можно посмотреть в на этой странице

5 комментариев

avatar
А почему не использовать нативный DDNS?

/ip cloud
avatar
Я о нем не знал.
век живи, век учись…
avatar
Настраивается в один клик.
Из недостатков — имя выдается автоматически в домене XXXX.sn.mynetname.net и его нельзя изменить.

Как best practie, чтобы не запоминать его, можно сделать CNAME запись в своем домене.
Например: home.xxx.ru CNAME XXXX.sn.mynetname.net
avatar
ну или прикрутить changeip и выбрать там имя которое не занято :)
комментарий был удален
Есть что добавить? Регистрируйся и оставляй комментарии!