![]()
หลายคนคงได้เคยใช้ Dynamic DNS ของหลายๆ ค่ายมาแล้ว ทั้งฟรี และ เสียเงิน
แต่วันนี้จะแนะนำการใช้งานโดเมนของตัวเองที่มีอยู่ โดยที่โดเมนนั้นมีการใช้ DNS ซึ่งเป็นบริการของ Cloudflare
สำหรับวิธีการก็แค่สร้างไฟล์นี้ขึ้นมา แก้ไขค่านิดหน่อย จากนั้นก็เป็นอันสำเร็จ
#!/bin/bash # A bash script to update a Cloudflare DNS A record with the external IP of the source machine # Used to provide DDNS service for my home # Needs the DNS record pre-creating on Cloudflare # Proxy - uncomment and provide details if using a proxy #export https_proxy=http://<proxyuser>:<proxypassword>@<proxyip>:<proxyport> # Cloudflare zone is the zone which holds the record zone=example.com # dnsrecord is the A record which will be updated dnsrecord=www.example.com ## Cloudflare authentication details ## keep these private [email protected] cloudflare_auth_key=1234567890abcdef1234567890abcdef # Get the current external IP address ip=$(curl -s -X GET https://checkip.amazonaws.com) echo "Current IP is $ip" if host $dnsrecord 1.1.1.1 | grep "has address" | grep "$ip"; then echo "$dnsrecord is currently set to $ip; no changes needed" exit fi # if here, the dns record needs updating # get the zone id for the requested zone zoneid=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$zone&status=active" \ -H "X-Auth-Email: $cloudflare_auth_email" \ -H "X-Auth-Key: $cloudflare_auth_key" \ -H "Content-Type: application/json" | jq -r '{"result"}[] | .[0] | .id') echo "Zoneid for $zone is $zoneid" # get the dns record id dnsrecordid=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records?type=A&name=$dnsrecord" \ -H "X-Auth-Email: $cloudflare_auth_email" \ -H "X-Auth-Key: $cloudflare_auth_key" \ -H "Content-Type: application/json" | jq -r '{"result"}[] | .[0] | .id') echo "DNSrecordid for $dnsrecord is $dnsrecordid" # update the record curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records/$dnsrecordid" \ -H "X-Auth-Email: $cloudflare_auth_email" \ -H "X-Auth-Key: $cloudflare_auth_key" \ -H "Content-Type: application/json" \ --data "{\"type\":\"A\",\"name\":\"$dnsrecord\",\"content\":\"$ip\",\"ttl\":1,\"proxied\":false}" | jq
เพียงเท่านี้ ก็มี DDNS ส่วนตัวฟรีๆ ด้วยบริการจาก Cloudflare ใช้งานกันแล้ว :D
อ้างอิง : cloudflare-ddns-update.sh



