Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • 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
    Скрипт обновления динамического DNS от Google

    Скрипт обновления динамического DNS от Google

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Скрипт обновления динамического DNS от Google, RouterOS
     
    hhspiny
    Guest
    #1
    0
    27.01.2015 19:00:00
    Этот скрипт был адаптирован из скрипта для обновления entryDNS. Проверен на routerOS 6.x.  
    Переменные:  
    :local GoogleDNSUsername “xxx”  
    :local GOogleDNSPassword “xxx”  
    :local hostName “xxx”  
    :local GoogleDNSForceUpdate false  
    :local currentIP “”  
    :global previousIP  

    Скрипт:  
    /tool fetch url=“http://myip.dnsomatic.com/” mode=http dst-path=“publicip.txt”  
    :set currentIP [/file get “publicip.txt” contents]
    /file remove “publicip.txt”  

    :if ([:typeof $previousIP] = “nothing”) do={
     :set previousIP “”  
    }  

    :if ($currentIP != $previousIP) do={  
     :set GoogleDNSForceUpdate true  
     :set previousIP $currentIP  
    }  

    :if ($GoogleDNSForceUpdate) do={  
     :do {  
       /tool fetch url=“https://$GoogleDNSUsername:$GOogleDNSPassword@domains.google.com/nic/update?hostname=$hostName&myip=$currentIP” mode=https keep-result=no  
       :log info (“GoogleDNS Updated: current IP = $currentIP”)  
     } on-error={  
       :log error (“GoogleDNS: Failed Updating”)  
     }  
    }
     
     
     
    craigthom
    Guest
    #2
    0
    28.03.2015 23:02:00
    Вот моя модификация, которая использует /ip cloud для получения текущего адреса, убирает глобальную переменную для предыдущего адреса, используя :resolve, и сохраняет результаты от Google в лог.  
    # Переменные  
    # Имя пользователя и пароль — это длинные зашифрованные данные, которые предоставляет Google Domains,  
    # а не обычные данные вашей учетной записи Google  
    :local GoogleDNSUsername "yourDNSusername"  
    :local GoogleDNSPassword "yourDNSpassowrd"  
    :local hostName "yourhostname"  
    :local currentIP ""  
    :local setResults ""  
    :local previousIP ""  

    # Скрипт  

    :set currentIP [/ip cloud get public-address]
    :set previousIP [:resolve "$hostName"]

    :if ($currentIP != $previousIP) do={  
    :do {  
    /tool fetch url="https://$GoogleDNSUsername:$GoogleDNSPassword@domains.google.com/nic/update?hostname=$hostName&myip=$currentIP" mode=https dst-path=GoogleDNS.txt  
    :set setResults [/file get GoogleDNS.txt contents];
    :log info "GoogleDNS ответил так: $setResults"  
    } on-error={  
    :log error ("GoogleDNS: скрипт не смог обновить IP-адрес")  
    }  
    }
     
     
     
    jo2jo
    Guest
    #3
    0
    23.10.2017 04:42:00
    Это отличный скрипт, спасибо автору за исходный вариант (и всем, кто внес изменения и выложил их здесь)! Моя версия и изменения проверены и работают на rOS 6.40.4 с Google Domains (Synthetic Records → Dynamic DNS). Ниже приведены изменения, которые я внес — возможно, они помогут кому-то ещё. Скрипт делает именно то, что мне нужно: берёт текущий публичный IP с интерфейса DHCP-клиента, убирает трёхсимвольную маску подсети и безопасно отправляет его в динамический DNS Google Domains.

    В сниппете я «нахожу» нужный dhcp-client по комментарию, который добавил к этому dhcpClient (я использую заготовленный комментарий — если я когда-нибудь сменю имя интерфейса ether3, скрипт всё равно будет работать). Важно: многие адреса, которые вы получаете из ROS, содержат маску подсети, например команда /ip dhcp-client get возвращает: 5.3.2.6/21. Поэтому в коде ниже эта /21 (или любая другая маска) удаляется, если она есть.

    Мои изменения в исходном скрипте начинаются с: get the current… и заканчиваются на #:log info ("currentIP…

    НЕ ЗАБУДЬТЕ добавить этот скрипт в /system scheduler, чтобы он запускался автоматически с нужным интервалом, пример расписания снизу.

    # Спасибо hhspiny

    # Переменные  
    # Имя пользователя и пароль — длинные сложные ключи, которые Google Domains генерирует для вашего dynDomain,  
    # ЭТО НЕ ваши обычные логин и пароль от аккаунта Google  

    :local GoogleDNSUsername "xxFILL_IN_YOURSxx"  
    :local GoogleDNSPassword "xxFILL_IN_YOURSxx"  
    :local hostName "xxxFILL_IN_YOURS_full__ex__DYN.MYDOMAIN.COMxxx"  
    :local currentIP ""  
    :local setResults ""  
    :local previousIP ""  

    # Получаем текущий IP адрес с dhcp-клиента, идентифицированного по заранее заданному КОММЕНТАРИЮ, ЗАПОЛНИТЕ НИЖЕ  
    :set currentIP [/ip dhcp-client get [find comment=XXXyourCommentXXX] address]

    # Убираем маску подсети  
    :for i from=( [:len $currentIP] - 1) to=0 step=-1 do={
     :if ( [:pick $currentIP $i] = "/") do={
       :set currentIP [:pick $currentIP 0 $i]
     }  
    }  

    # Чтобы отладить команду получения IP, раскомментируйте строку ниже  
    #:log info ("currentIP_to_SEND_to_google_DEBUGGING: $currentIP")  

    :set previousIP [:resolve "$hostName"]

    :if ($currentIP != $previousIP) do={  
     :do {  
       /tool fetch url="https://$GoogleDNSUsername:$GoogleDNSPassword@domains.google.com/nic/update?hostname=$hostName&myip=$currentIP" mode=https dst-path=GoogleDNS.txt  
       :set setResults [/file get GoogleDNS.txt contents];
       :log info ("GoogleDNS сказал следующее: $setResults")  
     } on-error={  
       :log error ("GoogleDNS: скрипт не смог установить новый IP адрес")  
     }  
    }  

    # Пример планировщика, чтобы запускать это каждые 10 минут  
    /system scheduler add interval=10m name=SCHgoogleDYNdns on-event=YOURdynSCRIPTname
     
     
     
    tugsynz
    Guest
    #4
    0
    18.07.2019 20:12:00
    Привет, команда! Я использовал этот скрипт, но постоянно получаю ответ с сообщением «badagent». Неужели я что-то пропустил в скрипте? Спасибо, B
     
     
     
    ch85
    Guest
    #5
    0
    18.05.2020 15:39:00
    Что если у меня несколько WAN и я хочу использовать разные Google DDNS для каждого WAN.. Это возможно? И если да, то как это можно настроить? Спасибо.
     
     
     
    RafaG
    Guest
    #6
    0
    11.07.2020 06:14:00
    Привет, у меня похожая проблема, я использую: /tool fetch http-header-field="User-Agent: Mikrotik" url="https://$GoogleDNSUsername:$GoogleDNSPassword@domains.google.com/nic/update?hostname=$hostName&myip=$currentIP" mode=https dst-path=GoogleDNS.txt И большое спасибо за этот скрипт! RafaG
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры