因為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改變時自動呼叫來調整,非常方便