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

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

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Скрипт для автоматического обновления опций IPv6 DNS в DHCP, RouterOS
     
    mducharme
    Guest
    #1
    0
    26.06.2018 03:35:00
    Вот скрипт для автоматического обновления опции IPv6 DNS, чтобы компьютеры в вашей внутренней сети использовали MikroTik как DNS (сохраните как ipv6-dns-upd):

    :global currentIPv6;  
    :local optionname;  
    :local ipv6interface;  

    Создаём опцию DHCPv6 ‘option’:  
    :set optionname “DNS”;  

    Задаём IPv6-интерфейс для получения адреса (обычно bridge):  
    :set ipv6interface “bridge”;  

    :local newIP [/ipv6 address get [find interface=$ipv6interface advertise=yes] address];
    :set newIP [:pick $newIP 0 ([:len $newIP]-3)];

    :if ($newIP != $currentIPv6) do={  
     :log info (“ip address $currentIPv6 changed to $newIP”);  
     :set currentIPv6 $newIP;  
     /ipv6 dhcp-server option set [find name=$optionname] value=(“'”.$newIP.“'”);
    }  

    Помимо этого скрипта, добавьте клиентский скрипт DHCPv6 для запуска этого скрипта:  
    :delay 5  
    /system script run ipv6-dns-upd
     
     
     
    Etz
    Guest
    #2
    0
    24.01.2019 23:25:00
    IMHO: :global currentIPv6; вообще ничего не делает в этом скрипте… потому что, по какой-то странной причине, переменная не устанавливается через :set currentIPv6 $newIP;
     
     
     
    Etz
    Guest
    #3
    0
    12.02.2019 19:20:00
    Исправил ваш скрипт:  
    :global currentIPv6;  
    :local optionname;  
    :local ipv6interface;  

    # Устанавливаем созданный DHCPv6 «option»  
    :set optionname "DNS";  

    # Задаём интерфейс IPv6, с которого берём адрес (обычно bridge)  
    :set ipv6interface "bridge2";  

    :local newIP [/ipv6 address get [find interface=$ipv6interface advertise=yes] address];
    :set newIP [pick $newIP 0 [find $newIP "/"]];

    :if ($newIP != $currentIPv6) do={  
    :log info ("ip address $currentIPv6 changed to $newIP");  
    :global currentIPv6;  
    :set currentIPv6 $newIP;  
    /ipv6 dhcp-server option set [find name=$optionname] value=("'".$newIP."'");
    }  

    Теперь глобальная переменная задаётся правильно, не понимаю только, почему приходится объявлять её дважды, чтобы всё работало.  
    EDIT: Ответ есть здесь: https://wiki.mikrotik.com/wiki/Manual:Scripting_Tips_and_Tricks#Accessing_global_variable_from_function
     
     
     
    Jotne
    Guest
    #4
    0
    17.02.2019 10:03:00
    Не могу помочь с вашей проблемой, но небольшой совет. Теперь в конце каждой строки ставить ; не обязательно. ; нужен только для разделения нескольких команд в одной строке.
     
     
     
    sebastia
    Guest
    #5
    0
    17.02.2019 10:48:00
    По моему мнению, контекст для этого скрипта просто неверен: если вы предоставляете услугу (dns или любую другую), её следует обслуживать с фиксированного IP-адреса. Тогда такие скрипты вообще не нужны. Кроме того, этот скрипт не сработает с точки зрения времени: IP-адреса назначаются на определённый период. DNS-опция связана с жизненным циклом IP. Если IP-адрес DNS-сервера меняется, клиент не узнает об этом, пока не придёт время обновлять своё резервирование IP.
     
     
     
    Etz
    Guest
    #6
    0
    17.02.2019 14:50:00
    Вся суть в том, чтобы использовать DNS-кэш на роутере, а поскольку большинство провайдеров применяют DHCP-PD для выдачи адресов, они, к сожалению, динамические. Кроме того, если срок жизни префикса истекает, происходит обновление DHCP, и вы получаете новый префикс (хотя обычно аренда просто продлевается, и обновлять IP в настройках DNS не нужно), а все клиенты обновляют свои адреса через RA и получают новый IP сервера DNS, так что для домашнего использования здесь особой проблемы нет. Конечно, было бы намного лучше использовать статическую схему адресации, но это не всегда возможно. К слову, у меня лично есть статический IPv4 от провайдера, за который я плачу дополнительно, но статический IPv6 они не предоставляют — он тоже динамический через DHCP-PD. Теоретически я мог бы использовать для этого link-local адрес, но это было бы довольно неудобно и «неправильно» с точки зрения реализации.
     
     
     
    sebastia
    Guest
    #7
    0
    18.02.2019 21:02:00
    Вы можете использовать «фиксированные» IP-адреса с назначенными пулами… /ipv6 address  
    add address=::1 from-pool=<some_pool> interface=etherX  
    В любом случае, эту логику стоит поместить в скрипт dhcpcv6 https://wiki.mikrotik.com/wiki/Manual:IPv6/DHCP_Client#Script, чтобы делать это только тогда и только тогда, когда нужно.  

    Ещё один вариант — использовать статический DNS: при работе в двойном стеке и с NAT объявлять DNS только по IPv4, так как он будет фиксированным. У меня есть статический IPv6, но я не заморачиваюсь его использовать. DNS работает по IPv4.
     
     
     
    Etz
    Guest
    #8
    0
    19.02.2019 20:42:00
    Да, и у меня это уже так настроено, проблема была с исчезновением глобальной переменной, из-за чего скрипт запускался каждый раз при продлении аренды… причиной была проблема с правами. Да, конечно, но при этом опция DNS не обновится, если сам префикс изменится.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры