<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mikrotik.moscow [тема: Ещё один скрипт для преобразования DHCP в DNS]</title>
		<link>http://mikrotik.moscow</link>
		<description>Новое в теме Ещё один скрипт для преобразования DHCP в DNS форума RouterOS на сайте Mikrotik.moscow [mikrotik.moscow]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Tue, 11 Aug 2026 21:11:06 -0400</pubDate>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388896">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Спасибо за ответ. На Windows-машинах настройки DNS получают автоматически через DHCP, WINS включён, но на моём старом DD-WRT всё прекрасно работало. Нужно разобраться, как настроить внутренний DNS (есть какие-то советы?). <br />
			<i>03.12.2019 17:47:00, revamp.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388896</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388896</guid>
			<pubDate>Tue, 03 Dec 2019 17:47:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388895">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Насколько я понимаю, ваша проблема в том, что машины (m1, m2 и m3) используют 9.9.9.9 в качестве DNS-сервера. Им нужно использовать mikrotik как DNS-сервер. Тогда они смогут разрешать m1.rev.local, а запросы DNS для публичных доменов (например, google.com) будут перенаправляться на 9.9.9.9. Думаю, вы даже можете пинговать m1 или m2, но .rev.local берётся из службы WINS. (Если я правильно понимаю, у вас Windows в качестве операционной системы?) Вы можете изменить DNS-сервер, который они получают, в разделе DHCP. <br />
			<i>03.12.2019 17:31:00, mniewiera.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388895</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388895</guid>
			<pubDate>Tue, 03 Dec 2019 17:31:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388894">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Нужна помощь. Я только что перешёл на MikroTik, и этот пост — именно то, что мне было нужно. После добавления скрипта я вижу в логах, что FQDN имена установлены правильно. Но с клиентов пинг по FQDN не проходит (пинг просто по имени хоста работает нормально).<br /><br />Вот моя конфигурация: ether4 (10.9.7.0/24) с назначенным скриптом и доменом «rev.local». Есть две машины на Windows со статическими адресами:<br />M1 – 10.9.7.11<br />M2 – 10.9.7.12<br /><br />Машины получают правильные IP, но DNS-сервер у них установлен 9.9.9.9 (на WAN-интерфейсе).<br /><br />Когда с M1 пробую:<br />ping M2.rev.local — не разрешается…<br />ping M2 — возвращается 10.9.7.2 и пинг проходит нормально.<br /><br />То же самое с M2.<br /><br />Однако из терминала winBox на обеих машинах M1 и M2 пинг по M1.rev.local и M2.rev.local проходит без проблем.<br /><br />Ещё одно наблюдение: есть M3 без статического адреса (получает 10.9.8.131) — с неё пингуются M1 и M2, но не M1.rev.local.<br /><br />Что-то я упускаю? <br />
			<i>03.12.2019 12:20:00, revamp.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388894</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388894</guid>
			<pubDate>Tue, 03 Dec 2019 12:20:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388893">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			В итоге сам же и ответил на свой вопрос. Скрипт выдавала ошибку, потому что у меня не был задан локальный домен. Задал — и теперь все работает. Большое спасибо. <br />
			<i>01.09.2019 10:46:00, dca1.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388893</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388893</guid>
			<pubDate>Sun, 01 Sep 2019 10:46:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388892">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Кто-нибудь может подсказать, что я здесь делаю не так? Я разместил этот скрипт в разделе «Lease Script» в окне настройки DHCP-сервера. Я вижу, что аренды обновляются, но при этом ничего не добавляется в статические DNS-записи. Я также пробовал добавить скрипт отдельно и в качестве Lease Script указать команду /system script run dhcptodns. Просто не понимаю, как это правильно настроить... <br />
			<i>31.08.2019 12:01:00, dca1.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388892</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388892</guid>
			<pubDate>Sat, 31 Aug 2019 12:01:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388891">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Отлично! Именно то, что мне было нужно! <br />
			<i>13.01.2019 18:04:00, xrlls.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388891</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388891</guid>
			<pubDate>Sun, 13 Jan 2019 18:04:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388890">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Гораздо лучший сценарий, чем все предыдущие. Это точно должно быть в вики. <br />
			<i>15.08.2018 12:06:00, emk2203.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388890</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388890</guid>
			<pubDate>Wed, 15 Aug 2018 12:06:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388889">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Это именно то, что мне было нужно. Спасибо. Всё работает как и ожидалось. <br />
			<i>11.02.2018 04:25:00, phin.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388889</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388889</guid>
			<pubDate>Sun, 11 Feb 2018 04:25:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388888">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			На самом деле устанавливать TTL DNS равным времени аренды не имеет смысла и только приводит к неожиданному поведению, особенно при длительных периодах аренды. <br />
			<i>10.09.2020 12:06:00, nescafe2002.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388888</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388888</guid>
			<pubDate>Thu, 10 Sep 2020 12:06:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388887">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Хорошо, я заметил, что с моим изменением в кеш DNS создаются только те аренды, у которых установлен собственный lease-time, поэтому используйте вместо этого:<br /><br />/ip dhcp-server lease &nbsp;<br />:set ttl [get [find address=$leaseActIP] lease-time]  <br />:if ([:len $ttl] &lt;= 0) do={  <br /> &nbsp; &nbsp;/ip dhcp-server &nbsp;<br /> &nbsp; &nbsp;:set ttl [get [find name=$leaseServerName] lease-time]  <br />} <br />
			<i>10.09.2020 10:57:00, Smoerrebroed.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388887</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388887</guid>
			<pubDate>Thu, 10 Sep 2020 10:57:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388886">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Отличный скрипт! Единственная проблема, с которой я столкнулся, — он автоматически устанавливает одинаковое время аренды для всех (даже для статических) лизов, а так может быть не всегда. Поэтому я заменил<br /><br />/ip dhcp-server &nbsp;<br />:set ttl [ get [ find name=$leaseServerName ] lease-time ]  <br />network &nbsp;<br /><br />на<br /><br />/ip dhcp-server lease &nbsp;<br />:set ttl [ get [ find address=$leaseActIP ] lease-time ]  <br />/ip dhcp-server network &nbsp;<br /><br />Кроме этого, большое спасибо за участие и помощь! <br />
			<i>07.09.2020 08:16:00, Smoerrebroed.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388886</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388886</guid>
			<pubDate>Mon, 07 Sep 2020 08:16:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388885">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Согласен. <br />
			<i>11.07.2020 07:25:00, HiltonT.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388885</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388885</guid>
			<pubDate>Sat, 11 Jul 2020 07:25:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388884">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Спасибо за скрипт. Он определённо должен быть в официальной документации. Я создал немного изменённую версию:<br /><br />Удаляю пробелы и символы \00 из имён хостов в DHCP-лизах перед объединением с доменом для формирования полного DNS-имени (FQDN). Некоторые DHCP-клиенты, в моём случае умные коммутаторы Zyxel, регистрируются с именами хостов, содержащими пробелы и завершающие символы \00 (скорее всего, это ошибка прошивки Zyxel).<br /><br />Генерирую имя хоста для DHCP-клиентов с пустыми именами, чтобы создать статическую DNS A-запись для всех клиентов. Большинство устройств на Android начиная с версии 8 не передают имена хостов в DHCP-запросах. Мне нравится, когда для всех клиентов работает DNS.<br /><br />Делаю префикс логов настраиваемым: &nbsp;<br />:local DHCPtag &nbsp; "#*# Created by DHCP2DNS #*#" &nbsp;<br />:local LogPrefix "DHCP2DNS ($leaseServerName)"<br /><br />### &nbsp;<br /># Функции<br /><br /># Удаляет \0 и пробелы из строки, переданной как inStr=&lt;строка&gt; &nbsp;<br />:local trimString do=\<br />{ &nbsp;<br /> &nbsp;:local outStr &nbsp;<br /> &nbsp;:for i from=0 to=([:len $inStr] - 1) do=\<br /> &nbsp;{ &nbsp;<br /> &nbsp; &nbsp;:local tmp [:pick $inStr $i];  <br /> &nbsp; &nbsp;:if (($tmp !=" ") and ($tmp !="\00")) do=\<br /> &nbsp; &nbsp;{ &nbsp;<br /> &nbsp; &nbsp; &nbsp;:set outStr ($outStr . $tmp) &nbsp;<br /> &nbsp; &nbsp;} &nbsp;<br /> &nbsp;} &nbsp;<br /> &nbsp;:return $outStr &nbsp;<br />}<br /><br /># "a.b.c.d" -&gt; "a-b-c-d" для IP-адресов, используемых как заменитель отсутствующих имён хостов &nbsp;<br />:local ip2Host do=\<br />{ &nbsp;<br /> &nbsp;:local outStr &nbsp;<br /> &nbsp;:for i from=0 to=([:len $inStr] - 1) do=\<br /> &nbsp;{ &nbsp;<br /> &nbsp; &nbsp;:local tmp [:pick $inStr $i];  <br /> &nbsp; &nbsp;:if ($tmp =".") do=\<br /> &nbsp; &nbsp;{ &nbsp;<br /> &nbsp; &nbsp; &nbsp;:set tmp "-" &nbsp;<br /> &nbsp; &nbsp;} &nbsp;<br /> &nbsp; &nbsp;:set outStr ($outStr . $tmp) &nbsp;<br /> &nbsp;} &nbsp;<br /> &nbsp;:return $outStr &nbsp;<br />}<br /><br />### &nbsp;<br /># Точка входа скрипта &nbsp;<br /># Ожидаемые переменные окружения: &nbsp;<br /># leaseBound &nbsp; &nbsp; &nbsp; &nbsp; 1 = лиз добавлен, 0 = лиз удалён &nbsp;<br /># leaseServerName &nbsp; &nbsp;имя DHCP-сервера &nbsp;<br /># leaseActIP &nbsp; &nbsp; &nbsp; &nbsp; IP-адрес DHCP-клиента<br /><br />:if ( [ :len $leaseActIP ] &lt;= 0 ) do=\<br />{ &nbsp;<br /> &nbsp;:log error "$LogPrefix: пустой IP-адрес лиза" &nbsp;<br /> &nbsp;:error "пустой IP-адрес лиза" &nbsp;<br />}<br /><br />:if ( $leaseBound = 1 ) do=\<br />{ &nbsp;<br /> &nbsp;# новый лиз DHCP добавлен<br /><br /> &nbsp;/ip dhcp-server &nbsp;<br /> &nbsp;:local ttl [ get [ find name=$leaseServerName ] lease-time ]  <br /> &nbsp;network &nbsp;<br /> &nbsp;:local domain [ get [ find $leaseActIP in address ] domain ]  <br /> &nbsp;:set domain [ $trimString inStr=$domain ]<br /><br /> &nbsp;.. lease &nbsp;<br /> &nbsp;:local leaseId [ find address=$leaseActIP ]<br /><br /> &nbsp;# Проверяем наличие нескольких активных лизов с одним IP. Это странно и не должно быть, но на всякий случай. &nbsp;<br /> &nbsp;:if ( [ :len $leaseId ] != 1) do=\<br /> &nbsp;{ &nbsp;<br /> &nbsp; &nbsp;:log warning "$LogPrefix: Несколько активных DHCP-лизов для '$leaseActIP' (???)" &nbsp;<br /> &nbsp; &nbsp;:error "Несколько активных DHCP-лизов для '$leaseActIP' (???)" &nbsp;<br /> &nbsp;} &nbsp;<br /> &nbsp;:local hostname [ get $leaseId host-name ]  <br /> &nbsp;:set hostname [ $trimString inStr=$hostname ]<br /> &nbsp;<br /> &nbsp;:if ( [ :len $hostname ] &lt;= 0 ) do=\<br /> &nbsp;{ &nbsp;<br /> &nbsp; &nbsp;:set hostname [ $ip2Host inStr=$leaseActIP ]  <br /> &nbsp; &nbsp;:log info "$LogPrefix: Пустое имя хоста для '$leaseActIP', используем сгенерированное имя '$hostname'" &nbsp;<br /> &nbsp;} &nbsp;<br /> &nbsp;:if ( [ :len $domain ] &lt;= 0 ) do=\<br /> &nbsp;{ &nbsp;<br /> &nbsp; &nbsp;:log warning "$LogPrefix: Пустое доменное имя для '$leaseActIP', не могу создать статическое DNS-имя" &nbsp;<br /> &nbsp; &nbsp;:error "Пустое доменное имя для '$leaseActIP'" &nbsp;<br /> &nbsp;}<br /><br /> &nbsp;:local fqdn ($hostname . "." . &nbsp;$domain)<br /><br /> &nbsp;/ip dns static &nbsp;<br /> &nbsp;:if ( [ :len [ find name=$fqdn and address=$leaseActIP and disabled=no ] ] = 0 ) do=\<br /> &nbsp;{ &nbsp;<br /> &nbsp; &nbsp;add address=$leaseActIP name=$fqdn ttl=$ttl comment=$DHCPtag disabled=no &nbsp;<br /> &nbsp; &nbsp;:log info "$LogPrefix: Статическое доменное имя '$fqdn' создано для '$leaseActIP' с ttl '$ttl'" &nbsp;<br /> &nbsp;}\<br /> &nbsp;else=\<br /> &nbsp;{ &nbsp;<br /> &nbsp; &nbsp;:log warning "$LogPrefix: '$fqdn' уже существует, не могу создать статическое DNS-имя для '$leaseActIP'" &nbsp;<br /> &nbsp; &nbsp;:error "$LogPrefix: '$fqdn' уже существует" &nbsp;<br /> &nbsp;} &nbsp;<br />}\<br />else=\<br />{ &nbsp;<br /> &nbsp;# DHCP-лиз удалён<br /><br /> &nbsp;/ip dns static &nbsp;<br /> &nbsp;:local dnsDhcpId &nbsp;<br /> &nbsp;:set dnsDhcpId [ find address=$leaseActIP and comment=$DHCPtag ]  <br /> &nbsp;:if ( [ :len $dnsDhcpId ] &gt; 0 ) do=\<br /> &nbsp;{ &nbsp;<br /> &nbsp; &nbsp;remove $dnsDhcpId &nbsp;<br /> &nbsp; &nbsp;:log info "$LogPrefix: Статические DNS-имена для '$leaseActIP' удалены" &nbsp;<br /> &nbsp;} &nbsp;<br />}<br /><br />Для большей гибкости этот скрипт можно сохранить как /system script. Это позволит использовать один и тот же скрипт на всех DHCP-серверах для удобства поддержки, просто добавив небольшой обёрточный скрипт в свойство lease script сервера DHCP:<br /><br />:local scriptName "dhcp2dns.rsc" &nbsp;<br />:do { &nbsp;<br /> &nbsp;:local scriptSrc [ /system script get [ find name=$scriptName ] source ]  <br /> &nbsp;:local scriptObj [ :parse $scriptSrc ]  <br /> &nbsp;$scriptObj leaseBound=$leaseBound leaseServerName=$leaseServerName leaseActIP=$leaseActIP &nbsp;<br />} on-error={ :log warning "Ошибка скрипта lease сервера DHCP '$leaseServerName'" };<br /><br />Тестировалось на RB4011 V6.47.1 <br />
			<i>05.07.2020 19:50:00, jbl42.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388884</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388884</guid>
			<pubDate>Sun, 05 Jul 2020 19:50:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388883">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Кто-нибудь имеет обновлённую версию этого? У меня оно не работает на 6.47. Спасибо. <br />
			<i>02.07.2020 16:32:00, RackKing.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388883</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388883</guid>
			<pubDate>Thu, 02 Jul 2020 16:32:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388882">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Публикую это, возможно, кому-то поможет. На моём RouterOS v6.46.5 у меня были проблемы со скриптом: в логах появлялись сообщения вроде DHCP2DNS: не регистрируется доменное имя для адреса xxx.yyy.&gt; <noindex><a href="http://www.zzz" target="_blank" rel="nofollow" >www.zzz</a></noindex> &gt; из-за пустого lease host-name или комментария у некоторых устройств. Оказалось, что имя хоста не считывалось в таком вызове: set hostname [ get $leaseId host-name ], поэтому я решил добавить строку: if ( [ :len $hostname ] &lt;= 0 ) do={ :set hostname $"lease-hostname" }. В итоге в скрипте получилось так:<br /><br />if ( [ :len $hostname ] &lt;= 0 ) do={ :set hostname $comment }<br /><br />if ( [ :len $hostname ] &lt;= 0 ) do={ :set hostname $"lease-hostname" } <br />
			<i>26.04.2020 12:48:00, sebaz.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388882</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388882</guid>
			<pubDate>Sun, 26 Apr 2020 12:48:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388881">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			В долгосрочной версии 6.45.8 всё работает отлично. Нужно поместить этот скрипт в Lease Script DHCP-сервера — он будет вызываться автоматически при выдаче новых аренды. Единственное, что я заметил — скрипт не запускается при продлении адреса (после истечения срока), а только когда хост запрашивает новую аренду. <br />
			<i>15.04.2020 16:41:00, willianwrm.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388881</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388881</guid>
			<pubDate>Wed, 15 Apr 2020 16:41:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388880">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Здравствуйте, это сломано? При запуске скрипта появляется следующая ошибка: «empty lease address». Похоже, это связано со значением: if ( [ :len $leaseActIP ] &lt;= 0 ) do={ :error “empty lease address” }. Возможно, Mikrotik изменил, удалил или переименовал эту переменную? <br />
			<i>03.02.2020 06:33:00, Ameeno.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388880</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388880</guid>
			<pubDate>Mon, 03 Feb 2020 06:33:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388879">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Думаю, с вашим DNS всё в порядке, раз он работал через winbox. Значит, на ваших клиентских устройствах в качестве DNS-сервера стоит 9.9.9.9? Если да, то так не сработает. Потому что 9.9.9.9 не может разрешать ваши внутренние DNS-записи. Это может делать только Mikrotik. Если DNS установлен на 9.9.9.9, и эта настройка приходит с DHCP-сервера, тогда нужно изменить то, что им назначается. Я так понимаю, ваш DHCP-сервер — тоже Mikrotik? Если да, то нужно поправить конфигурацию DHCP-сервера на Mikrotik. Так как сейчас у меня нет доступа к устройству Mikrotik, не могу точно сказать, куда там заходить. Но на вики Mikrotik, скорее всего, есть полезная статья по этому вопросу. Так что пока вам изучать, как работает DNS, не обязательно. По моему мнению, проблема именно в DHCP. <br />
			<i>03.12.2019 20:04:00, mniewiera.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388879</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388879</guid>
			<pubDate>Tue, 03 Dec 2019 20:04:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388878">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Кто-нибудь, выложите самый свежий и лучший скрипт на вики. <br />
			<i>12.09.2020 18:56:00, neutronlaser.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388878</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388878</guid>
			<pubDate>Sat, 12 Sep 2020 18:56:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ещё один скрипт для преобразования DHCP в DNS</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388877">Ещё один скрипт для преобразования DHCP в DNS</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Этот скрипт предназначен для работы в качестве lease-скрипта DHCP-сервера и управляет (регистрирует или удаляет) статические DNS-записи в соответствии с выделением или истечением аренды DHCP. Скрипт регистрирует только полностью квалифицированные доменные имена (FQDN). Часть имени хоста в регистрируемом FQDN — это значение свойства «host-name» аренды или свойства «comment», если «host-name» пустое. Часть домена — это значение свойства «domain» соответствующей сети DHCP-сервера. Скрипт не регистрирует DNS-записи с некорректными FQDN, у которых пустая или неопределённая часть хоста или домена. Также скрипт не регистрирует DNS-запись, если запись с таким же IP-адресом или FQDN уже существует в статической DNS-базе маршрутизатора. Управляемые скриптом статические DNS-записи имеют тег #DHCP в комментарии, чтобы отличать их от созданных вручную. TTL регистрируемой DNS-записи совпадает с TTL соответствующей аренды DHCP. При истечении аренды DHCP скрипт удаляет соответствующую DNS-запись с таким же IP-адресом, помеченную комментарием #DHCP. Скрипт логирует различные ошибки и информационные сообщения с тегом DHCP2DNS. Логируемые сообщения понятны сами по себе. Скрипт должен быть создан как стандартный системный скрипт. Чтобы скрипт запускался для данного DHCP-сервера, его имя должно быть назначено свойству «lease-script» этого сервера. Исходный код далее:<br /><br />:local DHCPtag &nbsp;<br />:set DHCPtag "#DHCP"<br /><br />:if ( [ :len $leaseActIP ] &lt;= 0 ) do={ :error "пустой адрес аренды" }<br /><br />:if ( $leaseBound = 1 ) do=\<br />{<br /> &nbsp;:local ttl &nbsp;<br /> &nbsp;:local domain &nbsp;<br /> &nbsp;:local hostname &nbsp;<br /> &nbsp;:local fqdn &nbsp;<br /> &nbsp;:local leaseId &nbsp;<br /> &nbsp;:local comment<br /><br /> &nbsp;/ip dhcp-server &nbsp;<br /> &nbsp;:set ttl [ get [ find name=$leaseServerName ] lease-time ]  <br /> &nbsp;network &nbsp;<br /> &nbsp;:set domain [ get [ find $leaseActIP in address ] domain ]  <br /> &nbsp;<br /> &nbsp;.. lease &nbsp;<br /> &nbsp;:set leaseId [ find address=$leaseActIP ]<br /><br /> &nbsp;# Проверка на множественные активные аренды для одного IP. Странно, но на всякий случай.<br /><br /> &nbsp;:if ( [ :len $leaseId ] != 1) do=\<br /> &nbsp;{ &nbsp;<br /> &nbsp; :log info "DHCP2DNS: не регистрируем доменное имя для адреса $leaseActIP из-за множественных активных аренд для $leaseActIP" &nbsp;<br /> &nbsp; :error "множественные активные аренды для $leaseActIP" &nbsp;<br /> &nbsp;} &nbsp;<br /><br /> &nbsp;:set hostname [ get $leaseId host-name ]  <br /> &nbsp;:set comment [ get $leaseId comment ]  <br /> &nbsp;/<br /><br /> &nbsp;:if ( [ :len $hostname ] &lt;= 0 ) do={ :set hostname $comment }<br /><br /> &nbsp;:if ( [ :len $hostname ] &lt;= 0 ) do=\<br /> &nbsp;{ &nbsp;<br /> &nbsp; &nbsp;:log error "DHCP2DNS: не регистрируем доменное имя для адреса $leaseActIP из-за пустого host-name или comment аренды" &nbsp;<br /> &nbsp; &nbsp;:error "пустое host-name или comment аренды" &nbsp;<br /> &nbsp;} &nbsp;<br /> &nbsp;:if ( [ :len $domain ] &lt;= 0 ) do=\<br /> &nbsp;{ &nbsp;<br /> &nbsp; &nbsp;:log error "DHCP2DNS: не регистрируем доменное имя для адреса $leaseActIP из-за пустого доменного имени сети" &nbsp;<br /> &nbsp; &nbsp;:error "пустое доменное имя сети" &nbsp;<br /> &nbsp;}<br /><br /> &nbsp;:set fqdn "$hostname.$domain"<br /> &nbsp;<br /> &nbsp;/ip dns static &nbsp;<br /> &nbsp;:if ( [ :len [ find name=$fqdn and address=$leaseActIP and disabled=no ] ] = 0 ) do=\<br /> &nbsp;{ &nbsp;<br /> &nbsp; &nbsp;:log info "DHCP2DNS: регистрируем статическое доменное имя $fqdn для адреса $leaseActIP с ttl $ttl" &nbsp;<br /> &nbsp; &nbsp;add address=$leaseActIP name=$fqdn ttl=$ttl comment=$DHCPtag disabled=no &nbsp;<br /> &nbsp;} else=\<br /> &nbsp;{ &nbsp;<br /> &nbsp; &nbsp;:log error "DHCP2DNS: не регистрируем доменное имя $fqdn для адреса $leaseActIP, так как уже существует активная статическая DNS-запись с таким именем или адресом" &nbsp;<br /> &nbsp;} &nbsp;<br /> &nbsp;/<br />} \<br />else=\<br />{<br /> &nbsp;/ip dns static &nbsp;<br /> &nbsp;:local dnsDhcpId &nbsp;<br /> &nbsp;:set dnsDhcpId [ find address=$leaseActIP and comment=$DHCPtag ]<br /><br /> &nbsp;:if ( [ :len $dnsDhcpId ] &gt; 0 ) do=\<br /> &nbsp;{ &nbsp;<br /> &nbsp; &nbsp;:log info "DHCP2DNS: удаляем статическое доменное имя(ена) для адреса $leaseActIP" &nbsp;<br /> &nbsp; &nbsp;remove $dnsDhcpId &nbsp;<br /> &nbsp;} &nbsp;<br /> &nbsp;/<br />} <br />
			<i>10.03.2017 20:51:00, dse.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388877</link>
			<guid>http://mikrotik.moscow/forum/forum57/84664-eshchye-odin-skript-dlya-preobrazovaniya-dhcp-v-dns/message388877</guid>
			<pubDate>Fri, 10 Mar 2017 20:51:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
	</channel>
</rss>
