在 DSM 中自動更新 CloudFlare 的 DNS 記錄

如果你的網路提供商沒有為你提供固定 IP,你的 IP 有可能在幾天內就會變化一次
例如永遠擋在你前面
的中華電信,如果你申請她的光纖網路,而且上傳帶寬剛好在 100M 包含或者以上
那麼他是沒有辦法提供你固定 IP 的,這是因為商業考量,如果有這麼大頻寬又有固定 IP
就可以拿來架站了,沒人會去申請他們價格比家用貴一倍以上的企業寬頻了。。。
如果你是中華電信網路,上傳沒達到 100M,那你可以直接到[官方網頁][1]申請固定 IP,並關掉此網頁
現在市面上普遍免費提供的 DDNS 域名都不怎麼好記,而且沒有自己的特色
像是如果你剛好手上有個 peter.com 或者 abc.com ,這種有自己名字又好記的域名
那你可以弄個 nas.peter.com 或者 nas.abc.com ,是不是非常好記呢?
[Synology DSM][2] 裡面預設已經有提供不少 DDNS 服務商,但是缺少 CloudFlare 的

CloudFlare 是一個提供加速以及安全的服務商,如果你有網站或者伺服器,趕快去 Google 一下
CloudFlare 官方提供的 API 裡面有 DNS 相關功能,於是就有人寫一個 [script][3] 可以直接在DSM控制面板中直接調用
每隔一段時間或者每次 DSM 一發現外部IP有變化,他就會自動去更新一下,真是非常方便!
PS:Docker 用戶可以去參考另外一篇,比較容易的版本
使用SSH服務登入DSM
先登入你的DSM網頁管理頁面
-
打開控制台
-
找到「終端機 & SNMP」頁面
-
勾選啟動 SSH 功能
-
然後點一下套用

-
打開你的 Terminal App(macOS 可以用 Spotlight 搜「Terminal」然後打開,Windows 用戶可以下載 [MobaXterm][4])
輸入以下指令:(DSM IP 請換成你自己的)
|
|
接著系統會讓你輸入 admin 密碼
輸入完以後再執行下面指令:(切換成 root 身份)
|
|
再輸入一次 admin 的密碼
在 Terminal 中執行幾條指令
- 下載 cloudflareddns.sh 檔案到 DSM 的 /sbin/ 文件夾中,拷貝粘貼以下指令:
|
|
- 賦予剛剛下載的檔案可以被執行的權限
|
|
- 把 cloudflaredns.sh 加入 DSM 控制台中的 DDNS 選項中
使用「vi 編輯器」打開 DSM 控制台的服務供應商清單
|
|

打開後用鍵盤的方向鍵往下移動,移動到隨意兩個服務中間,按下鍵盤「a」進入編輯模式
然後拷貝以下內容:
|
|
在隨意兩個服務中間,按幾個 Enter 換行貼上,完成後應該會跟下圖一樣

貼上後,按下鍵盤「ESC」,退出編輯模式,然後輸入「:wq」跟按下「Enter」,就能保存檔案並退出 vi 編輯器
PS:如果不小心編輯失敗搞砸了,可以輸入「:q!」跟按下「Enter」,就可以不保存檔案退出編輯,重新再來一次
從CloudFlare獲取必須的資料
- 打開你想要更新的 [CloudFlare Overview][5] 頁面,如下圖可以看到你的
Zone ID

- 再到 [CloudFlare Profile][6] 頁面,在API欄位找到「
Global API Key
」,點一下右邊的「View API Key」藍色按鈕,就能看見

- 回到Terminal的視窗,我們要利用以上兩個資料,來獲取最後一個
根據自己的帳號,替換以下指令中的資料:(包含[ ],一起換成自己的)
|
|
在返回的資料中有一個「id」,這串東西就是你的 Record ID

以上所有資料請妥善保存,這個就像是你的 CloudFlare 密碼一樣,不要隨意洩露
- 接下來根據上面步驟獲得的各種資料 ID,我們要編輯修改剛剛放到 DSM 中的cloudflareddns.sh
同樣在 Terminal 中,確定是在 DSM 裡面,輸入以下指令:
|
|
跟剛剛一樣,打開後按下鍵盤的「a」進入編輯模式

RECTYPE 是 DNS 的種類,可以用的選項有:A, AAAA, CNAME, TXT, SRV, LOC, MX, NS, SPF
RECID 是 Record ID
,剛剛在步驟 3 獲取到的,直接拷貝粘貼上去
ZONE_ID 是剛剛在步驟 1 獲取到的 Zone ID
,也是直接拷貝粘貼即可
TTL 是 DNS 更新時間,預設是 1,也就是 CloudFlare 的「Automatic」
PROXY 是這個域名有沒有透過 CloudFlare 轉發,有的話「true」,若無改成「false」
以上修改完畢後,同樣按下鍵盤「ESC」按鈕退出編輯模式,然後輸入「:wq」按下「Enter」,保存並退出
在 DSM 控制台 DDNS 新增 CloudFlare 服務
-
打開 DSM 的控制台
-
到「外部存取」
-
「DDNS」頁面,點選「新增」

設定頁面這邊只剩下三個資料要填:

主機名稱:這邊填寫你在 CloudFlare 的域名
使用者名稱/電子郵件:填寫你在 CloudFlare 註冊的 email
密碼/金鑰:這邊填寫剛剛上面從 CloudFlare 獲取到的 Global API Key
以上就完成全部設定囉!其實應該去建議 Synology 直接內建,這樣我們就不用這樣搞來搞去了啊~