การอัพเดท 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 ของคุณถูกอัพเดทอย่างต่อเนื่องครับ