Скрипт DDNS для nic.ru

Тема в разделе "Скрипты", создана пользователем Fil, 30 май 2017.

  1. Fil

    Fil Новый участник

    Доброго времени суток!
    Есть L2TP включение с динамическим IP.
    Есть DNS-хостинг от nic.ru.

    Помогите с скриптом для DDNS.

    Нашел в сети:
    # set DDNS variables: UserName; Password; HostName; WAN-interface
    :local dDNSdomain "your.domain.ru" — Ваш домен
    :local dDNSuser "some_username" — имя пользователя на nic.ru с правом смены ip на ломен
    :local dDNSpass "some_password" — пароль пользователя nic.ru
    :local dDNSInterfaceName "your_WAN_interface" — внешний (WAN) интерфейс микротика
    :local dDNSCurrentIP [:resolve "$dDNSdomain"] — проверка какой IP указан за Вашим доменным именем
    :log info ("DDNS: Check resolve: $dDNSCurrentIP")
    :local LocalIP [ /ip address get [/ip address find interface=$dDNSInterfaceName ] address ] - получение IP на WAN-порту Микротика
    :local LocalIP [:pick $LocalIP 0 [:find $LocalIP "/"]] - приводим IP к необходимому виду

    Далее сравниваем две полученные переменные и при их различие отправляем запрос вида:

    https://api.nic.ru/dyndns/update?hostname=myhost1.test.ru,myhost2.test.ru&myip=192.168.1.1
    на nic.ru


    :if ($LocalIP != $dDNSCurrentIP) do={
    :log info ("DDNS: ddns IP: $dDNSCurrentIP.")
    :log info ("DDNS: local IP: $LocalIP.")
    :log info ("DDNS: ddns update now!")
    /tool fetch url="https://$dDNSuser:$dDNSpass@api.nic.ru/dyndns/update?hostname=$dDNSdomain&myip=$LocalIP"
    Далее проводится проверка корректности обновления DNS.

    :log info ("DDNS: Check ddns IP...")
    /tool fetch url="https://api.nic.ru/dyndns/checkip/" dst-path="/nic.checkip.html"
    delay 1
    :local dDNSCurrentIP [/file get nic.checkip.html contents]
    :local dDNSCurrentIP [:pick $dDNSCurrentIP ([:find $dDNSCurrentIP ": " -1] + 2) [:find $dDNSCurrentIP "</body>" -1]]
    :if ($LocalIP = $dDNSCurrentIP) do={
    :log info ("DDNS: ddns IP: $dDNSCurrentIP")
    :log info ("DDNS: Updated Successfully!.")
    }
    } else={
    :log info ("DDNS: NO ddns update needed!")
    }


    Но что и куда, никак не могу понять
     
  2. У микротика есть встроенный функционал DDNS --> winbox -->IP-->cloude--> DDNS enable, и в автоматическом режиме все живет.