การอัพเดท DNS ผ่าน DNS API บน Raspberry Pi 4
ตัวอย่างเช่น การใช้งาน Cloudflare DNS API กับ Python บน Raspberry Pi นั้น คุณสามารถเขียนสคริปต์ Python เพื่ออัพเดท IP Address ของเน็ตบ้านคุณไปยังโดเมนที่คุณต้องการ นี่คือขั้นตอนพื้นฐานที่คุณต้องทำ:
- ชี้โดเมนเนมของคุณไปใช้บริการ DNS Service ของ Cloudflare
- สร้าง DNS A record ขึ้นมา 1 ชื่อ เช่น
home.mydomain.com - เขียนสคริปต์ Python ที่จะทำการอัพเดท IP Address ให้กับ
home.mydomain.com - ตั้ง Cron job ให้ทำการ Run script นี้เป็นระยะๆ
โดยสคริปต์ Python ที่คุณจะเขียนนั้นจะมีโครงสร้างพื้นฐานดังนี้:
#!/usr/bin/env python
import requests
import json
import sys
IP_API = 'https://api.ipify.org?format=json' # อ่านค่า Public IP
CF_API_KEY = 'your_cloudflare_api_key' # Global API Key จาก Cloudflare
CF_EMAIL = 'your_email@your_domain.com' # อีเมล์ที่ใช้สมัคร Cloudflare
ZONE_ID = 'your_zone_id' # ได้จาก Dashboard ของ Cloudflare
RECORD_ID = 'your_record_id' # ได้จากการรันสคริปต์ครั้งแรก
# ตรวจสอบ RECORD_ID
if not RECORD_ID:
response = requests.get(
f'https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/dns_records',
headers={
'X-Auth-Key': CF_API_KEY,
'X-Auth-Email': CF_EMAIL
}
)
print(json.dumps(response.json(), indent=4, sort_keys=True))
print('Please find the DNS record ID you would like to update and enter the value into the script')
sys.exit(0)
# อ่านค่า IP ปัจจุบัน
response = requests.get(IP_API)
ip = response.json()['ip']
# อัพเดท DNS record
response = requests.put(
f'https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/dns_records/{RECORD_ID}',
json={
'type': 'A',
'name': 'home.mydomain.com',
'content': ip,
'proxied': False
},
headers={
'X-Auth-Key': CF_API_KEY,
'X-Auth-Email': CF_EMAIL
}
)
assert response.status_code == 200
print(f'Updated DNS record for {ip}')
โปรดแทนที่
your_cloudflare_api_key ,
your_email@your_domain.com ,
your_zone_id ,
และ your_record_id ด้วยข้อมูลของคุณเองครับ และตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่า Cron job ให้รันสคริปต์นี้เป็นประจำเพื่อให้ IP Address ของคุณถูกอัพเดทอย่างต่อเนื่องครับ
![]()
