Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Скрипт обновления DuckDNS (бесплатная альтернатива DynDNS)

    Скрипт обновления DuckDNS (бесплатная альтернатива DynDNS)

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Скрипт обновления DuckDNS (бесплатная альтернатива DynDNS), RouterOS
     
    NevOZ
    Guest
    #1
    0
    18.04.2014 00:10:00
    Всем привет! Как многие из вас знают, DynDNS прекратит предоставлять бесплатные услуги динамического DNS через месяц. В связи с этим я решил использовать один из альтернативных бесплатных сервисов — DuckDNS (https://duckdns.org/) и решил поделиться своим скриптом.

    Этот скрипт работает иначе, чем почти все другие скрипты обновления динамического 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=“https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=$clientip” dst-path=duckdns.txt;
      :delay 1
      :local result [/file get duckdns.txt contents]
      :log info “UpdateDuckDNS: результат обновления Duck DNS: $result”
      :set ExternalIP $clientip
     }
     :delay 5
    }
    }
     
     
     
    THG
    Guest
    #2
    0
    29.12.2014 00:29:00
    Спасибо, скрипт работает отлично.
     
     
     
    fbsdmon
    Guest
    #3
    0
    02.03.2019 10:37:00
    @rextended Скрипт у меня работает только при запуске из терминала MikroTik. Если я нажимаю «run» в меню скриптов или запускаю через планировщик — не работает. Выдаёт ошибку: «could not run script DuckDNS: not enough permissions». Я давал скрипту все возможные права, но ошибка всё равно та же. Скрипт создаю и запускаю под тем же пользователем, которым запускаю в терминале. Чтобы воспроизвести:  
    Удалить глобальные переменные «actualIP», «lastChange» и «previousIP» в System->Scripts->Environment  
    Удалить файлы «ipstore.txt» и «duckdns-result.txt»  
    Запустить скрипт из System->Scripts->Scripts (выбрать и нажать «run script»)  
    Есть идеи, в чём может быть проблема? Как уже сказал, запускаю под тем же пользователем с полными правами. Использую routeros-mmips v6.44.
     
     
     
    badwithnetworking
    Guest
    #4
    0
    29.07.2019 12:56:00
    Привет! Когда я пытаюсь это использовать, оказывается, что между моим роутером Mikrotik и интернетом стоит ещё один приватный адрес. Из-за этого возвращается приватный адрес. Есть ли какой-то другой способ сделать это?
     
     
     
    cdiedrich
    Guest
    #5
    0
    29.07.2019 14:14:00
    Ты можешь получить свой IP вот так: /tool fetch mode=http http-method=get url=http://icanhazip.com/ dst-path=myip.txt Но честно говоря, есть ли смысл регистрировать duckdns, если твой роутер за NAT? -Крис
     
     
     
    badwithnetworking
    Guest
    #6
    0
    29.07.2019 14:46:00
    Ты прав. Может, это и не частный адрес. В принципе, мой оптоволоконный модем подключён к ether1. Когда я настраиваю его с помощью этого скрипта, IP-адрес отличается от того, что я вижу, если проверить через https://whatismyipaddress.com/. Скрипт показывает 172.22.###.###, а Whatismyipaddress выдаёт 103.252.###.###. В чём тут может быть дело?
     
     
     
    cdiedrich
    Guest
    #7
    0
    29.07.2019 14:49:00
    Это похоже на частный адрес — 172.22/16 входит в диапазон 172.16/12, который является частным. И поскольку исходный скрипт получает адрес с интерфейса, я уверен, что у вас частный адрес, и ваш провайдер использует NAT для вашего адреса. -Крис
     
     
     
    badwithnetworking
    Guest
    #8
    0
    04.08.2019 15:09:00
    Хорошо, без проблем. Просто заплачу дополнительную сумму за статический IP. Видимо, другого выхода нет. Спасибо.
     
     
     
    nikolaricci
    Guest
    #9
    0
    12.10.2019 08:46:00
    Всем привет, это мой скрипт, и он у меня работает.  
    :global currentIP;  
    local newIP [ip cloud get public-address];
    :if ($newIP != $currentIP) do={  
     :log info “IP-адрес $currentIP изменился на $newIP”;  
     :set currentIP $newIP;  
     /tool fetch mode=https url=“https://www.duckdns.org/update?domains=domain&token=xxxx-xxx-xx-xx-xxx=$newIP” dst-path=duckdns.txt;  
     :local result [/file get duckdns.txt contents];
     :log info “Результат обновления Duck DNS: $result”;  
    }  

    Ключевая строка — “local newIP [ip cloud get public-address];”
    Но первое “ip cloud” должно быть настроено на новых версиях MT.  
    Это также работает, если у вас несколько IP на WAN-интерфейсах.
     
     
     
    daboka
    Guest
    #10
    0
    09.06.2020 21:18:00
    Ребята! У меня были разные проблемы со скриптами обновления из этой темы. Ниже вы найдете мою версию скрипта. Вместо кеширования IP-адреса, этот скрипт разрешает доменное имя и обновляет его, если оно отличается от реального адреса интерфейса.

    :local resolvedIP [:resolve "{{ domain }}.duckdns.org"];
    :local currentIP [/ip address get [find interface="{{ interface }}"] address];
    :local currentIP [:pick $currentIP 0 [:find $currentIP "/"]];

    :if ($resolvedIP != $currentIP) do={
       :log info ("Пытаюсь обновить DuckDNS с текущим IP ".$currentIP.", разрешенный IP - ".$resolvedIP);
       :local response [/tool fetch url=("https://www.duckdns.org/update?domains={{ domain }}&token={{ token }}&ip=".$currentIP) check-certificate=yes as-value output=user];
       :if ($response->"status" = "finished") do={
           :if ($response->"data" = "OK") do={
               :log info ("Успешно обновил DuckDNS новым IP ".$currentIP);
           } else={
               :log error ("Не удалось обновить DuckDNS новым IP ".$currentIP);
           }
       }
    }

    Чтобы использовать скрипт, нужно сделать следующее: заменить переменные в двойных фигурных скобках, сделать корневой сертификат, который подписывает цепочку сертификатов DuckDNS, доступным в хранилище сертификатов — либо скачать его отсюда, либо использовать список доверенных корневых сертификатов Mozilla отсюда. Сертификат следует скачать на надежном компьютере и уже оттуда загрузить на роутер. Его можно импортировать в Winbox через Система > Сертификаты или используя команду /certificate import file-name={{ certfile }} passphrase="".

    После того как хранилище сертификатов настроено, его можно периодически обновлять следующим скриптом:

    /tool fetch url=https://mkcert.org/generate/ check-certificate=yes dst-path=cacert.pem;
    /certificate import file-name=cacert.pem passphrase="";

    Этот шаг можно пропустить, убрав check-certificate=yes из команды fetch, но я не советую так делать, потому что это снижает безопасность соединения.
     
     
     
    ilium007
    Guest
    #11
    0
    02.09.2020 11:26:00
    Как этот скрипт запускается по расписанию? Как он сработает при изменении WAN IP-адреса? Или мне нужно настроить расписание и запускать его, например, каждые 5 минут?
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры