Noip на Mikrotik RB951

Если у вас динамический белый IP-адрес, можно создать доменное имя, которому будет назначаться этот IP.

Динамический IP-адрес — адрес, который назначается автоматически маршрутизатором, непостоянный адрес сетевого интерфейса.

Белый IP-адрес — адрес, который напрямую виден из сети Интернет, не находится за NAT-маршрутизатором и доступен напрямую.

Регистрация на noip

Заходим на http://www.noip.com/, регистрируемся, подтверждаем регистрацию через почту и авторизовываемся
В результате попадаем в личный кабинет
Слева в меню переходим в раздел Dynamic DNS
Нажимаем Add Hostname
В открывшемся окне заполняем hostname и выбираем подходящий домен
Нажимаем Add Hostname

Настройка маршрутизатора

Авторизовываемся через winbox на маршрутизаторе
Заходим в меню System — Scripts
В открывшемся окне нажимаем на «плюсик»
Вводим имя скрипта, например «noip»
Права выставляем read, write и test
Копируем ниже приведенный код:

:local noipuser "LOGIN"
:local noippass "PASSWORD"
:local noiphost "DOMAIN"
:local inetinterface "Intercon"
 
:global previousIP
 
:if ([/interface get $inetinterface value-name=running]) do={
# Get the current IP on the interface
   :local currentIP [/ip address get [find interface="$inetinterface" disabled=no] address]
 
# Strip the net mask off the IP address
   :for i from=( [:len $currentIP] - 1) to=0 do={
       :if ( [:pick $currentIP $i] = "/") do={ 
           :set currentIP [:pick $currentIP 0 $i]
       } 
   }
 
   :if ($currentIP != $previousIP) do={
       :log info "No-IP: Current IP $currentIP is not equal to previous IP, update needed"
       :set previousIP $currentIP
 
# The update URL. Note the "F" is hex for question mark (?). Required since ? is a special character in commands.
       :local url "http://dynupdate.no-ip.com/nic/updateFmyip=$currentIP"
       :local noiphostarray
       :set noiphostarray [:toarray $noiphost]
       :foreach host in=$noiphostarray do={
           :log info "No-IP: Sending update for $host"
           /tool fetch url=($url . "&hostname=$host") user=$noipuser password=$noippass mode=http dst-path=("no-ip_ddns_update-" . $host . ".txt")
           :log info "No-IP: Host $host updated on No-IP with IP $currentIP"
       }
   }  else={
       :log info "No-IP: Previous IP $previousIP is equal to current IP, no update needed"
   }
} else={
   :log info "No-IP: $inetinterface is not currently running, so therefore will not update."
}

В поля

:local noipuser «LOGIN»
:local noippass «PASSWORD»

Подставляем свои учетные данные, которые использовали при регистрации на noip

:local noiphost «DOMAIN» — сюда полное доменное имя, которое создали

:local inetinterface «Intercon» — имя интерфейса. В моем случае подключение к провайдеру осуществляется через pppoe и я обозвал этот интерфейс «Intercon». Посмотреть это можно в меню Interfaces. Например, когда подключение выделенное, настройки сети получаются по протоколу DHCP и кабель от провайдера вставлен в 1-ый порт, название скорей всего будет «ether1».

Нажимаем ОК для сохранения скрипта

Заходим в меню System — Sheduler

В открывшемся окне нажимаем на «плюсик»
В следующем окне вводим название задания — например, noip; выставляем интервал запуска — например, 00:01:00 — раз в минуту; в поле «On Event:» вводим название нашего скрипта — noip. Права оставляем такие же, как у скрипта. И нажимаем ОК для сохранения.

Для проверки можно зайти в личный кабинет и исправить адрес на какой-нибудь 7.7.7.7, подождать около минуты, проконтролировав запуск скрипта, и посмотреть снова в личном кабинете, изменился ли IP на текущий.