====== Mikrotik: скрипт CheckDNS ====== Простой скрипт для проверки доступности DNS-серверов и переключения на вторичные в случае недоступности основных. Адреса первичных/вторичных серверов, имя домена для разыменования нужно подставить, разумеется, свои. # Mikrotik router CheckDNS script # E-mail: rtzra@mail.ru # Script check resolving $testDomain for each server in masterDNS # If not resovling - switch to backupDNS server and vice versa :local currentDNS [/ip dns get server] :local masterDNS {"10.1.1.10"; "10.1.2.10"} :local backupDNS {"77.88.8.88"; "77.88.8.2"} :local testDomain "home.local-domain.ru" :local failCount :local maxFails 1 :foreach dnsServer in=$masterDNS do={ :do { :resolve $testDomain server $dnsServer } on-error={ :set failCount ($failCount + 1) } } :if ($failCount>$maxFails) do={ :if ($currentDNS = $masterDNS) do={ :log warning "Internal DNS resolving NOT OK, switch to External DNS" /ip dns set servers=$backupDNS; } else={ :log warning "Internal DNS resolving NOT OK, still using External DNS" } } else={ :if ($currentDNS = $masterDNS) do={ } else={ :log warning "Internal DNS resolving OK, switch to Internal DNS" /ip dns set servers=$masterDNS; } }; {{tag>mikrotik dns check_availability проверка_доступности}}