DDNS dockdns 與 synology NAS

因為godaddy的爛API政策讓我無法自動更新IP
改成這個免費的 DDNS,雖然可以從外面連回機器,但不是自己的domain。
可以簡單取得免費網址又提供API 更新IP

推薦使用這個免費的DDNS服務:https://www.duckdns.org/index.jsp

進入頁面後先以google 登入(或其他登入方式亦可)

登入後介面非常簡單,可以看到自己的token等訊息,這是等等呼叫自動更新API所需要的重要資訊

接著在下方可以輸入想要的sub domain,可能會已經被其他人用走,這時候只好再改一個,按下add domain後即可生效

會在下方看到目前已生效的domain

到這邊,頁面上的部分完成,只要設定好IP就可以連到自己的機器了。

接著設定 NAS 上的自動更新

方法一:shell script

先開啟控制台 > 任務排程表

新增 > 排程任務 > 使用者定義指令碼

設定名稱

時間排程設定,這邊設定每天檢查一次

任務設定頁面下方會有可以填入指令的地方,將下方所附的指令碼填入

請務必記得將 SUBDOMAIN / TOKEN 改成自己的

指令碼如下:

#!/bin/bash
SUBDOMAIN="quanto-test"
TOKEN="XXXXXXXXXXXXXXXXXXXXXXXX"
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
DNS_IP=$(nslookup ${SUBDOMAIN}.duckdns.org| awk '/^Address: / { print $2 }')
echo ${DNS_IP}
ret=$(curl -s GET "https://ipinfo.io/json")
IP=$(echo $ret | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b")
# IP=`ifconfig eth0|grep 'inet'|awk '{print $2}'`
echo ${IP}
if [ "$DNS_IP" != "$IP" ]; then
    echo "Update DDNS"
	echo "update ${SUBDOMAIN}.duckdns.org => IP:${IP}"
	curl "https://www.duckdns.org/update/${SUBDOMAIN}/${TOKEN}/${IP}"
fi

設定完成後,可以按執行測試,此時回到 duckdns 頁面查看,應該已經是正確IP了

再強調一次,GoDaddy 亂砍API ,爛公司

方法二:使用內建DDNS設定

此方法只適用於synology NAS 使用,但相對方便很多

進入 外部存取

切換到 DDNS

點擊“新增”

點擊“自訂供應商”

服務供應商隨便填,Query URL 填寫如下

http://www.duckdns.org/update?ip=__MYIP__&domains=__HOSTNAME__&token=__PASSWORD__

這邊值得注意的是,如果在duckdns上綁了兩個domain,這邊就需要建立兩個供應商才行,Query URL 可以一樣即可,如圖,我建立了兩個來對應我兩個domain

在我們的設定內,“使用者名稱”其實沒用到,隨便填即可

密鑰欄位填寫在duckdns取得的token

接著按下“測試連線” 按鈕,都沒問題的話會顯示正常

確定後會有目前狀態

這樣nas 將會在ip改變時自動呼叫來調整,非常方便

發佈留言