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

    Скрипт обновления IP-адреса клиента HE ipv6 туннеля

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Скрипт обновления IP-адреса клиента HE ipv6 туннеля, RouterOS
     
    takoateli
    Guest
    #1
    0
    27.04.2014 21:28:00
    У меня уже давно есть несколько IPv6-туннелей от Hurricane Electric. На своих роутерах у меня есть скрипты, которые обновляют записи на стороне Hurricane Electric, когда у меня динамически меняется IP-адрес. Но недавно я заметил, что на моём RB 751 этот скрипт перестал работать. Я уже перелопатил кучу информации в гугле и перепробовал все скрипты, которые только удалось найти, но ничего не работает. Скрипты запускаются, пишут логи, но цифры на стороне Hurricane Electric не меняются. У меня версия Router OS 6.12. Если у кого-то есть рабочий скрипт, буду очень признателен, если поделитесь. Кажется, я тут не один такой, кто мучается с этим. Большое спасибо!
     
     
     
    Exios
    Guest
    #2
    0
    05.06.2014 20:16:00
    Скрипт Wiki Mikrotik с полностью рабочим кодом, но требуется вставить Update Key (Advanced > Update Key):

    :local HEupdatekey “” # Обновление IPv4-адреса клиента туннеля Hurricane Electric IPv6  
    :local HEtunnelinterface “<имя туннельного интерфейса этого роутера>”  
    :local HEtunnelid “”  
    :local HEuserid “”  
    :local HEupdatekey “”  
    :local HEupdatehost “ipv4.tunnelbroker.net”  
    :local HEupdatepath “/ipv4_end.php”  
    :local WANinterface “WAN”  
    :local outputfile (“HE-” . $HEtunnelid . “.txt”)

    Внутренняя обработка ниже…  
    ----------------------------------

    :local HEipv4addr  Получаем IP-адрес интерфейса WAN  
    :set HEipv4addr [/ip address get [/ip address find interface=$WANinterface] address]
    :set HEipv4addr [:pick [:tostr $HEipv4addr] 0 [:find [:tostr $HEipv4addr] “/”]]
    :if ([:len $HEipv4addr] = 0) do={
     :log error ("Не удалось получить IP для интерфейса " . $WANinterface)  
     :error ("Не удалось получить IP для интерфейса " . $WANinterface)  
    }  

    Обновляем HEtunnelinterface c IP WAN  
    /interface 6to4 {  
     :if ([get ($HEtunnelinterface) local-address] != $HEipv4addr) do={
       :log info ("Обновляем локальный адрес " . $HEtunnelinterface . " новым IP " . $HEipv4addr . "…")  
       set ($HEtunnelinterface) local-address=$HEipv4addr  
     }  
    }

    :log info ("Обновляем IPv6-туннель " . $HEtunnelid . " - IP клиента на новый IP " . $HEipv4addr . "…")  
    /tool fetch mode=http host=($HEupdatehost) url=(“http://” . $HEupdatehost . $HEupdatepath . “?ipv4b=” . $HEipv4addr . “&pass=” . $HEupdatekey . “&user_id=” . $HEuserid . “&tunnel_id=” . $HEtunnelid) dst-path=($outputfile)  
    :log info ([/file get ($outputfile) contents])
    /file remove ($outputfile)
     
     
     
    rxmd
    Guest
    #3
    0
    02.03.2017 06:45:00
    Есть причина, по которой ты вызываешь обновление Hurricane Electric, даже если локальный IPv4 адрес не менялся? Кстати, fetch теперь поддерживает https. Вот что я использую:

    # Обновление IPv4 адреса клиента туннеля Hurricane Electric IPv6

    #--------------- Начало пользовательских переменных ------------------

    # 6to4 Tunnel интерфейс этого роутера  
    :local HEtunnelinterface "Твой локальный интерфейс туннеля, например sit1"

    # ID туннеля Hurricane Electric  
    :local HEtunnelid "Твой Tunnel ID, например 123456"

    # Имя пользователя Hurricane Electric  
    :local HEuserid "Твой логин Hurricane Electric"

    # Ключ обновления Hurricane Electric в открытом виде  
    :local HEpass "Твой Update Key (берется в Advanced -> Update Key)"

    # WAN интерфейс этого роутера  
    :local WANinterface "Твой WAN интерфейс"

    #--------------- Конец пользовательских переменных ----------------------

    :local HEupdatehost "ipv4.tunnelbroker.net"  
    :local HEupdatepath "/nic/update"

    :local outputfile ("HE-" . $HEtunnelid . ".txt")

    # Внутренние процессы ниже...  
    # ----------------------------------  
    :local HEipv4addr

    # Получаем IP адрес WAN интерфейса  
    :set HEipv4addr [/ip address get [/ip address find interface=$WANinterface] address]
    :set HEipv4addr [:pick [:tostr $HEipv4addr] 0 [:find [:tostr $HEipv4addr] "/"]]

    :if ([:len $HEipv4addr] = 0) do={
      :log error ("Не удалось получить IP для интерфейса " . $WANinterface)  
      :error ("Не удалось получить IP для интерфейса " . $WANinterface)  
    }

    # Обновляем local-address HEtunnelinterface в соответствии с WAN IP  
    /interface 6to4 {  
      :if ([get ($HEtunnelinterface) local-address] != $HEipv4addr) do={
         :log info ("Обновляем local-address " . $HEtunnelinterface . " на новый IP " . $HEipv4addr . "...")  
         set ($HEtunnelinterface) local-address=$HEipv4addr  
         :log info ("Обновляем IPv6 туннель " . $HEtunnelid . " — клиентский IPv4 адрес на новый IP " . $HEipv4addr . "...")  
         /tool fetch mode=https \  
                     host=($HEupdatehost) \  
                     url=("https://" . $HEupdatehost . $HEupdatepath . \  
                             "?username=" . $HEuserid . \  
                             "&password=" . $HEpass . \  
                             "&hostname=" . $HEtunnelid . \  
                             "&myip=" . $HEipv4addr) \  
                     dst-path=($outputfile)  
         :log info ([/file get ($outputfile) contents])
         /file remove ($outputfile)  
      } else={  
         :log info ("Обновление не требуется, " . $HEtunnelinterface . " всё ещё работает с IPv4 адресом " . $HEipv4addr . ".")  
      }  
    }
     
     
     
    LadFromWales
    Guest
    #4
    0
    04.03.2017 17:08:00
    Есть причина, почему у тебя локальный адрес 6to4 задан как WAN IP? У меня локальный адрес 6to4 стоит на локальном IP роутера. Если я поставлю 6to4 локальный адрес равным WAN IP, то трафик не проходит, даже если разрешить входящий proto41. П.С.: Решил эту проблему — надо было добавить dst-nat выше моего masquerade. Но теперь, когда запускаю твой скрипт, он обновляет локальный адрес моего туннеля, но не обновляет IP клиента HE. В логах причины не показывает. Если собрать адрес из скрипта и вставить в браузер, появляется обычное окно с запросом логина и пароля, а не обновление IP. Если ввести в качестве пароля update key, то обновление пройдет успешно. https://ipv4.tunnelbroker.net/nic/update?username=&password=&hostname=&myip=<newip&gt; В браузере у меня работает только такой формат: https://:@ipv4.tunnelbroker.net/nic/update?hostname=&myip=<newip&gt;
     
     
     
    hendranata
    Guest
    #5
    0
    14.12.2022 10:05:00
    У кого-нибудь есть скрипт для tunnelbroker на случай, если на нашем WAN-интерфейсе будет только приватный IP? Идея в том, чтобы сравнивать публичный IP, который показывает облако, с IP, уже установленным в tunnelbroker. Если у вас есть такой скрипт — поделитесь, пожалуйста. Спасибо!
     
     
     
    accarda
    Guest
    #6
    0
    15.12.2022 16:59:00
    Я использую нечто вроде этого, чтобы менять HE только тогда, когда меняется публичный IP:

    :global WANIP  
    :local currentWANIP [/ip/cloud/get public-address]

    :if ($currentWANIP != $WANIP) do={  
     /tool/fetch url="как указано на странице с информацией HE" src-address=<private IP wan> keep-result=no  
     :set $WANIP ($currentWANIP)  
    }
     
     
     
    rextended
    Guest
    #7
    0
    16.12.2022 15:20:00
    :set $WANIP ($currentWANIP) => :set WANIP $currentWANIP
     
     
     
    accarda
    Guest
    #8
    0
    16.12.2022 19:19:00
    Ты прав, кроме присваивания никаких операций нет. Принял к сведению, спасибо.
     
     
     
    accarda
    Guest
    #9
    0
    28.12.2022 04:31:00
    После недавнего сбоя в /ip/cloud я решил добавить ещё одну проверку перед отправкой обновления на сервер HE, так что вот последний код, который я использую:

    :global WANIP  
    :local cloudStatus [/ip/cloud/get status]
    :local currentWANIP  

    :if ($cloudStatus = "updated") do={  
       :set $currentWANIP [/ip/cloud/get public-address]
    } else={  
       :set $currentWANIP 0.0.0.0  
    }  

    :if ($currentWANIP != 0.0.0.0 and $currentWANIP != $WANIP) do={  
       /tool/fetch url="https://<your account data>@ipv4.tunnelbroker.net/nic/update\?hostname=<tunnel ID>" src-address=<WAN IP> keep-result=no  
       :set $WANIP $currentWANIP  
       :log info "Обновлён TunnelBroker EndPoint - $currentWANIP"  
    }
     
     
     
    rextended
    Guest
    #10
    0
    28.12.2022 12:10:00
    Убери все ошибки, а не ошибочки, в синтаксисе…  
    :global WANIP  
    :local cloudStatus [/ip cloud get status]
    :local currentWANIP $WANIP  

    :if ($cloudStatus = "updated") do={ :set currentWANIP [/ip cloud get public-address] }

    :if ($currentWANIP != $WANIP) do={  
       /tool fetch src-address=<WAN IP> keep-result=no \  
           url="https://<your account data>@ipv4.tunnelbroker.net/nic/update\3Fhostname=<tunnel ID>"  
       :set WANIP $currentWANIP  
       :log info "Обновлён EndPoint TunnelBroker — $currentWANIP"  
    }
     
     
     
    accarda
    Guest
    #11
    0
    28.12.2022 15:53:00
    Хорошо, я прислушаюсь к твоему совету и использую :local currentWANIP $WANIP вместо установки 0.0.0.0, это логичнее.
     
     
     
    rextended
    Guest
    #12
    0
    28.12.2022 20:32:00
    Спасибо тебе.
     
     
     
    hendranata
    Guest
    #13
    0
    01.01.2023 03:28:00
    Спасибо за вашу идею.
     
     
     
    rextended
    Guest
    #14
    0
    01.01.2023 11:32:00
    Спасибо, но я просто исправил ошибки, идея принадлежит @accarda.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры