Использование MikroTik с сервисом No-IP

  Mikrotik, Network

Добавим в роутер MikroTik скрипт, который будет обновлять IP адрес для нашего доменного имени на сервисе No-IP.

Подключаемся к MikroTik с помощью утилиты WinBox.

Подключаемся к роутеру MikroTik с помощью WinBox

Открываем меню System – Scripts и нажимаем кнопку Add (красный крестик), чтобы создать новый скрипт.

MikroTik: Создаем скрипт

В поле Name: указываем имя скрипта, например noip.
Оставляем права для скрипта : writetestread.

MikroTik: Настраиваем параметры скрипта

В поле Source: вставляем следующий скрипт:# Параметры подключения к NO-IP.com
:local ddnsuser “логин на NO-IP.com
:local ddnspass “пароль на NO-IP.com
:local ddnshostname “ИМЯ.no-ip.org” 
:local ddnsinterface “ИМЯ ИНТЕРФЕЙСА на Mikrotik

# Описание глобальных переменных
:global ddnslastip
:local str
:local ddnsip
:local ip

:if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip "0" }
:local ddnsip [ /ip address get [/ip address find interface=$ddnsinterface ] address ]
:if ([ :typeof $ddnsip ] = nil ) do={
   :log info ("ServiceDNS: No ip address on $ddnsinterface .")
} else={
# Из полученного на интерфейсе IP адреса исключаем маску
   :for i from=( [:len $ddnsip] - 1) to=0 do={ 
      :if ( [:pick $ddnsip $i] = "/") do={ 
       :set ddnsip [:pick $ddnsip 0 $i];
   } 
 }
  :if ($ddnsip != $ddnslastip) do={
    :log info ("ServiceDNS: $ddnshostname -> $ddnsip")
# Отправляем новый IP адрес на сервис No-IP с помощью HTTP запроса
    :local str "/nic/update?hostname=$ddnshostname&myip=$ddnsip"
    /tool fetch url="http://dynupdate.no-ip.com/$str" mode=http user=$ddnsuser password=$ddnspass \ dst-path=("/ServiceDNS.".$ddnshostname)
    :delay 1 
# Сохраняем результаты в лог файлах
    :local str [/file find name="ServiceDNS.$ddnshostname"];
    :log info [/file get $str contents];
    /file remove $str
    :global ddnslastip $ddnsip
  } 
}

Теперь изменим в скрипте параметры подключения к сервису NO-IP. Для этого редактируем следующие переменные:

  • :local ddnsuser “логин на NO-IP.com” – указываем в кавычках логин;
  • :local ddnspass “пароль на NO-IP.com” – указываем в кавычках пароль;
  • :local ddnshostname “ИМЯ.no-ip.org” – в кавычках указываем ваше доменное имя;
  • :local ddnsinterface “ИМЯ ИНТЕРФЕЙСА MikroTik” – в кавычках указываем имя WAN интерфейса. В нашем случае это ether1. Если вы используете PPPoE соединение, то необходимо указать имя PPPoE интерфейса.

Для сохранения скрипта нажимаем кнопку OK.

Теперь в окне Script List появился наш скрипт.

MikroTik: Список скриптов

Далее необходимо настроить планировщик (Sheduler), который будет выполнять скрипт с определенной периодичностью.

Открываем меню System – Sheduler и нажимаем кнопку Add (красный крестик), чтобы добавить новую задачу.

MikroTik: Добавить задание в планировщик

В открывшемся окне настраиваем параметры задачи:

  • в поле Name указываем имя задачи, например noip;
  • в поле Interval указываем с какой периодичностью будет выполняться скрипт. Мы указали интервал 5 минут. Для первичной отладки лучше указать интервал 30 секунд;
  • в поле On Event указываем, какую команду необходимо выполнить при запуске задачи. Мы указали команду /system script run noip, которая запускает скрипт noip;
  • выбираем права для задачи: writetestread;
  • нажимаем кнопку OK для сохранения задачи.
MikroTik: Настройка параметров задачи планировщика

После этого скрипт начнет свою работу.

Проверка работы скрипта с сервисом No-IP

Открываем меню NewTerminal и вводим команду system script environment print.
В консоли в столбце VALUE отобразится ваш IP адрес.

MikroTik: Отобразить IP адрес для No-IP