<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mikrotik.moscow [тема: [Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать]</title>
		<link>http://mikrotik.moscow</link>
		<description>Новое в теме [Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать форума RouterOS на сайте Mikrotik.moscow [mikrotik.moscow]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Tue, 04 Aug 2026 17:59:29 -0400</pubDate>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429667">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Моя мысль в том, что без правила masquerade это должно быть невозможно. Ни один из моих клиентов не может получить доступ к каким-либо доменам, если стоит только то единственное правило, которое вы упомянули, чтобы перенаправлять DNS на ваш pihole. Вы используете стандартные правила брандмауэра из версии 6.48? Есть ли у вас другие настроенные правила NAT? Я спрашивал об этом на голландском форуме, и там подтвердили, что без правила masquerade это работать не может. <br />
			<i>13.02.2021 23:31:00, zilexa.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429667</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429667</guid>
			<pubDate>Sat, 13 Feb 2021 23:31:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429666">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Привет, zilexa! У меня версия 6.48. Да, это моя маленькая домашняя сеть — всего одна подсеть, и всё находится в ней. Да, я читал твои предыдущие сообщения, и именно этого я хочу и уже имею! Каждый клиент обращается к Pi по своему полному доменному имени. Например, я вижу в запросах pihole, что мой мобильный телефон запрашивает "OnePlus7T.home.arpa". Думаю, проблема в правиле srcnat masquerading (кто-то ранее об этом упоминал). При маскарадинге все запросы, похоже, идут от твоего роутера. А это совсем не то, чего ты хочешь. Привет! <br />
			<i>12.02.2021 17:44:00, Ddram.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429666</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429666</guid>
			<pubDate>Fri, 12 Feb 2021 17:44:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429665">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			@Ddram, спасибо, что опубликовал это. Можешь, пожалуйста, подтвердить пару моментов? Какая версия RouterOS у тебя стоит? У тебя только одна подсеть/диапазон DHCP, верно? Значит, и PiHole, и клиенты в локальной сети у тебя находятся в одном и том же IP-диапазоне. В PiHole ты видишь DNS-запросы и красивые статистики по каждому клиенту? Или эта схема означает, что PiHole будет «видеть» все DNS-запросы просто, как будто они идут от роутера? Потому что мне очень важно иметь статистику по каждому отдельному клиенту, и я верю, что твое решение работает, но в PiHole будет казаться, что у тебя только один клиент — ведь все запросы идут от роутера? <br />
			<i>12.02.2021 09:13:00, zilexa.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429665</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429665</guid>
			<pubDate>Fri, 12 Feb 2021 09:13:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429664">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Привет! У меня тут тоже были проблемы. Мой Pi-Hole настроен с unbound на порту 5335 для разрешения через DNS-Root-серверы. Решение, которое работает у меня, я взял из другой темы тут: <noindex><a href="http://forum.mikrotik.com/t/pi-hole-forced-dns-redirection-with-failover-script/145290/1" target="_blank" rel="nofollow" >http://forum.mikrotik.com/t/pi-hole-forced-dns-redirection-with-failover-script/145290/1</a></noindex> и немного изменил под свою конфигурацию и некоторые мои размышления. Моя конфигурация: RB2011iL: 192.168.0.1 с двумя внешними DNS-серверами (1.1.1.1, 1.0.0.1) Pi-Hole: 192.168.0.250 DHCP-диапазон: 192.168.0.0/24, Pi-Hole в качестве DNS Своими руками добавил два NAT-правила, чтобы перехватывать все DNS-запросы и направлять их на мой сконфигурированный сервер.<br /><br />6 &nbsp;;;; Mikrotik forced &nbsp;<br /> &nbsp; &nbsp; &nbsp;chain=dstnat action=dst-nat to-addresses=192.168.0.1 &nbsp;<br /> &nbsp; &nbsp; &nbsp;protocol=udp src-address=!192.168.0.1 &nbsp;<br /> &nbsp; &nbsp; &nbsp;dst-address=!192.168.0.1 in-interface=bridge dst-port=53 &nbsp;<br /> &nbsp; &nbsp; &nbsp;log=no log-prefix="" &nbsp;<br /><br />7 &nbsp;;;; pihole forced &nbsp;<br /> &nbsp; &nbsp; &nbsp;chain=dstnat action=dst-nat to-addresses=192.168.0.250 &nbsp;<br /> &nbsp; &nbsp; &nbsp;protocol=udp src-address=!192.168.0.250 &nbsp;<br /> &nbsp; &nbsp; &nbsp;dst-address=!192.168.0.250 in-interface=bridge &nbsp;<br /> &nbsp; &nbsp; &nbsp;dst-port=53 log=no log-prefix=""<br /><br />Чтобы проверить работу pi-hole, у меня настроено задание в планировщике, которое каждые 5 минут резолвит google.com через pihole. Если возникает ошибка, правило NAT для pihole отключается, а правило для mikrotik включается:<br /><br />:local piholedown [/ip firewall nat get value-name=disabled [find comment="pihole forced"]]  <br />:local piholeDNS "192.168.0.250" &nbsp;<br />:local testDomain "www.google.com"<br /><br />:if ($piholedown = false) do={ &nbsp;<br /> &nbsp; &nbsp;:do { &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;:resolve $testDomain server $piholeDNS &nbsp;<br /> &nbsp; &nbsp;} on-error={ &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip firewall nat; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;disable [find comment="pihole forced"];  <br /> &nbsp; &nbsp; &nbsp; &nbsp;enable [find comment="Mikrotik forced"];  <br /> &nbsp; &nbsp;} &nbsp;<br />} else={ &nbsp;<br /> &nbsp; &nbsp;:do { &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;:resolve $testDomain server $piholeDNS; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip firewall nat; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;enable [find comment="pihole forced"];  <br /> &nbsp; &nbsp; &nbsp; &nbsp;disable [find comment="Mikrotik forced"];  <br /> &nbsp; &nbsp;} on-error={} &nbsp;<br />}<br /><br />Короче, pi-hole — это мой стандарт, и только в случае ошибки происходит принудительная переадресация DNS на роутер с внешними DNS-серверами. Может, тебе стоит попробовать (надеюсь, удачно).<br /><br />Как я уже сказал, изначальная идея взята отсюда: <noindex><a href="http://forum.mikrotik.com/t/pi-hole-forced-dns-redirection-with-failover-script/145290/1" target="_blank" rel="nofollow" >http://forum.mikrotik.com/t/pi-hole-forced-dns-redirection-with-failover-script/145290/1</a></noindex><br /><br />Хорошего дня! &nbsp;<br />P.S. Английский — не мой родной язык, так что не судите строго, может быть какая-то чепуха. <br />
			<i>09.02.2021 15:38:00, Ddram.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429664</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429664</guid>
			<pubDate>Tue, 09 Feb 2021 15:38:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429663">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Хорошо, просто для теста я добавил правило masquerade под теми двумя правилами, что ты дал: add action=masquerade chain=srcnat src-address=192.168.88.0/24 dst-address-list=192.168.88.2 dst-port=53 protocol=udp. Теперь работает, НО Pihole видит все запросы, идущие с моего роутера. К сожалению, нет статистики по каждому клиенту отдельно. Без этого правила masquerade клиенты вообще не могут разрешать домены. Как только я отключаю правило masquerade, всё перестаёт работать. <br />
			<i>29.01.2021 16:06:00, zilexa.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429663</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429663</guid>
			<pubDate>Fri, 29 Jan 2021 16:06:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429662">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Извините, но это действительно не работает: роутер на 192.168.88.1, у меня есть сервер/NAS/рабочая станция на 192.168.88.2. VLAN или другие сети, кроме 192.168.88.0/24, не настроены. IP &gt; DNS: публичный DNS-сервер (9.9.9.9) и включена опция "Allow Remote Requests". IP &gt; DHCP Server &gt; Networks &gt; 192.168.88.0/24 &gt; 192.168.88.1 (сам роутер).<br /><br />chain=dstnat protocol=udp src-address=192.168.88.2 dst-port=53<br /><br />```text<br />dstnat action=dst-nat to-addresses=192.168.88.2 protocol=udp src-address=192.168.88.0/24 dst-address=!192.168.88.2 dst-port=53<br />```<br /><br />Короткое правило стоит выше длинного. Они находятся вверху моего списка NAT, ниже этих двух правил осталось всего несколько правил проброса портов (к моему серверу на 192.168.88.2). Правила фаервола — просто стандартные. Я использую RouterOS 6.48 stable. <br />
			<i>29.01.2021 11:16:00, zilexa.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429662</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429662</guid>
			<pubDate>Fri, 29 Jan 2021 11:16:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429661">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Вы можете получить количество DHCP-серверов, которые используют pihole в качестве DNS-сервера, с помощью команды: &nbsp;<br />:local currentDHCPDNS [/ip dhcp-server network print count-only where dns-server=$piholeDNS]  <br />и принять решение на основании этого: &nbsp;<br />:if ($currentDHCPDNS = 0) ... &nbsp;<br /><br />Другой вариант — вместо скрипта использовать инструмент netwatch: &nbsp;<br />/tool netwatch add host=$piholeDNS up-script=[/ip dhcp-server network set dns-server=$piholeDNS] down-script=[/ip dhcp-server network set dns-server=$backupDNS]  <br /><br />Главный минус обоих методов в том, что клиенты заметят изменения только после обновления DHCP-аренды. В зависимости от времени аренды это может занять довольно много времени (по умолчанию 10 минут). <br />
			<i>22.01.2021 07:23:00, hollerauer.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429661</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429661</guid>
			<pubDate>Fri, 22 Jan 2021 07:23:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429660">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Привет! Я успешно использую PiHole для улучшения ситуации с рекламой и пытаюсь настроить какой-то скрипт с резервным вариантом на случай, если мой Pi перестанет работать. Mikrotik для меня не в новинку, но в скриптинге я пока новичок. Сейчас немного застрял, потому что не хочу менять DNS для всей системы, а только для клиентов, которые используют DHCP. &nbsp;<br /><br />Я использовал такой код, чтобы переключаться с piholeDNS на backupDNS: &nbsp;<br /><br />:local piholeDNS "192.168.88.6" &nbsp;<br />:local backupDNS "8.8.8.8,8.8.4.4" &nbsp;<br />:local currentDHCPDNS []  <br /><br />:if ([/ping $piholeDNS count=20] =0) do={  <br /> &nbsp; &nbsp;:log info "Сервер PiHole недоступен, меняю DNS-сервер для DHCP-клиентов на запасной." &nbsp;<br /> &nbsp; &nbsp;/ip dhcp-server network set [find] dns-server=$backupDNS;  <br />} else={ &nbsp;<br /> &nbsp; &nbsp;:log info "Сервер PiHole доступен, менять ничего не нужно." &nbsp;<br />} &nbsp;<br /><br />Этот код позволяет моему MK менять DNS для DHCP-клиентов. Это не идеально, потому что когда мой Pi снова в сети, автоматического переключения с backupDNS обратно на piholeDNS не происходит. Сейчас я добавил в блок else такую строку: &nbsp;<br /><br />/ip dhcp-server network set [find] dns-server=$piholeDNS;  <br /><br />Это работает... но проблема в том, что срабатывает каждый раз, и в логах я вижу, что DNS меняется постоянно. Такое поведение не оптимально, и я бы хотел, чтобы смена происходила только если у DHCP-клиентов сейчас стоит не piholeDNS. &nbsp;<br /><br />Вот тут я и застрял, потому что не нашёл, как получить информацию только о текущем DNS в DHCP. Пытался создать локальную переменную, в которую сохранял значение: &nbsp;<br /><br />:local currentDHCPDNS [/ip dhcp-server network get [find dns-server]]  <br /><br />Это не работает, поэтому пробовал: &nbsp;<br /><br />:local currentDHCPDNS [/ip dhcp-server network get dns-server]  <br /><br />Но, похоже, я не могу понять, как достать нужную инфу. Можете, пожалуйста, подсказать, как получить текущее значение DHCP DNS? Большое спасибо! <br />
			<i>15.01.2021 15:59:00, LordTMortis.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429660</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429660</guid>
			<pubDate>Fri, 15 Jan 2021 15:59:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429659">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Ты прав. Именно это я и имел в виду под $YourFavoritePublicDNSServers$ — например, 1.1.1.1, 1.0.0.1 и так далее. &nbsp;<br /><br />Сценарий 1 — слегка изменённый, чтобы добавить fallback (самого скрипта пока нет): меняю IP &gt; DNS на 1.1.1.1 (необходимо для fallback-сценария). Добавляю NAT-правило: &nbsp;<br />/ip firewall nat add chain=dstnat action=dst-nat to-addresses=192.168.88.2 protocol=udp src-address=192.168.88.0/24 dst-address=!192.168.88.2 dst-port=53 comment="pihole" &nbsp;<br /><br />Проблема 1: &nbsp;<br />После добавления NAT-правила мои клиенты больше не могут разрешать DNS, даже если отключить и заново подключить их. &nbsp;<br /><br />Параметры выставлены правильно, но твой кейс отличается от моего. У меня pihole находится в другом IP-сегменте (10.0.0.0/8). Если роутер Mikrotik — твой интернет-шлюз, он будет «зацикливать» DNS-трафик (UDP порт 53) обратно на pihole. &nbsp;<br />Тебе нужно второе правило, которое должно стоять выше правила с pihole (то есть обрабатываться первым): &nbsp;<br /><br />ip firewall nat add chain=dstnat src-address=192.168.88.2 protocol=udp dst-port=53 comment="traffic pihole to www" &nbsp;<br /><br />Проблема 2: &nbsp;<br />В твоём правиле есть dst-address=!$YourPiHoleAddress$ — я не уверен, что это значит, но не исключает ли это сервер? Мне нужен мой сервер для других задач, которые требуют разрешения доменных имён. То есть, если DNS-трафик идёт напрямую на твой сервер, он исключён из этого правила. Тебе стоит настроить сервер так, чтобы в качестве DNS он использовал 127.0.0.1. &nbsp;<br /><br />EDIT: чтобы всё вообще заработало, также нужно добавить правило маскарадинга: &nbsp;<br />add action=masquerade chain=srcnat src-address=192.168.88.0/24 dst-address-list=192.168.88.2 dst-port=53 protocol=udp &nbsp;<br /><br />Это неверно. Маскарадинг, srcnat или редирект не нужны. Маскарадинг — особая версия srcnat, предназначенная для трафика из LAN во внешний интернет с меняющимся публичным IP. Правило dstnat само перенаправит DNS-трафик обратно на устройство. Это работает так: &nbsp;<br />- Устройство A запрашивает у Mikrotik (DNS-сервер назначен по DHCP) разрешение домена example.com &nbsp;<br />- Mikrotik получает запрос и проверяет, есть ли для него правило firewall (nat) — правило (pihole) есть &nbsp;<br />- Mikrotik перенаправляет запрос pihole от имени устройства A &nbsp;<br />- Pihole отвечает Mikrotik и просит переслать ответ обратно устройству A &nbsp;<br />- Mikrotik получает ответ, проверяет, есть ли для него правило firewall (nat) &nbsp;<br />- Mikrotik пересылает ответ pihole устройству A &nbsp;<br /><br />Попробуй добавить в своей конфигурации дополнительное NAT-правило. Если всё заработает, я отредактирую свой исходный пост. <br />
			<i>14.01.2021 19:14:00, hollerauer.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429659</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429659</guid>
			<pubDate>Thu, 14 Jan 2021 19:14:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429658">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Без использования fallback-скрипта: правило NAT работает не так, как ожидалось. <br /><br />Сценарий 1, моя рабочая ситуация без fallback: &nbsp;<br />IP роутера: 192.168.88.1 с IP &gt; DHCP сервер &gt; DNS установлен на 192.168.88.1 &nbsp;<br />IP &gt; DNS установлен на 192.168.88.2 &nbsp;<br />Мой (Ubuntu) сервер с PiHole имеет IP 192.168.88.2. &nbsp;<br />В этом случае интернет работает.<br /><br />Сценарий 1, изменённый для поддержки fallback (пока без самого скрипта): &nbsp;<br />Я меняю IP &gt; DNS на 1.1.1.1 (необходимо для сценария с fallback). &nbsp;<br />Добавляю правило NAT: &nbsp;<br />/ip firewall nat add chain=dstnat action=dst-nat to-addresses=192.168.88.2 protocol=udp src-address=192.168.88.0/24 dst-address=!192.168.88.2 dst-port=53 comment="pihole"<br /><br />Проблема 1: &nbsp;<br />После добавления правила NAT, мои клиенты больше не могут разрешать DNS-адреса. Даже перезагрузка подключения не помогает.<br /><br />Проблема 2: &nbsp;<br />Ваше правило содержит dst-address=!$YourPiHoleAddress$, не очень понятно, что это значит, но разве это не исключает сервер? Мне всё ещё нужен этот сервер для других задач, где требуется разрешение доменов. Очень хотелось бы, чтобы ваше правило NAT заработало.<br /><br />ДОПОЛНЕНИЕ: &nbsp;<br />Чтобы правило вообще работало, нужно добавить маскарадинг: &nbsp;<br />add action=masquerade chain=srcnat src-address=192.168.88.0/24 dst-address-list=192.168.88.2 dst-port=53 protocol=udp<br /><br />Но даже тогда сервер с Pi-Hole не может разрешать домены. И кажется, что ни одно из моих устройств не работает. Как только я отключаю ваше правило NAT и маскарадинг — всё снова работает. <br />
			<i>14.01.2021 15:50:00, zilexa.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429658</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429658</guid>
			<pubDate>Thu, 14 Jan 2021 15:50:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429657">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			!! Из-за случайных сбоев (в моей установке), влияющих на DNS-запросы, НЕ рекомендуется использовать предложенную конфигурацию в ПРОИЗВОДСТВЕННОЙ среде. Этот пост будет обновлён после устранения проблемы!!<br /><br />Этот скрипт — именно то, что я искал. Хочу поделиться ещё более изящным способом интеграции Pi-Hole в вашу локальную сеть.<br /><br />Сценарий использования: Настроить mikrotik как DNS-сервер для ваших LAN(-сегментов)<br /><br />/ip dns set allow-remote-requests=yes servers=$YourPrefferedPublicDNSServers$;<br />/ip dhcp-server network set dns-server=$YourMikrotikLANAddress$<br /><br />Добавьте NAT правило для каждого LAN(-сегмента), чтобы перенаправлять любой трафик с LAN(-сегмента), связанный с UDP портом 53, на Pi-Hole. Прокомментируйте правило как “pihole”.<br /><br />/ip firewall nat add chain=dstnat action=dst-nat to-addresses=$YourPiHoleAddress$ protocol=udp src-address=$YourLANSegment$ dst-address=!$YourPiHoleAddress$ dst-port=53 comment="pihole"<br /><br />Добавьте скрипт для переключения (включения|отключения) NAT правила:<br /><br />local piholeDNS "$YourPiHoleAddress$"<br />local testDomain "www.example.com"<br />local piholeRulesEnabled [/ip firewall nat print count-only where comment~"pihole" && !disabled]<br /><br />if ($piholeRulesEnabled &gt; 0)<br />do={<br /> &nbsp; &nbsp;:do {:resolve $testDomain server=$piholeDNS}<br /> &nbsp; &nbsp;on-error={/ip firewall nat disable [find comment~"pihole"]}<br />}<br />else={<br /> &nbsp; &nbsp;:do {<br /> &nbsp; &nbsp; &nbsp; &nbsp;:resolve $testDomain server=$piholeDNS;<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip firewall nat enable [find comment~"pihole"]<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;on-error={}<br />}<br /><br />Добавьте планировщик для запуска скрипта по расписанию<br /><br />Преимущества:<br />- Все DNS-запросы (даже от клиентов, где изменить DNS-сервер нельзя) перенаправляются на Pi-Hole<br />- Pi-Hole "видит" всех клиентов LAN<br />- Резервный вариант, если Pi-Hole недоступен<br /><br />!! Из-за случайных сбоев (в моей установке), влияющих на DNS-запросы, НЕ рекомендуется использовать предложенную конфигурацию в ПРОИЗВОДСТВЕННОЙ среде. Этот пост будет обновлён после устранения проблемы!! <br />
			<i>06.01.2021 11:52:00, hollerauer.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429657</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429657</guid>
			<pubDate>Wed, 06 Jan 2021 11:52:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429656">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Да, это можно сделать. Задайте это как новый вопрос. <br />
			<i>18.08.2020 20:00:00, Jotne.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429656</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429656</guid>
			<pubDate>Tue, 18 Aug 2020 20:00:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429655">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Пожалуйста, помогите, можно ли автоматически менять MAC-адрес с помощью скрипта каждый день?.. Кстати, спасибо всем, кто сможет помочь. <br />
			<i>11.08.2020 17:04:00, Dennypr.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429655</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429655</guid>
			<pubDate>Tue, 11 Aug 2020 17:04:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429654">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			О, вау, это идеально для меня! Я использую локальный DNS-сервер Unbound для производительности и, как и ты, понял, что единственный надежный способ заставить Mikrotik использовать локальный DNS — выставить только один DNS-сервер. Раньше уже обжигался, забывая поменять DNS при обслуживании сервера. Хорошо знать, что у меня будет резерв на случай, если сервер вдруг реально упадёт. <br />
			<i>11.08.2020 10:05:00, TDJ211.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429654</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429654</guid>
			<pubDate>Tue, 11 Aug 2020 10:05:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429653">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Большое спасибо, именно то, что я искал, и очень полезно. Даже если будет небольшой простой из-за еще не закончившегося времени аренды, это гарантирует, что всё рано или поздно снова запустится. Так что если меня не будет дома, жена не будет переживать. Отлично! (Кстати, использую вместе с adGuard, но это, конечно, не важно) <br />
			<i>29.07.2020 07:25:00, ladegro.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429653</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429653</guid>
			<pubDate>Wed, 29 Jul 2020 07:25:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429652">[Скрипт] Автоматическая смена DNS, если Pi-hole перестал работать</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Я написал скрипт, который отслеживает, когда Pi-Hole перестаёт работать, и автоматически переключается на публичные DNS 1.1.1.2, 1.0.0.2. Отступление: я знаю, что можно указать несколько DNS-серверов, но чтобы Pi-Hole работал, нужно указывать только IP-адрес Pi-Hole. Сценарий использования: Настройка Mikrotik и RPI с Pi-Hole. Когда RPI падает, у всех в локальной сети интернет «отваливается», а этого никому не хочется. Добавьте скрипт на Mikrotik, который определит, что Pi-Hole перестал резолвить запросы, и переключит все DNS-настройки на Mikrotik на публичные DNS, например, 1.1.1.2, 1.0.0.2. А ещё уведомит вас, что RPI не работает. Второй RPI стоит денег и не приносит пользы, кроме высокой доступности, так что этот вариант не подходит.<br /><br />Вариант 1 — меняет только DNS-сервер у роутера. Предполагается, что все устройства используют роутер как единственный DNS-сервер:<br /><br />:local currentDNS [/ip dns get server]<br />:local piholeDNS "192.168.0.50"<br />:local backupDNS "1.1.1.2,1.0.0.2"<br />:local testDomain "www.google.com"<br /><br />:if ($currentDNS = $piholeDNS) do={<br /> &nbsp; &nbsp;:do {<br /> &nbsp; &nbsp; &nbsp; &nbsp;:resolve $testDomain server $piholeDNS<br /> &nbsp; &nbsp;} on-error={<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip dns set servers=$backupDNS<br /> &nbsp; &nbsp;}<br />} else={<br /> &nbsp; &nbsp;:do {<br /> &nbsp; &nbsp; &nbsp; &nbsp;:resolve $testDomain server $piholeDNS<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip dns set servers=$piholeDNS<br /> &nbsp; &nbsp;} on-error={}<br />}<br /><br />Вариант 2 — меняет только DNS-сервер у роутера + уведомляет вас о падении Pi-Hole через Telegram-бота. Предполагается, что все устройства используют роутер как единственный DNS-сервер:<br /><br />:local telegramBotKey "XXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"<br />:local chatID "XXXXXXXXX"<br /><br />:local currentDNS [/ip dns get server]<br />:local piholeDNS "192.168.0.50"<br />:local backupDNS "1.1.1.2,1.0.0.2"<br />:local testDomain "www.google.com"<br /><br />:if ($currentDNS = $piholeDNS) do={<br /> &nbsp; &nbsp;:do {<br /> &nbsp; &nbsp; &nbsp; &nbsp;:resolve $testDomain server $piholeDNS<br /> &nbsp; &nbsp;} on-error={<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip dns set servers=$backupDNS<br /> &nbsp; &nbsp; &nbsp; &nbsp;/tool fetch "https://api.telegram.org/bot$telegramBotKey/sendmessage?chat_id=$chatID&text=Pi-Hole не работает! Смена DNS с $currentDNS на $backupDNS." keep-result=no<br /> &nbsp; &nbsp;}<br />} else={<br /> &nbsp; &nbsp;:do {<br /> &nbsp; &nbsp; &nbsp; &nbsp;:resolve $testDomain server $piholeDNS<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip dns set servers=$piholeDNS<br /> &nbsp; &nbsp; &nbsp; &nbsp;/tool fetch "https://api.telegram.org/bot$telegramBotKey/sendmessage?chat_id=$chatID&text=Pi-Hole снова работает. Смена DNS с $currentDNS на $piholeDNS." keep-result=no<br /> &nbsp; &nbsp;} on-error={}<br />}<br /><br />Вариант 3 — меняет DNS-сервер у роутера и во всех сетях (IP → DHCP Server → Networks). В зависимости от времени аренды, DNS обновится не сразу у всех клиентов, зато Pi-Hole сможет показывать, кто им пользуется:<br /><br />:local currentDNS [/ip dns get server]<br />:local piholeDNS "192.168.0.50"<br />:local backupDNS "1.1.1.2,1.0.0.2"<br />:local testDomain "www.google.com"<br /><br />:if ($currentDNS = $piholeDNS) do={<br /> &nbsp; &nbsp;:do {<br /> &nbsp; &nbsp; &nbsp; &nbsp;:resolve $testDomain server $piholeDNS<br /> &nbsp; &nbsp;} on-error={<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip dns set servers=$backupDNS<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip dhcp-server network set [find] dns-server=$backupDNS;<br /> &nbsp; &nbsp;}<br />} else={<br /> &nbsp; &nbsp;:do {<br /> &nbsp; &nbsp; &nbsp; &nbsp;:resolve $testDomain server $piholeDNS<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip dns set servers=$piholeDNS<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip dhcp-server network set [find] dns-server=$piholeDNS;<br /> &nbsp; &nbsp;} on-error={}<br />}<br /><br />Вариант 4 — меняет DNS-сервер у роутера и во всех сетях (IP → DHCP Server → Networks) + уведомляет вас через Telegram-бота, когда Pi-Hole падает. Обновление DNS у клиентов зависит от времени аренды, но позволяет Pi-Hole показывать, кто им пользуется:<br /><br />:local telegramBotKey "XXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"<br />:local chatID "XXXXXXXXX"<br /><br />:local currentDNS [/ip dns get server]<br />:local piholeDNS "192.168.0.50"<br />:local backupDNS "1.1.1.2,1.0.0.2"<br />:local testDomain "www.google.com"<br /><br />:if ($currentDNS = $piholeDNS) do={<br /> &nbsp; &nbsp;:do {<br /> &nbsp; &nbsp; &nbsp; &nbsp;:resolve $testDomain server $piholeDNS<br /> &nbsp; &nbsp;} on-error={<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip dns set servers=$backupDNS<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip dhcp-server network set [find] dns-server=$backupDNS;<br /> &nbsp; &nbsp; &nbsp; &nbsp;/tool fetch "https://api.telegram.org/bot$telegramBotKey/sendmessage?chat_id=$chatID&text=Pi-Hole не работает! Смена DNS с $currentDNS на $backupDNS." keep-result=no<br /> &nbsp; &nbsp;}<br />} else={<br /> &nbsp; &nbsp;:do {<br /> &nbsp; &nbsp; &nbsp; &nbsp;:resolve $testDomain server $piholeDNS<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip dns set servers=$piholeDNS<br /> &nbsp; &nbsp; &nbsp; &nbsp;/ip dhcp-server network set [find] dns-server=$piholeDNS;<br /> &nbsp; &nbsp; &nbsp; &nbsp;/tool fetch "https://api.telegram.org/bot$telegramBotKey/sendmessage?chat_id=$chatID&text=Pi-Hole снова работает. Смена DNS с $currentDNS на $piholeDNS." keep-result=no<br /> &nbsp; &nbsp;} on-error={}<br />}<br /><br />Использование: В системе → планировщик → добавить. Интервал поставить 00:00:30, любое имя, и вставить скрипт в поле «On Event:». Не забудьте заменить значения переменных под свой IP-адрес Pi-Hole.<br /><br />ИЗМЕНЕНИЕ: Обновил скрипты согласно комментариям и предложил больше вариантов. <br />
			<i>31.05.2020 11:44:00, erkexzcx.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429652</link>
			<guid>http://mikrotik.moscow/forum/forum57/88718-skript_-avtomaticheskaya-smena-dns_-esli-pi_hole-perestal-rabotat/message429652</guid>
			<pubDate>Sun, 31 May 2020 11:44:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
	</channel>
</rss>
