Mình sử dụng một máy ảo làm Adguard để chặn quảng cáo. Vấn đề mình gặp phải là khi máy chủ Adguard đó bị down thì toàn bộ mạng nhà bạn sẽ không truy cập được ra internet nữa, nếu muốn phải cấu hình DNS thủ công. Chính vì thế mình muốn hệ thống của mình tự thay đổi IP máy chủ DNS khi máy DNS adguard có sự cố nào đó để duy trì kết nối ra internet liên tục kết hợp với router Mikrotik. Dưới đây là bài viết hướng dẫn các bạn cách làm
Giải pháp tối ưu và bền vững cho vấn đề này trên MikroTik là sử dụng công cụ Netwatch để tự động giám sát AdGuard server và thay đổi DNS khi cần thiết. Netwatch sẽ liên tục kiểm tra xem AdGuard server có “sống” hay không, và thực thi các kịch bản (script) tương ứng.
Dưới đây là hướng dẫn chi tiết, từng bước để cấu hình.
Nguyên tắc hoạt động
- Trạng thái bình thường: Router MikroTik sẽ trỏ DNS chính về AdGuard server (
VD: 192.168.3.54). - Phát hiện sự cố: Netwatch liên tục ping đến
192.168.3.54. Nếu không nhận được phản hồi (timeout), nó sẽ coi như AdGuard server đã “down”. - Chuyển đổi dự phòng (Failover): Ngay khi phát hiện AdGuard “down”, Netwatch sẽ chạy một script để đổi DNS của router sang
8.8.8.8(hoặc một DNS công cộng khác). Mạng của bạn sẽ kết nối Internet trở lại (nhưng không có chặn quảng cáo). - Khôi phục (Restore): Khi AdGuard server hoạt động trở lại và Netwatch ping thấy, nó sẽ chạy một script khác để tự động đổi DNS của router về lại
192.168.3.54. Việc chặn quảng cáo được khôi phục.

Hướng dẫn cấu hình chi tiết
Bạn có thể làm theo qua giao diện WinBox/WebFig hoặc dùng lệnh trong Terminal. Tôi sẽ cung cấp cả hai cách.
Bước 1: Cấu hình DNS ban đầu cho MikroTik
Đảm bảo rằng hiện tại router của bạn đang dùng AdGuard làm DNS chính.
- WinBox/WebFig:
- Vào menu
IP->DNS. - Trong ô
Servers, chỉ điền IP của AdGuard server:192.168.3.54. - Tick vào ô
Allow Remote Requests. - Nhấn
Apply->OK.
- Vào menu
- Terminal:
/ip dns set servers=192.168.3.54 allow-remote-requests=yesBước 2: (Nếu bạn cần, không thì thôi) Bắt buộc Client dùng DNS của Router
Để đảm bảo mọi thiết bị trong mạng đều đi qua hệ thống DNS này (và AdGuard), bạn nên tạo một quy tắc NAT để “bắt” toàn bộ truy vấn DNS (port 53) và chuyển hướng nó về router.
- WinBox/WebFig:
- Vào
IP->Firewall-> tabNAT. - Nhấn nút
+để thêm rule mới. - Tab General:
Chain:dstnatProtocol:tcpDst. Port:53In. Interface:bridge(hoặc tên bridge LAN của bạn)
- Tab Action:
Action:redirectTo Ports:53
- Nhấn
Apply, sau đó nhấnCopyvà tạo một rule y hệt nhưng đổiProtocolthànhudp.
- Vào
- Terminal:
/ip firewall nat add action=redirect chain=dstnat dst-port=53 in-interface=bridge protocol=tcp to-ports=53 comment="Force DNS TCP" add action=redirect chain=dstnat dst-port=53 in-interface=bridge protocol=udp to-ports=53 comment="Force DNS UDP"Lưu ý: Thaybridgebằng tên interface bridge LAN thực tế của bạn nếu khác.
Bước 3: Cấu hình Netwatch để giám sát và chuyển đổi
Đây là bước cốt lõi của giải pháp.
- WinBox/WebFig:
- Vào menu
Tools->Netwatch. - Nhấn nút
+để thêm một host giám sát mới. - Tab Host:
Host:192.168.3.54(IP của AdGuard server)Interval:00:00:05(kiểm tra mỗi 5 giây, có thể tùy chỉnh)
- Tab Down (Chạy khi AdGuard server không phản hồi):
- Dán đoạn script sau vào ô
On Down:
- Dán đoạn script sau vào ô
- Vào menu
/ip dns set servers=8.8.8.8,1.1.1.1 :log info "AdGuard DNS is down, switching to Google DNS"- Tab Up (Chạy khi AdGuard server hoạt động trở lại):
- Dán đoạn script sau vào ô
On Up:
- Dán đoạn script sau vào ô
/ip dns set servers=192.168.3.54 :log info "AdGuard DNS is back online, restoring settings"- Nhấn
Apply->OK. - Terminal:
/tool netwatch add host=192.168.3.54 interval=5s \ on-down="/ip dns set servers=8.8.8.8,1.1.1.1; :log info \"AdGuard DNS is down, switching to Google DNS\"" \ on-up="/ip dns set servers=192.168.3.54; :log info \"AdGuard DNS is back online, restoring settings\""Kiểm tra hoạt động
- Để kiểm tra, bạn hãy thử tắt nguồn hoặc rút dây mạng của máy chủ AdGuard (
192.168.3.54). - Sau khoảng 5-10 giây, vào
IP->DNStrên MikroTik, bạn sẽ thấy ôServersđã tự động đổi thành8.8.8.8,1.1.1.1. Lúc này các thiết bị trong mạng vẫn vào Internet bình thường. - Bạn cũng có thể xem log của router tại menu
Logđể thấy thông báo “AdGuard DNS is down…”. - Bây giờ, hãy khởi động lại máy chủ AdGuard.
- Sau khi AdGuard khởi động xong và có mạng, chờ khoảng 5-10 giây, bạn sẽ thấy
IP->DNS->Serverstự động đổi về192.168.3.54. Log cũng sẽ có thông báo “AdGuard DNS is back online…”.

