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

    Синхронизировать записи DNS с арендой DHCP

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Синхронизировать записи DNS с арендой DHCP, RouterOS
     
    wilsonlmh
    Guest
    #1
    0
    29.12.2014 13:53:00
    Всем привет! Я написал скрипт для синхронизации записей DNS с DHCP-арендами, чтобы вам не приходилось вручную поддерживать два списка. По сути, он хранит все аренды и имена хостов в самом скрипте, а затем применяет (заменяет) их на DNS-сервере и DHCP-сервере. Так что заботиться нужно только о конфигурации в скрипте (что обеспечивает централизованность). Всё, что нужно, — это следующее:

    #Вся статическая конфигурация DHCP&DNS в одной зоне (описано ниже) см. здесь. Этот скрипт обновит (удалит, а потом создаст заново) все записи, которые соответствуют описанной конфигурации. Поэтому менять что-либо на DHCP-сервере или во вкладке DNS бессмысленно. Если нужно изменить статические записи DNS/DHCP — читайте руководство здесь.

    #Настройка окружения  
    :local dhcpserver "Internal Network"  
    :local zone “example.com”  
    :global hostListString

    #Здесь задаём, сколько списков у вас есть. Правило именования фиксированное — hostListStringX  
    :local ifrom 1;  
    :local ito 2;

    #Списки хостов (машин/устройств)  
    #Формат: $ip,$hostname,$mac_addr,$client_id  
    #Каждая запись — в ОДНОЙ строке!  
    #Между запятыми не должно быть пробелов!  
    #$client_id — это "1:" + MAC-адрес в нижнем регистре. Можно также взять из DHCP Server->Lease.  
    #Важно: :global нужен, потому что ниже используется :parse  
    #Особенности: последняя строка должна быть пустой.  
    #Ограничение: размер переменной не может быть больше 4096 байт — это жёстко заданное ограничение MikroTik. Возможно, придётся разбить на несколько списков. Лично я так же разделяю списки для разных подсетей. В общем, как удобно вам.

    #Пример списков  
    :global hostListString1 "192.168.1.11,server1,00:DD:CC:EE:EE:11,1:0:dd:cc:ee:ee:11  
    192.168.1.12,server2,00:DD:CC:EE:EE:12,1:0:dd:cc:ee:ee:12  
    192.168.1.13,server3,00:DD:CC:EE:EE:13,1:0:dd:cc:ee:ee:13  
    ";

    :global hostListString2 "192.168.2.11,client1,00:DD:CC:EE:EE:21,1:0:dd:cc:ee:ee:21  
    192.168.2.12,client2,00:DD:CC:EE:EE:22,1:0:dd:cc:ee:ee:22  
    192.168.2.13,client3,00:DD:CC:EE:EE:23,1:0:dd:cc:ee:ee:23  
    ";

    #Начало скрипта  
    #Удаляем старые статические DNS-записи

    /ip dns static remove [find where name ~ (".*\\.".$zone)]

    :for i from=$ifrom to=$ito do={  
     :local changeList [:parse (":global hostListString". [:tostr $i] . "; :global hostListString; :set \$hostListString \$hostListString" . [:tostr $i])];
     $changeList;  
     :local contentLen [ :len $hostListString ];
     :local lineEnd 0;  
     :local line "";  
     :local lastEnd 0;  
     :local hostArray;

     :do {  
       :set lineEnd [:find $hostListString "\n" $lastEnd ];
       :set line [:pick $hostListString $lastEnd $lineEnd];
       :set lastEnd ( $lineEnd + 1 );

       :set hostArray [:toarray $line];

       :if ([:len $line] >= 7 ) do={

         #Возвращаем DNS-записи  
         /ip dns static add address=[:pick $hostArray 0] name=([:pick $hostArray 1].".".$zone)
         #Ищем, есть ли хост на DHCP-сервере  
         /ip dhcp-server lease  
         :local searchingDHCP [find where mac-address=[:pick $hostArray 2]];
         :if ($searchingDHCP != "") do={  
           #Хост найден! Запускаем make-static (вместо удаления и создания заново)  
           #Эти две команды вызывают предупреждение, ловим исключения.  
           :do { make-static number=$searchingDHCP } on-error={};  
           :do { set number=$searchingDHCP address=[:pick $hostArray 0] server=$dhcpserver comment="-)createdBy=DHCP2DNS" } on-error={};
         } else={  
           #Хост не найден! Если есть — удаляем и создаём заново  
           :if ([find where mac-address=[:pick $hostArray 2]] != "") do={ remove number=(find where mac-address=[:pick $hostArray 2]) }

           add address=[:pick $hostArray 0] mac-address=[:pick $hostArray 2] client-id=[:pick $hostArray 3] server=$dhcpserver comment="-)createdBy=DHCP2DNS"
         }

       } else={ :put "Пустая запись"; }

     } while ($lineEnd < $contentLen-1)  
    }

    Просто следуйте формату и вписывайте свои MAC, IP, hostname прямо в скрипт. Потом создайте задачу по расписанию для обновления (может и не понадобится). Внимание: обязательно сделайте резервную копию всей конфигурации и внимательно прочитайте примечания перед применением. Если конфигурация неверна, скрипт может удалить все ваши DHCP и DNS записи.
     
     
     
    Jotne
    Guest
    #2
    0
    07.12.2018 22:12:00
    Старое решение из 2015 года. Может работать, не проверял. Но команда «/interface wireless» не сработает на роутерах без Wi-Fi. Должна быть опция для обработки ошибок. PS Если у вас RouterOS 6.34, как указано в вашем слогане, лучше сейчас же обновиться.
     
     
     
    eworm
    Guest
    #3
    0
    12.12.2018 20:23:00
    У меня есть ещё один: dhcp-to-dns на github или cgit. (Он зависит от других скриптов из того же репозитория, смотрите README для настройки.)
     
     
     
    Jotne
    Guest
    #4
    0
    13.12.2018 11:58:00
    Выглядит интересно, но есть пара вопросов. В файле readme описан только процесс обновления скрипта. Скрипт DHCP запускается на самом DHCP-сервере или по расписанию? И что если для хоста вручную задано DNS-имя — оно перезапишется?
     
     
     
    eworm
    Guest
    #5
    0
    13.12.2018 13:16:00
    Некоторым скриптам нужна дополнительная документация… Займусь этим, когда появится свободное время. Для dhcp-to-dns я делаю и то, и другое: запускаю его на dhcp-сервере как скрипт аренды (чтобы добавлять новые записи) и запускаю по расписанию, чтобы удалять устаревшие записи. Для клиента DHCP с именем «host», устройства Mikrotik с именем «router» и домена «example.com» DNS-записи выглядят как «host.dhcp.router.example.com» (или «host.dhcp.example.com», если в global-config в параметре $“hostname-in-zone” стоит false). Если только вы не используете это для своих ручных записей, ничего не перезаписывается.
     
     
     
    midenok
    Guest
    #6
    0
    07.12.2018 19:26:00
    Еще одна реализация: https://github.com/midenok/hardware/blob/master/mikrotik/dhcp-fqdn-my.rsc
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры