設定 1984.is DDNS 並在 RouterBoard 啟動 script

這邊要來說明如何透過 1984.is FreeDNS 中設定 DDNS,並啟動 API
而在 RouterBoard 上,在發生 PPPoE 斷線重新連線後,能自動更新指定網域的 IP
首先。先登入 1984.is 管理介面,上方功能列 > FreeDNS > Dynamic DNS
點選畫面中間的 "Enable API" 的按鈕
在1984.is FreeDNS管理介面啟動DDNS
畫面中會有提示 API Key:6Cc7It8Ti3Dj7Nu5Dn0Wr5Fu1Xp0Aw0Us0Zt5Tm3Ee9Le6Te9Rq6Ul3Cr5Dz3Qp,建議把這個 Key 可先複製起來,後續會用到
畫面中間也有個提示範例 https://api.1984.is/1.0/freedns/?apikey=6Cc7It8Ti3Dj7Nu5Dn0Wr5Fu1Xp0Aw0Us0Zt5Tm3Ee9Le6Te9Rq6Ul3Cr5Dz3Qp&domain=example.is&ip=
先複製起來,等等測試會使用到
在1984.is FreeDNS管理介面取得DDNS API Key
接下來回到 Zone 的畫面,要先去新增一筆 A record,才能後續的 DDNS 設定
在1984.is FreeDNS管理介面設定 A record
這邊新建一筆 A record,名稱為 home,IP 暫時為 101.101.101.101,確認後點選後方綠色按鈕 "+New"
在1984.is FreeDNS管理介面新增一筆 A record
目前在 A record 的地方,已可看到剛剛新的一筆 home 的紀錄,IP 為 101.101.101.101
在1984.is FreeDNS管理介面確認這筆 A record
將剛剛複製的網址,
https://api.1984.is/1.0/freedns/?apikey=6Cc7It8Ti3Dj7Nu5Dn0Wr5Fu1Xp0Aw0Us0Zt5Tm3Ee9Le6Te9Rq6Ul3Cr5Dz3Qp&domain=example.is&ip=
其中我的網址是 home.jia543.win 測試的 IP 為 8.8.8.8
因此,整個測試的 API 網址為
https://api.1984.is/1.0/freedns/?apikey=6Cc7It8Ti3Dj7Nu5Dn0Wr5Fu1Xp0Aw0Us0Zt5Tm3Ee9Le6Te9Rq6Ul3Cr5Dz3Qp&domain=home.jia543.win&ip=8.8.8.8(上面紅色的部分是我的資訊,要測試請改成符合你的確實資訊)
改完成後,將整串網址貼在網址列上,並直接前往,會發現最後得到一個 false 的訊息
測試1984.is DDNS 的API,false
而上面的錯誤訊息也有提到,要去啟動 DDNS,先返回到 1984.is FreeDNS 管理介面
View Zones > 進入網域 > 找到 home 這筆 A record,後面有個 DDNS按鈕,按下去變成綠色即可
在1984.is FreeDNS管理介面查看並修改這筆A record
再將剛剛測試的 API 網址貼上測試,這時候可以看到得到一個 true 的訊息
測試1984.is DDNS 的API,true
再返回 FreeDNS 管理介面,查看這筆 home 的 A record。IP 已變成 8.8.8.8 了
在1984.is FreeDNS管理介面查看驗證 API 結果
已經確認 1984.is FreeDNS 的 DDNS 功能確實是可執行的,後續要把這個 API 的方式,改寫成 RouterBoard 可執行的 script,並讓 RouterBoard 在 PPPoE 重新連線後,能夠自動將 1984.is 上的網址更新
用 WinBox 連上 RB 後,從 System > Scheduler 中,新增一筆
設定 1984.is DDNS 並在 RouterBoard 啟動 script
其中的 Interval 的單位為 時:分:秒,如果第一次設定,想要更快確認是否有更新,可先設 00:03:00
阿嘉只是有空有連進去看看我的 RB 狀態而已,有時候一忙也沒想要連,才設定 01:00:00
:global 1984Key "1984.is_API Key"   //1984.is_API Key 貼上前面說的1984.is DDNS的API Key
:global theinterface "WAN_INTERFACE"  //WAN_INTERFACE 換成RB上 PPPoE 的介面名稱
:global 1984Host "1984.is_Domain"   //1984.is_Domain 換成 DDNS 的網址名稱
完整的 Scheduler scippt
#版本 V1.0 
#定義 1984.is FreeDNS DDNS 相關設定,以下自行修改: 
#============================================================ 
:global 1984Key "1984.is_API Key"
:global theinterface "WAN_INTERFACE"
:global 1984Host "1984.is_Domain"
#============================================================ 
#以下程式若是不了解,請勿修改,以免無法正常運行: 
#------------------------------------------------------------------------------------------ 
#定義 IP 相關變數 
:global ipddns [:resolve $1984Host];
:global ipfresh [ /ip address get [/ip address find interface=$theinterface ] address ]

#是否更新 IP 
:if ([ :typeof $ipfresh ] = nil ) do={
:log error ("1984_DDNS:No IP address on  $theinterface .")
} else={
:for i from=( [:len $ipfresh] - 1) to=0 do={
:if ( [:pick $ipfresh $i] = "/") do={
:set ipfresh [:pick $ipfresh 0 $i];
}
}
:if ($ipddns != $ipfresh) do={

#更新 DDNS IP 
:local url "https://api.1984.is/1.0/freedns/?apikey=$1984Key&domain=$1984Host&ip=$ipfresh"
/tool fetch url="$url" mode=http dst-path=("1984DDNS_$1984Host") 
:delay 1 
:global str [/file find name="1984DDNS_$1984Host"];
/file remove $str

#確認是否成功並起紀錄
:log warning ("1984_DDNS:原 IP 為 " . $ipddns . " 已更新 IP 為 " . $theinterface . " 的 " . $ipfresh)
:global ipddns $ipfresh
} else={
:log info ("1984_DDNS: $1984Host 的 IP 沒有變化");
}
}
#------------------------------------------------------------------------------------------

這個網誌中的熱門文章

開箱 小米經典商務雙肩包

VirtualBox 橋接介面卡 未選取/無法選取 故障排除

Windows 10 網路磁碟機 網路芳鄰 無法存取...