Tự thay đổi IP máy chủ DNS trên mikrotik khi một máy chủ DNS bị down

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

  1. Trạng thái bình thường: Router MikroTik sẽ trỏ DNS chính về AdGuard server (VD: 192.168.3.54).
  2. 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”.
  3. 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).
  4. 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:
    1. Vào menu IP -> DNS.
    2. Trong ô Servers, chỉ điền IP của AdGuard server: 192.168.3.54.
    3. Tick vào ô Allow Remote Requests.
    4. Nhấn Apply -> OK.
  • Terminal:
XML
/ip dns set servers=192.168.3.54 allow-remote-requests=yes

Bướ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:
    1. Vào IP -> Firewall -> tab NAT.
    2. Nhấn nút + để thêm rule mới.
    3. Tab General:
      • Chain: dstnat
      • Protocol: tcp
      • Dst. Port: 53
      • In. Interface: bridge (hoặc tên bridge LAN của bạn)
    4. Tab Action:
      • Action: redirect
      • To Ports: 53
    5. Nhấn Apply, sau đó nhấn Copy và tạo một rule y hệt nhưng đổi Protocol thành udp.
  • Terminal:
XML
/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 ý: Thay bridge bằ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:
    1. Vào menu Tools -> Netwatch.
    2. Nhấn nút + để thêm một host giám sát mới.
    3. 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)
    4. Tab Down (Chạy khi AdGuard server không phản hồi):
      • Dán đoạn script sau vào ô On Down:
XML
/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:
XML
/ip dns set servers=192.168.3.54 :log info "AdGuard DNS is back online, restoring settings"
  • Nhấn Apply -> OK.
  • Terminal:
XML
/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

  1. Để 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).
  2. Sau khoảng 5-10 giây, vào IP -> DNS trên MikroTik, bạn sẽ thấy ô Servers đã tự động đổi thành 8.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.
  3. 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…”.
  4. Bây giờ, hãy khởi động lại máy chủ AdGuard.
  5. 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 -> Servers tự động đổi về 192.168.3.54. Log cũng sẽ có thông báo “AdGuard DNS is back online…”.
0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x