Đối với trường hợp VPS nằm cùng mạng có thể tham khảo tại bài viết tạo DDNS với n8n và Cloudflare. Tuy nhiên, nếu mạng công ty không có VPS thì làm như thế nào để check sự thay đổi của DDNS? Tình huống mạng dùng Draytek Vigor 2925 và DDNS của dynu.com (không cần renew thường xuyên).
Cron – kiểm tra định kỳ
Node: Cron
Gợi ý:
- 5 phút / 10 phút là hợp lý
- DDNS không cần check quá nhanh
🔹 1. Query DNS
Cách ổn định nhất: dùng DNS over HTTPS
Node: HTTP Request
- Method:
GET - URL (Google DNS):
https://dns.google/resolve
- Query Params:
| Key | Value |
|---|---|
| name | ddns.freeddns.org |
| type | A |
hoặc dùng
GET https://dns.google/resolve?name=ddns.freeddns.org&type=A
📥 Response mẫu
{
"Answer": [
{
"name": "ddns.freeddns.org.",
"type": 1,
"TTL": 60,
"data": "203.113.xxx.xxx"
}
]
}
🔹 2. Lấy IP
Node: Set
| Field | Value |
|---|---|
| ip | {{ $json.Answer[0].data }} |
hoặc dùng
ip = {{ $json.Answer[0].data }}
🔹 3. So sánh & lưu IP (Code node)
Code Node:
const staticData = $getWorkflowStaticData('global');
const currentIp = $json.ip;
const oldIp = staticData.ddns_ip ?? null;
let changed = false;
if (oldIp === null) {
// lần đầu chạy
staticData.ddns_ip = currentIp;
} else if (currentIp !== oldIp) {
changed = true;
staticData.ddns_ip = currentIp;
}
return [{
json: {
changed,
currentIp,
oldIp
}
}];
🔹 4. IF
Condition:
{{ $json.changed === true }}
🔹 5. Gửi thông báo
Message:
🔔 DNS IP thay đổi
Host: ddns.freeddns.org
IP cũ: {{ $json.oldIp }}
IP mới: {{ $json.currentIp }}
Thời gian: {{ $now }}