DNS Healthcheck script

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Нашёл на оф. форуме. Может кому пригодится ...

###### Make sure you have static routes to force your dns queries out a given wan (WAN1 and WAN2)
###### define variables

https://forum.mikrotik.com/viewtopic.php?t=188784

:local sysname [/system identity get name];

:local dnsServers {"8.8.8.8" ; "8.8.4.4"}
:local TestDomains {"mikrotik.com" ; "google.com" ; "srrtiop.com"}
:local numDomains [:len $TestDomains]
:local failCount
:local failoverthreshold 2
:global retval
:global counter 0

:global DNSFail do={
:put $DnsServer
:local routeID [/ip route find where dst-address=$DnsServer]
:put $routeID
};

:global TestDNS do={

:do {
:put "entered function with args $DnsServer and $Domain"
###### test resolution
:put [:resolve $Domain server $DnsServer];

###### generate syslog messages
/log info "Primary DNS $DnsServer healthcheck completed, no issues";
#Enable the routing table for WAN1
:return (1)
} on-error={
:put "resolver failed";

###### generate syslog messages
/log info "name resolution using primary DNS $DnsServer failed";
/log info "we would generally disable this WAN connection";

#take down the routing tabe for WAN1
:return (0)
}
};



:put "Number of domains to check $$numDomains"

:foreach dnsServer in=$dnsServers do={
:foreach TestDomain in=$TestDomains do={
:set retval [$TestDNS DnsServer=$dnsServer Domain=$TestDomain]
:if ($retval=0) do={
:set failCount ($failCount + 1)
};
:put $failCount
:if ($failcount>$failoverthreshold) do={
$DNSFail DnsServer=$dnsServer
} else={
:put "Dns healthcheck complete for $dnsServer"
};
#reset the fail counter for the next address
:set failCount 0
};
};


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить