好一陣子沒寫(Blog)筆記惹,近期弄東弄西、更新 Nextcloud 新版本、
Coding WinForm C#、玩到ISPConfig,又用VM試架UBUNTU架站等等,
除了工作外,已經沒啥空閒時間可以再多做其他事情…
因為固定IP有限,家中主要多半還是使用浮動IP,所以DDNS算很常用
現使用的網域均已移轉至CF(cloudflare)代管,速度效率上都算不錯…
在此把CloudFlare DDNS自己筆記一下,也可以給需要朋友參考一下!
DNS代管:CloudFlare
路由主機:ROUTEROS Mikrotik V6.44.1
這一段日子爬了幾個網站,分別有提及到CF的DDNS作法(比較新的):
查到第一篇文章最後發文的時間是20190313
https://gist.github.com/viritt/605173d0b9d8cce433be34539db9923f
第二篇文查到最後發文的時間是20190318
https://mmendescortes.eti.br/how-to-use-cloudflare-ddns-on-mikrotik-routeros/
這二篇文章一開始我搞不清楚哪個ID要哪裡取得,因為每網域都有ZONE ID
用錯ID或設定就無法更新IP資訊
本篇主要使用第二篇文章,使用版本是以官方(V4)為主
https://api.cloudflare.com/#dns-records-for-a-zone-update-dns-record
為方便資料編輯建議到notepad++(javascript),以容易設定相關資訊:
首先到自己的CF上,取得以下的資訊:
一、網域的ZONE ID 和個人認證(登錄)的信箱(帳號)例:[email protected]
二、找到DDNS網域的ID(RECORD ID),例:使用的網域是www.xyz.com就要找到www.xyz.com的RECORD ID,而不是使用xyz.com的RECORD ID
三、CF Global API Key
四、IP位址(或浮動)
1.先來找到自己的ZONE ID
選好了網域後選 Overview
2.到圖面的底下會出現『API』此時需要第一項 Zone ID 的資料,接著點選頁面的『Get your API key』
3.認證完後,取得API KEY
global cfg do={\
/tool fetch mode=https\
http-method=get\
url="https://api.cloudflare.com/client/v4/zones/$cfi/dns_records"\
http-header-field="content-type:application/json,X-Auth-Email:$cfe,X-Auth-Key:$cfk"\
}
5.至ROS裡貼上…
6.此時將你的ZONE ID、EMAIL、和API KEY套用到底下的資料裡面,同樣的再跟5步驟一樣貼上去
$cfg cfi="CHANGE IT TO YOUR ZONE ID" cfe="CHANGE IT TO YOUR ACCOUNT EMAIL" cfk="CHANGE IT TO YOUR GLOBAL KEY"
7.此時應該會出現與下圖相同(類似)畫面,如果沒有的話,請再檢查上相關ID或資料是否有誤…
8.到files裡會出現一個『dns_records』的檔案,下載後用notepad++開啟
9.dns_records裡會有所有的資訊,找到對應的『網域』那段裡一開始都會有個”id”:”********”開始,那就是你要DDNS用的ID(RECORD ID)
10.將底下的資料替換掉後,丟到script裡,再按時執行即可…
:global cfu do={\ :local cfi " zone id ";\ :local cfr " record id ";\ :local cfe "[email protected]";\ :local cfk "api key";\ :local cfd "ABC.com";\ :local currentIP [/ip address get [/ip address find interface=pppoe1 ] address];\ :local cfa [:pick $currentIP 0 [:find $currentIP "/"]];\ :local cfp true;\ /tool fetch mode=https\ http-method=put\ url="https://api.cloudflare.com/client/v4/zones/$cfi/dns_records/$cfr"\ http-header-field="content-type:application/json,X-Auth-Email:$cfe,X-Auth-Key:$cfk"\ http-data="{\"type\":\"A\",\"name\":\"$cfd\",\"content\":\"$cfa\",\"proxied\":$cfp}"\ output=none\ } :delay 1 $cfu
delay 1這可以調整,另pppoe1可以改成自己撥號或IP
以上請參考!
感谢,很有用,已经成功了