建立於: 5年前 ( 更新: 5年前 )
我家使用HiNet光世代撥接上網,光世代一固定七浮動IP。
前一陣子有換了台Wifi,D-Link DIR-882,說真的覺的這台又貴又爛@@,
不確定是不是我買到機王,時常當機,再來,他所提供的DDNS功能了,
設定好了,似乎沒在更新,不是很好用。

重點是,上面的FAQ說明看起來還不是免費的,六個月後就要收費嗎?
前一陣子有換了台Wifi,D-Link DIR-882,說真的覺的這台又貴又爛@@,
不確定是不是我買到機王,時常當機,再來,他所提供的DDNS功能了,
設定好了,似乎沒在更新,不是很好用。

重點是,上面的FAQ說明看起來還不是免費的,六個月後就要收費嗎?
Registering your D-Link product will allow you to continue using dynamic DNS with your D-Link registered product without interruption for the period specified for the product, which is generally up to six months.
例如花一次費用,啟動他們的更新工具點,
簡單說,就是會給你一些不便,你要完整功能,還是要花錢,阿偶就不想花錢在DDNS上。
(註: 還是有一些,據說是真免費的,但我沒再多試了,您可自行Goolge。)
於是,讓我想到了,我家有一台Synology的NAS,他不也是有提供DDNS的功能嗎? 就想來試試。
先來說說我的環境,我家的NAS是撥接Hi-Net PPPOE的一固定IP,
而我的Nas主要執行就是您現在看到的這個網站。
個人用戶,沒啥預算玩AWS或GCP,用這台Nas自架網站,
個人網站寫寫文章用,然後執行D-Laravel的docker環境:),
用docker能跑大量服務,用VM只能跑幾台吧。

如何用Synaloge NAS跑D-Laravel,您可以參考我這篇chowner的文章。
https://www.ccc.tc/article/d-laravel-chowner
另外,我用Nas裝了一台VM,用於建立線上會議系統。

這台VM是在內網透過Wifi Router設定DMZ,進來的,我想讓這台浮動IP的VM能有固定的域名。

但問題來了,Synalogy的DDNS看起來是只能用NAS的IP,
他本意是要讓我們在任何地方能用域名存取到自己的NAS。
我Nas已是固定IP啦,不需要DDNS服務,但我的VM需要:p。
好家在,設定上完全不難,隨便Google一下,不到到一分鐘 ,就發現Synalogy NAS設定檔放在/etc/ddns.conf,
而且,更新設定檔上的IP就能更新DDNS的A記錄,所以馬上想到,
那我就寫隻bash定時更新設定檔的IP不就搞定了。
/etc/ddns.conf內容如下: (已調整實際內容,下方只是示意)
#If you want to change DDNS Name, remember to change upnpd.c
# , remember to consider updating problem.
[Synology]
hostname=dodoro.myDS.me
passwd=############
net=MANUAL
status=service_ddns_normal
ip=36.229.6.29
service=true
username=myemail@example.corp
enable_heartbeat=yes
provider=Synology
ipv6=2001:b011:380c:1a4a:11:32ff:fe24:99ed
然後,這是我寫的簡易bash,用於進行動態域名IP更新/etc/ddns.conf的IP。
#!/bin/bash
old_ip=`grep -Eo "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /etc/ddns.conf`
#echo ${ip}
new_ip=`ssh e-course curl -s ip.ccc.tc`
sed -i "s/ip=${old_ip}/ip=${new_ip}/g" /etc/ddns.conf
這支bash,主要執行以下幾件事情。一、取得ddns.conf設定檔的舊IP位置,old_ip即是目前ddns設定的ip。
二、透過ssh連到我的VM上,執行curl -s ip.ccc.tc,用curl取得我的VM外網IP(透過OpenSSH公鑰驗證連到VM)。
ip.ccc.tc是我自架用來取得外網ip用的,您應該能用ifconfig.co做到一樣的效果。
三、再來用sed命令更新ddns.conf中的IP為最新的位置。就搞定。
最後、放到nas的任務排程每五分鐘檢測一次。

最後呢,這裡再提供一個小技巧,如果自己有域名,我可以設定cname,
我們就能使用自己的域名連到浮動IP的電腦啦,下方,我用host指令,查詢e-course.app的位置。
host -t a e-course.app
e-course.app is an alias for dodoro.myds.me.
dodoro.myds.me has address 36.229.6.29
到本文為止,運行起來相當滿意,再也不會打域名,結果連不到主機的情況囉。:)
No Comment
Post your comment