(Оригинал: по русски / Original: in Russian)
Мой провайдер выделяет динамический реальный IP. Несколько лет я использовал учётную запись на DDNS-сервисе Two-DNS.de (услуга предоставляется для пользователей оборудования например Draytek и Synology). Сервис бесплатен и не ограничен по времени (пока оборудование регулярно использует учётную запись).
Я вынужден был сменить свой маршрутизатор (Draytek) из-за его выхода из строя. Мой новый маршрутизатор - RB2011UAS-2HnD-IN (OS v.5.21).
Я не нашёл готового скрипта для этого сервиса. Однако компиляция сведений имеющихся в руководстве и на некоторых линукс-ориентированных конфах дала следующий результат, который я и хочу предложить.
(Autotranslate to English)
My ISP allocates a dynamic real IP. For some years I have used the account for DDNS-service Two-DNS.de (service available to users of equipment such as Draytek and Synology). Service is free and not limited in time (as long as equipment is regularly uses the account).
I had to change my router (Draytek) because of its failure. My new router - RB2011UAS-2HnD-IN (OS v.5.21).
I have not found a ready script for this service. However, the compilation of the information available in the manual and on some Linux-specific boards gave the following result, which I want to offer.
# set DDNS variables: UserName; Password; HostName
:local ddnsuser "ddns_account_username"
:local ddnspass "ddns_account_password"
:local ddnshost "ddns_registered_hostname"
# define WAN-interface (copy "name" from "Interfaces" section)
:local webinterface "your_WAN-interface_name"
# adjust IP adresses: from DDNS-service & Local (from interface)
:local ddnsip [:resolve $ddnshost]
:local localip [ /ip address get [/ip address find interface=$webinterface ] address ]
:local localip [:pick $localip 0 [:find $localip "/"]]
:if ($localip != $ddnsip) do={
:log info ("DDNS: ddns IP: $ddnsip.")
:log info ("DDNS: local IP: $localip.")
:log info "DDNS: ddns update now!"
/tool fetch keep-result=no user="$ddnsuser" password="$ddnspass" url="http://update.two-dns.de/nic/update\?hostname=$ddnshost"
:log info ("DDNS: Check ddns IP...")
/tool fetch url="http://checkip.two-dns.de/" dst-path="/ddns.checkip.html"
delay 1
:local ddnsip [/file get ddns.checkip.html contents]
:local ddnsip [:pick $ddnsip ([:find $ddnsip ": " -1] + 2) [:find $ddnsip "</body>" -1]]
:if ($localip = $ddnsip) do={
:log info ("DDNS: ddns IP: $ddnsip.")
:log info ("DDNS: Updated Successfully!.")
} else={
:log info ("DDNS: ddns IP: $ddnsip.")
:log info ("DDNS: Updat FAILED!")
}
} else={
# :log info "DDNS: NO ddns update needed!"
}
Oct, 30, 2012 - update: bugfix, 100% work.