—
Обсуждение тут
—
Добавим в роутер MikroTik скрипт, который будет обновлять IP адрес для нашего доменного имени на сервисе No-IP.
Подключаемся к MikroTik с помощью утилиты WinBox.
![Подключаемся к роутеру MikroTik с помощью WinBox](https://www.technotrade.com.ua/userfiles/images/mikrotik_and_no-ip/10_winbox_connect.png)
Открываем меню System — Scripts и нажимаем кнопку Add (красный крестик), чтобы создать новый скрипт.
![MikroTik: Создаем скрипт](https://www.technotrade.com.ua/userfiles/images/mikrotik_and_no-ip/11_add_script.png)
В поле Name: указываем имя скрипта, например noip.
Оставляем права для скрипта : write, test, read.
![MikroTik: Настраиваем параметры скрипта](https://www.technotrade.com.ua/userfiles/images/mikrotik_and_no-ip/12_script.png)
В поле 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: Список скриптов](https://www.technotrade.com.ua/userfiles/images/mikrotik_and_no-ip/13_script_list.png)
Далее необходимо настроить планировщик (Sheduler), который будет выполнять скрипт с определенной периодичностью.
Открываем меню System — Sheduler и нажимаем кнопку Add (красный крестик), чтобы добавить новую задачу.
![MikroTik: Добавить задание в планировщик](https://www.technotrade.com.ua/userfiles/images/mikrotik_and_no-ip/14_sheduler.png)
В открывшемся окне настраиваем параметры задачи:
- в поле Name указываем имя задачи, например noip;
- в поле Interval указываем с какой периодичностью будет выполняться скрипт. Мы указали интервал 5 минут. Для первичной отладки лучше указать интервал 30 секунд;
- в поле On Event указываем, какую команду необходимо выполнить при запуске задачи. Мы указали команду /system script run noip, которая запускает скрипт noip;
- выбираем права для задачи: write, test, read;
- нажимаем кнопку OK для сохранения задачи.
![MikroTik: Настройка параметров задачи планировщика](https://www.technotrade.com.ua/userfiles/images/mikrotik_and_no-ip/15_add_shedule.png)
После этого скрипт начнет свою работу.
Проверка работы скрипта с сервисом No-IP
Открываем меню NewTerminal и вводим команду system script environment print.
В консоли в столбце VALUE отобразится ваш IP адрес.
![MikroTik: Отобразить IP адрес для No-IP](https://www.technotrade.com.ua/userfiles/images/mikrotik_and_no-ip/16_print_ip.png)