Техно

Mikrotik

Mikrotik no-ip, как искать устройство извне

Для реализации сервиса no-ip на роутерах mikrotik нам нужно написать небольшой скрипт.

открываем winbox или через браузер заходим в system script

придумываем название - например ip.
Оставляем права только : writetestread.

 

В поле Source: вставляем следующий скрипт:

#--------------- Change Values in this section to match your setup ------------------

 

# No-IP User account info

:local noipuser "your_no-ip_user"

:local noippass "your_no-ip_pass"

 

# Set the hostname or label of network to be updated.

# Hostnames with spaces are unsupported. Replace the value in the quotations below with your host names.

# To specify multiple hosts, separate them with commas.

:local noiphost "hostname.no-ip.net"

 

# Change to the name of interface that gets the dynamic IP address

:local inetinterface "your_external_interface"

 

#------------------------------------------------------------------------------------

# No more changes need

 

: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 "\3F" is hex for question mark (?). Required since ? is a special character in commands.

       :local url "http://dynupdate.no-ip.com/nic/update\3Fmyip=$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."

}

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

 

 

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

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

 

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

 

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

 

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

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

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

Альтернативный скрипт

##############Script Settings##################

 

:local NOIPUser "no-ip.com LOGIN"

:local NOIPPass "no-ip.com PASSWORD"

:local WANInter "MikroTik Router WAN Interface Name"

 

###############################################

 

:local NOIPDomain "$NOIPUser.no-ip.org"

:local IpCurrent [/ip address get [find interface=$WANInter] address];

:for i from=( [:len $IpCurrent] - 1) to=0 do={ 

  :if ( [:pick $IpCurrent $i] = "/") do={ 

    :local NewIP [:pick $IpCurrent 0 $i];

    :if ([:resolve $NOIPDomain] != $NewIP) do={

      /tool fetch mode=http user=$NOIPUser password=$NOIPPass url="http://dynupdate.no-ip.com/nic/update\3Fhostname=$NOIPDomain&myip=$NewIP" keep-result=no

      :log info "NO-IP Update: $NOIPDomain - $NewIP"

     }

   } 

}

Для альтернативы можно использовать встроенный сервис .sn.mynetname.net который включение галочки из quic setup и вводом пароля подымает впн сервер на устройстве и приконектится к нему извне можно просто зная его mac адрес

 

Необходима помощь специалиста?

Не нашли нужный товар или услугу? Наш менеджер ответит на все Ваши вопросы

+38(095)234-87-07

Наши преимущества

1. Быстрое реагирование

2. Качественный монтаж

3. Гарантийное и послегарантийное обслуживание

Новинки

Лидеры продаж

Производители

Расширяем филиальную сеть