2020年4月3日 星期五
RouterOS內動態確認DNS Server是否正常, 並切換設定
目的 : 如何動態確認DNS Server是否正常工作,
如果DNS Server不正常工作的時候, 可以動態切換到另外一台DNS Server
場景 : 在架設Adguardhome(or Pi Hole)後, 如何預防Adguarhome server掛點
社區網路 <> RouterOS <> 手機, 電腦, NAS, Adguardhome
家中網路, 都使用Router當作DNS Server, 然後Router是使用Adguardhmoe來當作DNS Server
所以一般裝置的DNS query是
手機/電腦 > DNS query > Router > Adguardhome > Router > 手機/電腦
如何架設Adguardhome, PiHole, RouterOS可以參考
在Synology NAS docker上架設pi-hole來擋廣告(adblock) with RouterOS設定
在Synology NAS docker上架設adguardhome (像是pihole)來擋廣告(adblock)
RouterOS設定DNS Server
想法 : 目前我的Adguardhmoe是透過NAS上的docker來架設, 之後打算用Pi來架設
如果Pi跑起來不穩, Adguardhome掛了, 那不就整個區網內的裝置都無法工作了
所以想要能夠在Adguardhome掛掉的時候, 將Router設定的DNS 從Adguardhome改為用hinet的DNS
後來查了一下, 其實還算好寫
Ref : Mikrotik_Scripting
透過Scheduler來定期跑一段script
script中透過resolver去測試Adguardhome能否正常的將網址轉成ip
能正常轉換 : RouterOS DNS就設為Adguardhome
無法轉換 : RouterOS DNS就設為hinet DNS
Winbox > System > Scheduler, 新增一組
name = dns-check
Interval = 00:01:00, 我是設定1分鐘跑一次, 可以自行調整
On Event = 把下面的Script貼進去
DNSPrivate請改為自己架設Adguardhome的ip
DNSPublic請改為自己網路供應商建議的DNS
TestDomai, 目前是用google去當作測試
#### Script - dns-check START
:local DNSPrivate "192.168.0.88"; #### Adguardhome or PiHole
:local DNSPublic "168.95.1.1,8.8.8.8"; #### hinet
:local TestDomain "www.google.com"
:local DNSCurrent [/ip dns get servers];
:local bIsDNSPrivateOK true
:do {
:put [:resolve $TestDomain server $DNSPrivate];
:set bIsDNSPrivateOK true
#/log info message="resolver with Private DNS $DNSPrivate ok";
} on-error={
:put "resolver failed";
:set bIsDNSPrivateOK false
/log info message="resolver with Private DNS $DNSPrivate failed";
}
:if (true = $bIsDNSPrivateOK) do={
:if ($DNSCurrent != $DNSPrivate) do={
/ip dns set servers=$DNSPrivate;
/log info message="set DNS as DNSPrivate $DNSPrivate";
}
} else={
:if ($DNSCurrent = $DNSPrivate) do={
/ip dns set servers=$DNSPublic;
/log info message="set DNS as DNSPublic $DNSPublic";
}
}
#### Script - dns-check END
如何測試, 可以將scheduler的interval改短一點(10s)
然後去拔掉你的Adguardhome server的網路線
再去Winbox > log去看看有沒有印出"set DNS as DNSPublic $DNSPublic"
網路線插回去, 再看看log有沒有"set DNS as DNSPrivate $DNSPrivate"
訂閱:
張貼留言 (Atom)
在Raspberry Pi 2B上跑Docker, AdguardHome, Bitwarden, RPi-Monitor
在Raspberry Pi 2B上跑Docker, AdguardHome, Bitwarden, RPi-Monitor 請先參考前置準備工作 安裝Raspberry Pi 2B 來跑docker 前置準備 安全性考量, 移除預設pi帳號 Ref : h...
-
之前有搭建L2TP, 比較簡單, 也可以參考一下 RouterOS-架設VPN-l2tp/Ipsec, 用iOS連接 趁最後一天有時間, 也來搭建一下IKEV2 VPN Ref : https://wiki.mikrotik.com/wiki/Manua...
-
(更新, 有搭建IKEV2的範例, 可以參考 RouterOS-架設VPN-IKEV2, 用iOS連接 目的 : 建立l2tp/Ipsec VPN, 讓手機iOS可以連 Ref : https://blog.ladsai.com/mikrotik-routeros-%E...
沒有留言:
張貼留言