..:: Mirosław Skonieczny - Blog ::..
Dyndns.org na urzÄ…dzeniu Mikrotik RouterOs - Skrypt - Script

Aktualnie rozpoczÄ…Å‚em zabawÄ™ z urzÄ…dzeniami Mikrotik.

Jedną z funkcji jaka okazała się niezbędna dla mnie, było aktualizowanie dynamicznego adresu ip z połączenia PPPoE - tzw. DDNS. Jako, że przyzwyczajony byłem do usług dyndns.org, a skrypt, który znalazłem na forum.mikrotik.com nie aktualizował prawidłowo adresu przy kilku działających WAN'ach, postanowiłem napisać coś swojego (wzorując się na poprzednikach)

#_______________________________________
:global ddnsuser "user"
:global ddnspass "pass"
:global ddnshost "host"
:global ddnsinterface "PPPoE"
#_______________________________________

:global ddnsip [ /ip address get [/ip address find interface=$ddnsinterface] address ]
:set ddnsip [:pick $ddnsip 0 [:find $ddnsip /]]
:global ddnslastip

:if ([:len [/interface find name=$ddnsinterface]] = 0 ) do={ :log info ("DDNS: NO INT " . $ddnsinterface) }
:if ([ :typeof $ddnslastip ] = "nothing" ) do={ :set ddnslastip 0.0.0.0 }
:if ([ :typeof $ddnsip ] = "nothing" ) do={
:log info ("DDNS: NO IP " . $ddnsinterface )
} else={
:if ($ddnsip != $ddnslastip) do={
:log info ("DDNS: UPD " . $ddnsip)
:local str "http://members.dyndns.org/nic/update?hostname=$ddnshost&myip=$ddnsip"
/tool fetch url=$str user=$ddnsuser password=$ddnspass dst-path=$ddnshost
:delay 1
/file remove "$ddnshost"
:set ddnslastip $ddnsip
} else={
:log info "DDNS: NCHG"
}
}

Zalecam pobranie skryptu w formie pliku txt dyndns.org.txt

Kopiujemy treść skrytpu do edytora skryptów w winbox (SYSTEM->SCRIPTS), uzupełniamy swoje dane logowania do serwisu, hosta oraz nazwę interfejsu i zapisujemy pod nazwą dyndns.org. Następnie dodajemy w (SYSTEM->SCHEDULER) wpis uruchamiajacy skrypt co 5 minut.

Po uruchomieniu skryptu powinniśmy w LOG znaleźć np:
DDNS: UPD 83.123.12.34
fetch: file "twojhost" created.

Natomiast, jeśli adres nie będzie się zmieniał, co 5 minut będzie pojawiał się wpis:
DDNS: NCHG

Aby wyłączyć tę funkcję należy zmienić linię zawierającą:
:log info "DDNS: NCHG"
na
# :log info "DDNS: NCHG"

Opis działania protokołu dyndns.org