Bước 1: Lấy Zone ID và API Token
Việc đầu tiên là bạn vào cloudflare của bạn. Chọn đúng domain bạn cần setup.
- Sau đó copy zone id
- Và bấm vào Get your API Token

Sau đó bạn tiến hành tạo token có quyền update dns zone của bạn. T ại đây bạn bấm Create Token

Và tiến hành chọn temple edit zone DNS. Sau đó bấm chọn Use template.

Và tiến hành phân quyền như trong hình bên dưới. Mặc định phần permission chỉ có 1 row ta phải add thêm 1 row như vậy phần phân quyền lần lượt là Read và edit như bên dưới. Zone resource bạn chọn All zones hoặc chọn đúng domain ta cần edit. Sau đó bấm Continue to summary

Sau đó tiến hành bấm Create Token

Sau đó bấm vào biểu tượng copy để lấy Token ra

Tiếp theo ta vào phần DNS Tạo một record A : home và ip trỏ về 1 ip bất kỳ vd như trong hình mình trỏ

Bước 2: Tạo script powershell bằng notepad ++ với nội dung
#================================================================
# CLOUDFLARE DYNAMIC DNS UPDATER SCRIPT (DEBUG VERSION)
#================================================================
#region CONFIGURATION
$apiToken = "Token-Cua-Ban-Đã-Lấy-Ở-Bước-Trên"
$zoneId = "Zone-ID-Cua-Ban"
$dnsRecordName = "home.tonytechlab.com"
#endregion
#================================================================
# MAIN PROCESSING LOGIC
#================================================================
# Public IP checker URL
$ipCheckUrl = "https://api.ipify.org"
try {
# Get current public WAN IP
Write-Host "Fetching current WAN IP address..."
$currentIp = Invoke-RestMethod -Uri $ipCheckUrl
Write-Host "Current WAN IP is: $currentIp"
# Headers for Cloudflare API authentication
$headers = @{
"Authorization" = "Bearer $apiToken"
"Content-Type" = "application/json"
}
# Get DNS Record details from Cloudflare
Write-Host "Fetching configured IP from Cloudflare for $($dnsRecordName)..."
$dnsRecordUrl = "https://api.cloudflare.com/client/v4/zones/$zoneId/dns_records?type=A&name=$dnsRecordName"
$dnsRecords = Invoke-RestMethod -Uri $dnsRecordUrl -Headers $headers
# Kiểm tra xem có tìm thấy bản ghi nào không
if ($null -eq $dnsRecords.result -or $dnsRecords.result.Count -eq 0) {
throw "ERROR: Could not find any DNS record with the name '$dnsRecordName'."
}
$cloudflareIp = $dnsRecords.result[0].content
$dnsRecordId = $dnsRecords.result[0].id
Write-Host "Cloudflare configured IP is: $cloudflareIp"
# Compare the current IP with the one on Cloudflare
if ($currentIp -eq $cloudflareIp) {
Write-Host "IP has not changed. No update needed."
}
else {
Write-Host "IP has changed! Proceeding with update..."
$updateUrl = "https://api.cloudflare.com/client/v4/zones/$zoneId/dns_records/$dnsRecordId"
#============ DEBUG OUTPUT ============
Write-Host "--------------------------------------------------" -ForegroundColor Yellow
Write-Host "DEBUG INFORMATION:" -ForegroundColor Yellow
Write-Host " -> Zone ID Used: $zoneId" -ForegroundColor Cyan
Write-Host " -> DNS Record Name: $dnsRecordName" -ForegroundColor Cyan
Write-Host " -> DNS Record ID Found: $dnsRecordId" -ForegroundColor Cyan
Write-Host " -> Update URL Called: $updateUrl" -ForegroundColor Cyan
Write-Host "--------------------------------------------------" -ForegroundColor Yellow
#======================================
$body = @{
type = "A"
name = $dnsRecordName
content = $currentIp
ttl = 1
proxied = $false
} | ConvertTo-Json
# Send the update request
Invoke-RestMethod -Uri $updateUrl -Headers $headers -Method Patch -Body $body
Write-Host "Successfully updated DNS record '$dnsRecordName' to point to '$currentIp'."
}
}
catch {
Write-Error "An error occurred: $_"
}
Sau đó ta tiến hành lưu file lại với định dạng .ps1. và tiến hành mở powershell lên tiến hành chạy thử. Nếu có kết quả như trong hình là bạn đã tạo thành công. Việc còn lại chỉ là set lịch cho nó tự động chạy script.

Bước 3: Thiết lập lịch để mỗi khi khởi động máy tính và đăng nhập vào thì script cập nhập public ip tự động chạy
Ta vào phần schedule trong windows và tiến hành tạo new schedule : Click chuột phải vào Task Scheduler và chọn Create Basic Task

Ta đặt tên cho task và bấm Next

Sau đó ta chọn When I log on và bấm Next

Ta chọn Start a program và bấm next

Programe/Script chọn đường dẫn đến phần thực thi powershell trên windows của bạn.
Add arguments (optional): Dán dòng sau vào:
-ExecutionPolicy Bypass -File "C:\Scripts\Update-CloudflareDNS.ps1">
(Hãy chắc chắn bạn đã thay "C:\Scripts\Update-CloudflareDNS.ps1" bằng đường dẫn chính xác đến file script của bạn).
Sau đó bấm Next

Và bấm Finish.
Để đảm bảo task chạy thành công ta click chuột phải lên task vừa tạo bấm Properties và tại tab General ta nên thiết lập task chạy với quyền cao nhất như trong hình bên dưới sau đó bấm ok.

Khi task được cấu hình xong ta test thử bằng các click chuột phải lên task chọn Run
Khi task chạy thành công thì ta sẽ có thông báo như trong hình.

