Giới Thiệu
Nếu bạn đang vận hành một homelab tại nhà và có địa chỉ IP động từ nhà cung cấp dịch vụ Internet (ISP), bạn sẽ gặp khó khăn khi truy cập từ xa vì IP có thể thay đổi theo thời gian. Giải pháp đơn giản là sử dụng Cloudflare để tự động cập nhật IP động vào tên miền của bạn, giúp truy cập homelab một cách ổn định. Bài viết này sẽ hướng dẫn bạn cách thực hiện chi tiết và tối ưu nhất.
1. Tại Sao Cần Cập Nhật IP Động Cho Homelab?
Hầu hết các ISP không cung cấp địa chỉ IP tĩnh miễn phí, dẫn đến việc IP thay đổi sau một khoảng thời gian nhất định. Điều này khiến việc truy cập từ xa vào homelab trở nên khó khăn, vì địa chỉ IP bạn sử dụng hôm nay có thể không còn hợp lệ vào ngày mai. Bằng cách cập nhật IP động lên Cloudflare, bạn có thể:
- Truy cập homelab từ bất cứ đâu thông qua tên miền.
- Tránh mất kết nối khi ISP thay đổi địa chỉ IP.
- Dễ dàng thiết lập dịch vụ VPN, máy chủ web hoặc bất kỳ ứng dụng nào trong homelab.
2. Cách Cập Nhật IP Động Tự Động Trên Cloudflare
Để tự động cập nhật IP mới lên Cloudflare, bạn có thể sử dụng một script chạy định kỳ trên máy chủ hoặc thiết bị trong mạng nội bộ.
Bước 1: Lấy Thông Tin Cần Thiết
Trước khi tạo script, bạn cần chuẩn bị các thông tin sau:
- Tên miền bạn muốn cập nhật (ví dụ:
homelab.example.com
). - API Token từ Cloudflare (được cấp quyền cập nhật DNS).
- Zone ID và Record Name của bản ghi DNS cần cập nhật.
API Token và Zone ID mình đã hướng dẫn bạn có thể xem tại đây
Còn Record Name: bạn lấy chính tên miền của bạn luôn nhé
Bước 2: Viết script cập nhật IP động
Tạo một file script trên aaPanel (hoặc server của bạn), ví dụ:
/root/update_ip_cloudflare.sh
Dưới đây là một script đơn giản để cập nhật IP động trên Cloudflare:
#!/bin/bash
# Cấu hình thông tin Cloudflare
auth_token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # Thay bằng API Token của bạn
zone_identifier="xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # Lấy từ Cloudflare Dashboard
record_name="blogeai.com" # Tên miền cần cập nhật
proxied=true # Bật (true) hoặc tắt (false) proxy của Cloudflare
# Lấy IP Public hiện tại
ip=$(curl -s https://api64.ipify.org)
if [[ -z "$ip" ]]; then
echo "[ERROR] Không thể lấy địa chỉ IP hiện tại!"
exit 1
else
echo "[INFO] IP Public hiện tại: $ip"
fi
# Lấy thông tin bản ghi DNS từ Cloudflare
record_info=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records?name=$record_name&type=A" \
-H "Authorization: Bearer $auth_token" \
-H "Content-Type: application/json")
# Kiểm tra xem bản ghi có tồn tại không
record_count=$(echo "$record_info" | jq -r '.result | length')
if [[ "$record_count" -eq 0 ]]; then
echo "[ERROR] Không tìm thấy bản ghi DNS cho $record_name!"
exit 1
fi
# Lấy ID và IP hiện tại của bản ghi DNS
record_identifier=$(echo "$record_info" | jq -r '.result[0].id')
old_ip=$(echo "$record_info" | jq -r '.result[0].content')
echo "[INFO] IP hiện tại trên Cloudflare: $old_ip"
# Kiểm tra xem IP có thay đổi không
if [[ "$ip" == "$old_ip" ]]; then
echo "[INFO] IP không thay đổi. Không cần cập nhật."
exit 0
fi
echo "[INFO] IP đã thay đổi từ $old_ip → $ip. Đang cập nhật..."
# Cập nhật IP trên Cloudflare
update_response=$(curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records/$record_identifier" \
-H "Authorization: Bearer $auth_token" \
-H "Content-Type: application/json" \
--data "{\"type\":\"A\",\"name\":\"$record_name\",\"content\":\"$ip\",\"ttl\":120,\"proxied\":$proxied}")
# Kiểm tra kết quả cập nhật
if echo "$update_response" | grep -q '"success":true'; then
echo "[SUCCESS] Cập nhật thành công! IP mới: $ip (Proxy: $proxied)"
else
echo "[ERROR] Lỗi khi cập nhật IP! Phản hồi từ Cloudflare: $update_response"
exit 1
fi
Lưu ý:
- Thay
auth_token
bằng API Token đã tạo. - Lấy
ZONE_ID
vàRECORD_ID
đã lấy được theo hướng dẫn trên
Bước 3: Test xem Script đã chạy đúng chưa
Thiết lập quyền thực thi cho file update_ip_cloudflare.sh
chmod +X update_ip_cloudflare.sh
- Nếu chưa có
jq
, cài đặt bằng:
# Debian/Ubuntu
apt install jq -y
# CentOS
yum install jq -y
Gõ lệnh sau để chạy thử
bash /www/root/update_ip_cloudflare.sh
Sửa đường dẫn /www/root/ cho phù hợp

Như hình là đã Thành Công rồi nhé
Bước 4: Thiết Lập Chạy Script Tự Động
Để đảm bảo IP luôn được cập nhật, bạn có thể thiết lập cronjob trên Linux hoặc Task Scheduler trên Windows.
Trên Linux (Sử Dụng Cronjob)
Chạy lệnh sau để mở trình chỉnh sửa cronjob:
crontab -e
Thêm dòng sau để chạy script mỗi 5 phút:
*/5 * * * * /bin/bash /www/root/update_ip_cloudflare.sh
Trên Windows (Sử Dụng Task Scheduler)
- Mở Task Scheduler và tạo một tác vụ mới.
- Chọn Trigger chạy mỗi 5 phút.
- Trong phần Action, chọn Start a program và nhập đường dẫn tới script Python.
Trên aapanel cũng sử dụng Cron job

- Các bạn cấu hình như hình trên là chạy đúng

3. Kiểm Tra Và Khắc Phục Sự Cố
Kiểm Tra Lịch Sử Cập Nhật DNS
Bạn có thể kiểm tra lịch sử cập nhật IP trong Cloudflare bằng cách:
- Truy cập Cloudflare Dashboard.
- Chọn Domain → DNS.
- Xem bản ghi A của domain có được cập nhật đúng IP hay không.
Lỗi Thường Gặp Và Cách Khắc Phục
- Lỗi Unauthorized (403): Kiểm tra lại API Token có quyền chỉnh sửa DNS không.
- IP không cập nhật: Xác nhận script chạy đúng bằng cách chạy thủ công.
- Sai Record ID: Kiểm tra lại ID của bản ghi DNS bạn muốn cập nhật.
4. Kết Luận
Cập nhật IP động cho tên miền qua Cloudflare là một giải pháp hiệu quả để đảm bảo kết nối ổn định với homelab tại nhà. Chỉ cần một lần thiết lập, bạn có thể yên tâm truy cập từ xa mà không lo IP thay đổi. Nếu bạn gặp bất kỳ vấn đề nào, hãy để lại bình luận để được hỗ trợ!
Hy vọng bài viết này hữu ích. Nếu bạn thấy hay, đừng quên chia sẻ để giúp nhiều người khác biết đến giải pháp này nhé!