Всем привет! Как многие из вас знают, DynDNS прекратит предоставлять бесплатные услуги динамического DNS через месяц. В связи с этим я решил использовать один из альтернативных бесплатных сервисов — DuckDNS () и решил поделиться своим скриптом.
Этот скрипт работает иначе, чем почти все другие скрипты обновления динамического DNS для Mikrotik, которые я находил в интернете. Обычно скрипт запускается через определённые интервалы времени. А мой скрипт работает постоянно, следит за WAN-подключением и обнаруживает изменения IP-адреса. Никак не утверждаю, что это лучше, просто так сделал я.
Поэтому при настройке в планировщике Mikrotik укажите запуск только при старте устройства. Всё, что нужно поменять в скрипте ниже — это “exampledomain” и токен.
Надеюсь, кому-то пригодится.
Nev
/interface pppoe-client {
:global ExternalIP
:local clientip
:local clientstatus
:while (1 < 2) do={
monitor pppoe-out1 once do={
:set clientip $“local-address”
:set clientstatus $status
}
:if ($clientstatus=“connected” and $ExternalIP!=$clientip) do={
:delay 1
:log info “UpdateDuckDNS: обнаружено изменение IP — с $ExternalIP на $clientip. Обновляю Duck DNS.”
/tool fetch mode=https url=“” dst-path=duckdns.txt;
:delay 1
:local result [/file get duckdns.txt contents]
:log info “UpdateDuckDNS: результат обновления Duck DNS: $result”
:set ExternalIP $clientip
}
:delay 5
}
}
Этот скрипт работает иначе, чем почти все другие скрипты обновления динамического DNS для Mikrotik, которые я находил в интернете. Обычно скрипт запускается через определённые интервалы времени. А мой скрипт работает постоянно, следит за WAN-подключением и обнаруживает изменения IP-адреса. Никак не утверждаю, что это лучше, просто так сделал я.
Поэтому при настройке в планировщике Mikrotik укажите запуск только при старте устройства. Всё, что нужно поменять в скрипте ниже — это “exampledomain” и токен.
Надеюсь, кому-то пригодится.
Nev
/interface pppoe-client {
:global ExternalIP
:local clientip
:local clientstatus
:while (1 < 2) do={
monitor pppoe-out1 once do={
:set clientip $“local-address”
:set clientstatus $status
}
:if ($clientstatus=“connected” and $ExternalIP!=$clientip) do={
:delay 1
:log info “UpdateDuckDNS: обнаружено изменение IP — с $ExternalIP на $clientip. Обновляю Duck DNS.”
/tool fetch mode=https url=“” dst-path=duckdns.txt;
:delay 1
:local result [/file get duckdns.txt contents]
:log info “UpdateDuckDNS: результат обновления Duck DNS: $result”
:set ExternalIP $clientip
}
:delay 5
}
}
