設定 1984.is DDNS 並在 RouterBoard 啟動 script
這邊要來說明如何透過 1984.is FreeDNS 中設定 DDNS,並啟動 API
而在 RouterBoard 上,在發生 PPPoE 斷線重新連線後,能自動更新指定網域的 IP
首先。先登入 1984.is 管理介面,上方功能列 > FreeDNS > Dynamic DNS
點選畫面中間的 "Enable API" 的按鈕
![在1984.is FreeDNS管理介面啟動DDNS 在1984.is FreeDNS管理介面啟動DDNS](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjqx_qabu4XBXkFCkpD8IWFcQvVOEKuBqmjq8kOnRqU15IjRjsEXUNtxGUo8Qms1BGqVix6xzXwc6ptdg5jKxYfO6ocqReQZrehPUHEdv9kHHytqTIg2z1-JJ2J8F_8a3hgYVi_YUlKBI/?imgmax=800)
畫面中會有提示 API Key:6Cc7It8Ti3Dj7Nu5Dn0Wr5Fu1Xp0Aw0Us0Zt5Tm3Ee9Le6Te9Rq6Ul3Cr5Dz3Qp,建議把這個 Key 可先複製起來,後續會用到
畫面中間也有個提示範例 https://api.1984.is/1.0/freedns/?apikey=6Cc7It8Ti3Dj7Nu5Dn0Wr5Fu1Xp0Aw0Us0Zt5Tm3Ee9Le6Te9Rq6Ul3Cr5Dz3Qp&domain=example.is&ip=
先複製起來,等等測試會使用到
![在1984.is FreeDNS管理介面取得DDNS API Key 在1984.is FreeDNS管理介面取得DDNS API Key](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjayeQF2OjZJpWpAvJSgYSKTaPkR6dB4aIwNXx3PppaOEAY_kjsfXZZglQT7O_YWlp_6mzlQj-q75KmEUy7LHWWUcyIXueK3G5y3Xdb0dId7LrDScg8xSnMbDwCYTK3SeIZuMgr6k7KLiA/?imgmax=800)
接下來回到 Zone 的畫面,要先去新增一筆 A record,才能後續的 DDNS 設定
![在1984.is FreeDNS管理介面設定 A record 在1984.is FreeDNS管理介面設定 A record](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilm0m6RSNZCHt_QRNEfeVTghrS6dwPXSUMr4VYyE_fhsLtr5hNwiRlKHgGAjjcDzPCl2uzxMbyqemjgvSZDugoEMfZC4SxzhxLWi4U0Fngrf_B-f872MFWYWIqnJs7pn6KyXWe-tym860/?imgmax=800)
這邊新建一筆 A record,名稱為 home,IP 暫時為 101.101.101.101,確認後點選後方綠色按鈕 "+New"
![在1984.is FreeDNS管理介面新增一筆 A record 在1984.is FreeDNS管理介面新增一筆 A record](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhytm8nztasyGbskG5HQoZVblXq7y0bVz0zF_S_-BnxqU7UHQNaE1GjSnm-ucVaoA_hxmVmD3Q04NJPWsKNHu2eH0yckrUOGDV93OL9B8G_1QYvL-sToxRnpsoz6XFzRvdv7ooYuC97Lk8/?imgmax=800)
目前在 A record 的地方,已可看到剛剛新的一筆 home 的紀錄,IP 為 101.101.101.101
![在1984.is FreeDNS管理介面確認這筆 A record 在1984.is FreeDNS管理介面確認這筆 A record](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQJGrTkcIU7pfepoF9G1jiYzJ9wOG5c8AMq0fN3mFB72dBfu4fkKAd1BrKGJMNMzCp4_DGv2VQclfHTBwdar4NRu9qqS_Hvl8LSc6FWs7yjvr_3a2rF-ioo0ekz_3t1VP9ye82T40Iuq8/?imgmax=800)
將剛剛複製的網址,
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 測試1984.is DDNS 的API,false](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv_vzv9fSLUcDL_MdjuSGUytowNKdcLDqnAViEAs3T8PLA3SNfDq12CLyN_j4_Zl1vbwFjT5-gnUzwAO2H6UiwprxnTb3l5kYXSRRoJK1Wk-BLEJ2fBpYbwFgNCHyUmBgA1MHX6NPaYWU/?imgmax=800)
而上面的錯誤訊息也有提到,要去啟動 DDNS,先返回到 1984.is FreeDNS 管理介面
View Zones > 進入網域 > 找到 home 這筆 A record,後面有個 DDNS按鈕,按下去變成綠色即可
![在1984.is FreeDNS管理介面查看並修改這筆A record 在1984.is FreeDNS管理介面查看並修改這筆A record](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAoVGk-nv9dXqp5MjqdkeMcwkuVrVSeNnitNqK-rqgVxF5PjeAGn8-lNL_etJ_ujahIBjEzKyAEz4JDe1QSFh9fwNn7ZM5joclWPucGjLObhY1sfGASwl-6LmDC2XGre3ANIldrY7rwp8/?imgmax=800)
再將剛剛測試的 API 網址貼上測試,這時候可以看到得到一個 true 的訊息
![測試1984.is DDNS 的API,true 測試1984.is DDNS 的API,true](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj0azwP4inI9ms3bBoTLWV3pQYID9BQLzCoE0nPzsD1w0YTqN2_BzAeIYM6NM2bCcIhtUygww7uw172Z70C-SmrOjwy-GhtfMlNUAnhsa2YbDeILcrIzvV2CH7vk3lNCV4XxzetZPjOIE/?imgmax=800)
再返回 FreeDNS 管理介面,查看這筆 home 的 A record。IP 已變成 8.8.8.8 了
![在1984.is FreeDNS管理介面查看驗證 API 結果 在1984.is FreeDNS管理介面查看驗證 API 結果](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXlj8wmltB89OpZM-ylfIXOe7S_Q-AHC_qwdslDsxVVaZoGaa8lk0FcCPiqo1q_V1XKXt4JEGBHNbby58lYu33nWBSXCUWbVywmSyhMiSymV3_YypWktfkZ7Ivj0ZXjuA3T-KPsZFrC0Y/?imgmax=800)
已經確認 1984.is FreeDNS 的 DDNS 功能確實是可執行的,後續要把這個 API 的方式,改寫成 RouterBoard 可執行的 script,並讓 RouterBoard 在 PPPoE 重新連線後,能夠自動將 1984.is 上的網址更新
用 WinBox 連上 RB 後,從 System > Scheduler 中,新增一筆
![設定 1984.is DDNS 並在 RouterBoard 啟動 script 設定 1984.is DDNS 並在 RouterBoard 啟動 script](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF0lgYYhNtFdIr28IS99fU8mwmfyOx7DCqgNO6I7v5Djz0V63KJcM4TgdlLgzYrEiIiD5FbavuathNPHNUfytHdi1YZZVa_rCQHUKHUBU_jAYFOpC6GyU9U1ABQUnZ8FRXfXUsqKDcWlk/?imgmax=800)
其中的 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
而在 RouterBoard 上,在發生 PPPoE 斷線重新連線後,能自動更新指定網域的 IP
首先。先登入 1984.is 管理介面,上方功能列 > FreeDNS > Dynamic DNS
點選畫面中間的 "Enable API" 的按鈕
畫面中會有提示 API Key:6Cc7It8Ti3Dj7Nu5Dn0Wr5Fu1Xp0Aw0Us0Zt5Tm3Ee9Le6Te9Rq6Ul3Cr5Dz3Qp,建議把這個 Key 可先複製起來,後續會用到
畫面中間也有個提示範例 https://api.1984.is/1.0/freedns/?apikey=6Cc7It8Ti3Dj7Nu5Dn0Wr5Fu1Xp0Aw0Us0Zt5Tm3Ee9Le6Te9Rq6Ul3Cr5Dz3Qp&domain=example.is&ip=
先複製起來,等等測試會使用到
接下來回到 Zone 的畫面,要先去新增一筆 A record,才能後續的 DDNS 設定
這邊新建一筆 A record,名稱為 home,IP 暫時為 101.101.101.101,確認後點選後方綠色按鈕 "+New"
目前在 A record 的地方,已可看到剛剛新的一筆 home 的紀錄,IP 為 101.101.101.101
將剛剛複製的網址,
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 的訊息
而上面的錯誤訊息也有提到,要去啟動 DDNS,先返回到 1984.is FreeDNS 管理介面
View Zones > 進入網域 > 找到 home 這筆 A record,後面有個 DDNS按鈕,按下去變成綠色即可
再將剛剛測試的 API 網址貼上測試,這時候可以看到得到一個 true 的訊息
再返回 FreeDNS 管理介面,查看這筆 home 的 A record。IP 已變成 8.8.8.8 了
已經確認 1984.is FreeDNS 的 DDNS 功能確實是可執行的,後續要把這個 API 的方式,改寫成 RouterBoard 可執行的 script,並讓 RouterBoard 在 PPPoE 重新連線後,能夠自動將 1984.is 上的網址更新
用 WinBox 連上 RB 後,從 System > Scheduler 中,新增一筆
其中的 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 沒有變化"); } } #------------------------------------------------------------------------------------------