DNS 是把 一個好記網域名稱 對應 難記IP位置 的服務(也還有其他對應服務)。通常主機IP位置不太會變,所以設定後除非換主機,不然紀錄也不太會換。

但是~ 如果伺服器IP位置會動態改變,又想要找到這台伺服器的時候怎辦? 像是家裡沒有固定IP的電腦和 Raspberry Pi。雖然這舉例可能並非公開服務,但至今也還是有人用自家網路建立網站,沒固定IP且時不時會做線路重整的網路就是會需要重新指定網域名稱紀錄!

再來就是比較大量管理規模的案例,一口氣透過 LiveDNS 服務更新管理網站全部的紀錄,省得登入後台一一修改。

這類 DDNS 服務,早期最多教學文是從 No-IP 這家服務開始,但不是用自己的網域名稱感覺就不對呀~

所以回到 LiveDNS 這邊,如果會點程式能力與有點網路概念就能自己處理囉!

申請的方法很簡單:

  1. 登入 Gandi 後台,瀏覽 Security
  2. 建立 LiveDNS 的 API Key
  3. 查看文件查詢呼叫方式

下方為使用 Python 撰寫的更新腳本:

#!/usr/bin/env python
import urllib3
import requests
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
urllib3.disable_warnings()
#1. 建立 API Key > https://account.gandi.net/
#2. 改 example.com > 你的網域名稱
r = requests.put('https://dns.api.gandi.net/api/v5/domains/example.com/records/%40/A',data='{"rrset_type": "A", "rrset_ttl": 300, "rrset_name": "@","rrset_values": ["%s"]}'%(s.getsockname()[0]),headers={'X-Api-Key':'gandilivednsapikey','Content-Type':'application/json'})
s.close()
print(r.text)

Gist: Link

使用腳本需要先用 pip install requests 安裝 requests 模組,再來 chmod +x 腳本名稱 賦予執行權限,設定一組 crontab 定時推送更新就好。

腳本設定會更新特定網域的 main domain (@) A Record 紀錄 IP,並且設定最短過期時效 300 秒。

目前文件中也沒寫請求上限,不知道每秒請求一次會不會被 Ban 掉XD

樂見越來越多網域服務業者可以縮短這個更新時間(尤其是台灣還有業者要等24小時的..),整個節省很多時間,而 Cloudflare 雖沒賣 Domain 但從 DNS 服務做 CDN 也是超強策略,不論是更新速度還是 API 都在很早期建置完整與快速,也是可以參考的類似服務之一。

Facebook 外掛功能


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[//////////____30%_________]

參與討論

1 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *