Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • 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
    Скрипт обновления сервиса Dynamic DNS на OVH.com

    Скрипт обновления сервиса Dynamic DNS на OVH.com

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Скрипт обновления сервиса Dynamic DNS на OVH.com, RouterOS
     
    sploit
    Guest
    #1
    0
    28.07.2017 17:49:00
    Если кому интересно, я сделал (точнее, модифицировал скрипт DynDNS) обновляющий скрипт для сервиса Dynamic DNS от OVH.com. Используйте, копируйте, модифицируйте, публикуйте без проблем. https://github.com/acidsploit/mikrotik-routeros-scripts

    :global ovhddnsuser "<OVH DynDNS USER>"
    :global ovhddnspass "<OVH DynDNS PASS>"
    :global theinterface "<ИНТЕРФЕЙС С ВАШИМ ПУБЛИЧНЫМ IP>"
    :global ovhddnshost "<OVHDynDNS HOSTNAME>"
    :global ipddns [:resolve $ovhddnshost]
    :global ipfresh [ /ip address get [/ip address find interface=$theinterface ] address ]

    :if ([ :typeof $ipfresh ] = nil ) do={
      :log info ("OVHDynDNS: Нет IP-адреса на интерфейсе $theinterface")
    } else={
      :for i from=( [:len $ipfresh] - 1) to=0 do={
         :if ( [:pick $ipfresh $i] = "/") do={
            :set ipfresh [:pick $ipfresh 0 $i]
         }
    }

    :if ($ipddns != $ipfresh) do={
      :log info ("OVHDynDNS: В DNS-записи для $ovhddnshost IP = $ipddns")
      :log info ("OVHDynDNS: Текущий IP на $theinterface = $ipfresh")
      :log info ("OVHDynDNS: ОБНОВЛЯЕМ $ovhddnshost -> $ipfresh")
      :global str "nic/update?system=dyndns&hostname=$ovhddnshost&myip=$ipfresh&wildcard=O­FF&backmx=NO&mx=NOCHG"

      # Команда для отладки fetch
      #:log info ("OVHDynDNS: /tool fetch address=www.ovh.com host=www.ovh.com src-path=$str mode=https user=$ovhddnsuser password=$ovhddnspass dst-path=(\"/OVHDynDNS.$ovhddnshost\")")
      /tool fetch address=www.ovh.com host=www.ovh.com src-path=$str mode=https user=$ovhddnsuser password=$ovhddnspass dst-path=("/OVHDynDNS.".$ovhddnshost)
      :delay 1

      :global ovhresult [/file get "OVHDynDNS.$ovhddnshost" contents]
      :log info "OVHDynDNS: Ответ OVH: $ovhresult"

      :global str [/file find name="OVHDynDNS.$ovhddnshost"]
      /file remove $str
     
      :if ($ovhresult = "good $ipfresh\n" ) do={
         :log info "OVHDynDNS: УСПЕХ"
      } else={
          :log info "OVHDynDNS: НЕУДАЧА"
      }

      :global ipddns $ipfresh
      :log info "OVHDynDNS: DNS-запись для $ovhddnshost обновлена на $ipfresh!"
    } else={
      :log info "OVHDynDNS: Всё норм!"
    }
    }

    Может, стоит опубликовать это на вики — пригодится в будущем. Всем успехов!
     
     
     
    mniewiera
    Guest
    #2
    0
    06.01.2018 13:52:00
    Спасибо, sploit, за скрипт! Я только что узнал, что у OVH есть такая опция dynhost, и подумал, что это будет идеально для использования с микротиковским скриптом. Позже попробую. Ещё раз спасибо!
     
     
     
    sebastia
    Guest
    #3
    0
    06.01.2018 20:07:00
    Немного конструктивной критики: все эти :global можно заменить на :local. Нет необходимости сохранять «состояние» между запусками.
     
     
     
    mniewiera
    Guest
    #4
    0
    06.01.2018 20:59:00
    Так что я просто могу заменить :global на :local? Я не очень хорошо разбираюсь в скриптах и совершенно новичок в mikrotik.
     
     
     
    sebastia
    Guest
    #5
    0
    08.01.2018 22:09:00
    Правильно, и ты можешь убрать из своей среды (/system/scripts/environment) эти переменные.
     
     
     
    mniewiera
    Guest
    #6
    0
    20.01.2018 07:25:00
    Спасибо! Это работает отлично. Думаю, на следующем этапе я уберу сообщение «OVHDynDNS: We good!», если обновление прошло успешно. Оно очень сильно засоряет мой лог/сервер syslog.
     
     
     
    Maxke
    Guest
    #7
    0
    13.01.2019 20:29:00
    Привет, я здесь новенький. Можете подсказать, что делать, если роутер стоит за модемом? У моего роутера нет внешнего IP-адреса. Спасибо!
     
     
     
    gyto6
    Guest
    #8
    0
    15.06.2022 20:38:00
    Ну, я установил докер-контейнер ddns-updater на свой сервер и успешно обновил A-запись... Значит, похоже, что сервис OVH не упал. Может, это какой-то файрволл фильтрует трафик и мешает?
     
     
     
    rextended
    Guest
    #9
    0
    15.06.2022 20:44:00
    Нет, с таким ответом: <301 Moved Permanently location=“ https://www.ovhcloud.com/fr/ ”> это может быть только ошибка в скрипте при перестроении URL…
     
     
     
    kinx
    Guest
    #10
    0
    30.10.2019 14:10:00
    У меня был свой домен на Dyn (DynDNS), который теперь принадлежит Oracle. И меня очень разочаровывает, что они прекращают поддержку пользовательских динамических доменов с марта следующего года. Я оставляю аккаунт на Dyn для старых клиентов, но всех остальных, кто нуждается в Dynamic DNS, перевожу на OVH DynHost. Может кто-нибудь подправить этот скрипт, чтобы он получал внешний IP (не с интерфейса eth1/wan), ведь интерфейс MikroTik eth1/wan не всегда имеет внешний IP... Я видел другой скрипт «DynDNS», который сначала получает внешний IP с сайта OpenDNS: https://diagnostic.opendns.com/myip Но я могу и свой сайт сделать вместо OpenDNS, например... Нашёл ещё один сервис для проверки ipv4 от Google: https://domains.google.com/checkip
     
     
     
    sploit
    Guest
    #11
    0
    06.11.2019 08:38:00
    Вот классный трюк для nginx, чтобы сделать простой сервис проверки IP:  
    location = / {  
      add_header Content-Type text/plain; return 200 $remote_addr;  
    }  
    А потом просто делаете: curl myip.mydomain.com  
    И получите свой публичный IP. Думаю, проще уже некуда.
     
     
     
    dot02
    Guest
    #12
    0
    03.06.2022 11:27:00
    Привет, скрипт отлично работает, если IP-адрес на WAN действительно является публичным. В моём случае, например, у меня маршрутизатор удалённого сайта за CG-NAT (LTE-соединение благодаря комплекту MT LDF LTE6), поэтому IP, который я получаю, это NAT-адрес из диапазона 100.64.0.0/10, что логично, так как именно этот IP провайдер выделяет моему внешнему WAN-интерфейсу. К сожалению, это мне мало помогает, если моё DNS-имя, конечно, резолвится именно в этот NAT-адрес... Я пытался изменить скрипт, чтобы получать «реальный» публичный IP через внешние сервисы определения IP, например v4.ident.me, поэтому заменил строку: global ipfresh [ /ip address get [/ip address find interface=$theinterface ] address ] на: global ipfresh [ /ip address get [curl v4.ident.me ] address ], но это не работает, и в логах никаких ошибок нет... Ребята, подскажите, что я очевидно делаю не так? Вы, наверное, заметили, что у меня с написанием скриптов туго, так что для меня это хороший способ потренироваться... Спасибо, Денис.
     
     
     
    gyto6
    Guest
    #13
    0
    15.06.2022 17:16:00
    Этот скрипт у меня перестал работать. Я застрял на статусе «ОБНОВЛЕНИЕ». Если раскомментировать лог отладки, вот что получается: ошибка: закрытие подключения: <301 Moved Permanently location="https://www.ovhcloud.com/fr/"> 198.27.92.1:443 (5)
     
     
     
    rextended
    Guest
    #14
    0
    15.06.2022 17:36:00
    Я прочитал в скрипте www.ovh.com, а не www.ovhcloud.com/fr/. Попробуй заменить ovh на ovhcloud в скрипте, но не добавляй /fr/.
     
     
     
    gyto6
    Guest
    #15
    0
    15.06.2022 18:38:00
    Ну, этот вариант не сработает. OVH DynHost на самом деле должен обращаться по адресу https://www.ovh.com/nic/update?system=dyndns&hostname=$HOSTNAME&myip=$IP
     
     
     
    rextended
    Guest
    #16
    0
    15.06.2022 19:11:00
    Но если вот это: <301 Moved Permanently location=“ https://www.ovhcloud.com/fr/ ”> как бы говорит rb, что сайт перемещён, а fetch не следует перенаправлению…
     
     
     
    gyto6
    Guest
    #17
    0
    15.06.2022 19:40:00
    Ну, на самом деле перенаправляется только корень. Я не понимаю, почему fetch перестал работать. Может, я где-то ошибся с этой командой DEBUG, но не знаю, почему он вдруг перестал работать. У остальных он всё ещё работает?
     
     
     
    rextended
    Guest
    #18
    0
    15.06.2022 20:05:00
    Я не могу проверить сервис, надеюсь, кто-то, кто им пользуется, попробует и ответит.
     
     
     
    dot02
    Guest
    #19
    0
    15.06.2022 22:37:00
    Ребята, извиняюсь, не заметил, что тут были ответы. Вот обновлённая версия скрипта, которая обновляет реальный публичный IP, даже если ваш роутер находится за CGNAT. Я проверял — всё работает. Буду рад вашим отзывам, если кто-то заметит, что можно улучшить.

    :local ovhddnsuser "<OVH_USERNAME>"  
    :local ovhddnspass "<OVH_PWD>"  
    :local theinterface "<INTERFACE_NAME>"  
    :local ovhddnshost "<OVH_DYNDNS_NAME>"  
    :local ipddns [:resolve $ovhddnshost]
    :local ipfresh [:resolve myip.opendns.com server=208.67.222.222]
    :if ([ :typeof $ipfresh ] = nil ) do={
      :log info ("OVHDynDNS: На интерфейсе $theinterface нет публичного IP")  
    } else={  
      :for i from=( [:len $ipfresh] - 1) to=0 do={
         :if ( [:pick $ipfresh $i] = "/") do={
            :set ipfresh [:pick $ipfresh 0 $i]
         }  
      }  
     
      :if ($ipddns != $ipfresh) do={  
         :log info ("OVHDynDNS: Текущий DNS-запись для $ovhddnshost = $ipddns")  
         :log info ("OVHDynDNS: Текущий IP интерфейса $theinterface = $ipfresh")  
         :log info ("OVHDynDNS: Обновляем $ovhddnshost -> $ipfresh")  
         :local str "nic/update?system=dyndns&hostname=$ovhddnshost&myip=$ipfresh&wildcard=O­FF&backmx=NO&mx=NOCHG"  

         # DEBUG команда fetch  
         #:log info ("OVHDynDNS: /tool fetch address=www.ovh.com host=www.ovh.com src-path=$str mode=https user=$ovhddnsuser password=$ovhddnspass dst-path=(\"/OVHDynDNS.$ovhddnshost\")")  
         /tool fetch address=www.ovh.com host=www.ovh.com src-path=$str mode=https user=$ovhddnsuser password=$ovhddnspass dst-path=("/OVHDynDNS.".$ovhddnshost)  
         :delay 1  

         :local ovhresult [/file get "OVHDynDNS.$ovhddnshost" contents]
         :log info "OVHDynDNS: Ответ OVH: $ovhresult"  

         :local str [/file find name="OVHDynDNS.$ovhddnshost"]
         /file remove $str  
         
         :if ($ovhresult = "good $ipfresh\n" ) do={  
            :log info "OVHDynDNS: УСПЕХ"  
         } else={  
            :log info "OVHDynDNS: ОШИБКА"  
         }  

         :local ipddns $ipfresh  
         :log info "OVHDynDNS: DNS-запись $ovhddnshost теперь = $ipfresh!"  
      } else={  
         :log info "OVHDynDNS: Всё в порядке!"  
      }  
    }
     
     
     
    gyto6
    Guest
    #20
    0
    16.06.2022 08:29:00
    У меня не получилось. Но не думаю, что проблема в твоём изменённом скрипте. Есть один, наверное, простой вопрос: нет ли в строке или в кавычках какого-нибудь запрещённого символа? В документе таких не вижу, но на всякий случай уточняю.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры