Trong bài viết này mình sẽ đề cập đến việc Cấu Hình Dynamic DNS Trên Router Mikrotik đối với NO-IP.
Mặc định, Mikrotik trang bị sẵn Cloud trên Router của họ. Khi bật lên tính năng này lên thiết bị sẽ khởi tạo tên miền giúp chúng ta có thể remote từ xa. Tuy nhiên, trong trường hợp triển khai cho khách hàng, khách hàng cần tên miền mang tính gợi nhớ để có thể nhớ và remote từ xa. Cloud Mikrotik khởi tạo rất dài và khó nhớ. Bài viết này sẽ giải quyết vấn đề này bằng cách cập nhật địa chỉ IP lên DDNS NO-IP.

Qui trình hoạt động trong thủ thuật này như sau:
1. Script thực thi các lệnh để kiểm tra IP Public trên Router có sự thay đổi so với trước đó không?
Nếu có, thực hiện cập nhật IP Public mới lên HOST NO-IP. Nếu không, không làm gì cả.
2. Script không tự khởi chạy, vì vậy lập lịch chạy Script với chu kỳ 5 phút/lần.

Các bước thực hiện như sau:
Bước 1: Tạo mới Script . Trên giao diện Winbox, menu trái và truy cập system->script



Sau đó nhấn vào dấu + để tạo mới Script. Mọi người đặt tên cho Script(tùy ý)và dán tập lệnh vào phần Source. Lệnh trong Script mình sẽ upload cuối bài.

Sau khi đặt tên và dán lệnh vào mọi người nhấn “Apply”->”OK”

Bước 2: Lập lịch chạy Script. Trên giao diện Winbox, menu trái và truy cập system->scheduler



Sau đó nhấn vào dấu + để tạo mới lịch. Mọi người đặt tên cho lịch(tùy ý). Interval: là khoảng thời gian lập lại, thời gian giữa 2 lần thực thi.
On Event: Mọi người gán tên Script muốn chạy ở đây hoặc lệnh “/system script run DDNS”
hoặc có thể dán các lệnh vào đây để thực thi luôn và không cần tạo Script trước đó.
Trong ví dụ này tên Script là “DDNS” và mình sẽ chỉ gán tên Script này vào trong mục “On Event”



Sau khi xong mọi người nhấn “Apply”->”OK”

Cuối cùng là Script. Script được viết lại bởi KTV Công ty Sao Thiên Vương. Có thể áp dụng trên RouterGateway và Router behind NAT.

Code:
#Thong tin tai khoan NO-IP va HOST.
:local username "no-ip-user"
:local password "no-ip-pass"
:local host "no-ip-host"
#Cac dong ben duoi khong thay doi.
:global OldIP
/ip cloud force-update
:delay 5
:local NewIP [/ip cloud get public-address]
:log info "No-IP: NewIP = $NewIP"
:if ($NewIP != $OldIP) do={
:log info "No-IP: New IP $NewIP is not equal to Old IP, update needed"
:set OldIP $NewIP
:local url "https://dynupdate.no-ip.com/nic/update/?myip=$NewIP&hostname=$host"
:log info "No-IP: Sending update for $host"
/tool fetch url=$url user=$username password=$password mode=https keep-result=no
:log info "No-IP: Host $host updated on No-IP with IP $NewIP"
} else={
:log info "No-IP: update not needed "
}

Chúc mọi người thành công!