[分享]利用Synology NAS打造私人專屬的DNS cache

[注意]
安裝非Synology官方的套件可能會影響系統穩定度。
如果需要原廠技術支援時,原廠可能會要求您先移除非官方套件才給予協助。

[前言]
以前不管是在家還是在外,小弟一直都是用相同的網址來連接家裡的NAS。
有次偶然間發現,在家裡連接NAS的時候,速度奇慢無比。
原來在家裡以公共的網址連接家裡的NAS時,是先從電腦連到WAN,再連回自己家的NAS。
想當然爾,這樣的速度一定是個悲劇,後來懷疑問題在NAT Loopback上。
Synology說是Draytek 2920n的關係,而Draytek說自己的機器沒有問題。

後來請教了公司的MIS以後,才知道有兩個解決辦法:
1.在家裡就直接用Private IP連,在外才用網址來連。
但這方法很麻煩,尤其是用在無法自由切換設定檔的軟體上。
有些軟體想要換個連線網址,還要設定精靈從頭到尾跑一次耶~

2.自己在區網內架設DNS Server來解析IP。
但這方法有個麻煩的問題,請參考[分享]Synology DNS server套件簡單設定

所以小弟認為使用Dnsmasq這個套件是最簡單的解決方案,而且它還可以充當DNS Cache使用。
使用了Dnsmasq以後,不管你在家或在外,你通通可以用同一個網址來連接NAS。
在家就會自動將網址轉為私人IP,在外同樣的網址就會被公共的DNS server轉為公開IP。

以下就一步步跟著小弟做吧。

[步驟]
1.開啟DSM SSH連線,並重新啟動NAS。
※重新啟動是原廠的指南建議,可能這樣比較安全些吧。
[分享]利用Synology NAS打造私人專屬的DNS cache

2.使用PieTTY登入DSM
帳號一定要用:root
密碼則是跟原來admin的密碼一樣。
第一次以SSH連接DSM會有一些提示訊息,不用理會它,按確定就可以了。
[分享]利用Synology NAS打造私人專屬的DNS cache

3.安裝bootstrap。
可以參考原廠安裝bootstrap,ipkg指南
先確認自己的NAS是使用什麼CPU,Synology DS CPU對照。
這次我是以DS212+做示範,從以上網頁得知DS212+是使用ARM的CPU,所以要下載對應的版本。

a.改變目錄,輸入:cd /volume1/@tmp
b.下載專用的bootstrap,輸入:wget http://wizjos.endofinternet.net/synology/archief/syno-mvkw-bootstrap_1.2-7_arm-ds111.xsh
c.將下載的檔案權限變為可執行,輸入:chmod +x syno-x07-bootstrap_1.2-7_arm.xsh
※這步驟我也曾經省略過,好像也沒有關係。
d.安裝bootstrap,輸入:sh syno-x07-bootstrap_1.2-7_arm.xsh
e.移除安裝完的檔案,輸入:rm syno-x07-bootstrap_1.2-7_arm.xsh
※這步驟我也很常省略:p
f.更新套件清單,輸入:ipkg update
g.未來如果要升級已安裝套件,則可以輸入:ipkg upgrade

[分享]利用Synology NAS打造私人專屬的DNS cache

[分享]利用Synology NAS打造私人專屬的DNS cache

4.安裝方便使用的文字編輯軟體:nano。
輸入:ipkg install nano

[分享]利用Synology NAS打造私人專屬的DNS cache

5.現在的DSM版本有一個問題,重新開機以後會無法執行bootstrap。
這是因為bootstrap的路徑問題,所以趁還可以執行bootstrap的時候先修改一下。
a.切換回root目錄,輸入: cd/root
b.輸入:nano .profile
c.將PATH修改為跟下圖一樣:PATH=/opt/bin:/opt/sbin:/...
d.輸入完畢後,按Ctrl + x 離開,依提示存檔

[分享]利用Synology NAS打造私人專屬的DNS cache

6.安裝Dnamasq及修改設定。
a.安裝Dnsmasq,輸入:ipkg install dnsmasq
b.切換到dnsmasq的設定檔目錄,輸入:cd /opt/etc
c.修改dnsmasq設定檔,輸入:nano dnsmasq.conf

[分享]利用Synology NAS打造私人專屬的DNS cache

在Linux下修改檔案的設定蠻簡單的,一般設定檔的附檔名都是.conf。
另外設定檔都是文字檔,很多選項前面會有#的符號。
有#的時候,後面的文字會被當成是註解,所以#後面的選項就會變成Disable。
將#去掉,#後面的選項就會變成Enable了。

a.先找到#no-resolv,將#去掉
b.再找到# Add other name servers here, with domain specs...這段,新增
server=8.8.8.8
server=168.95.1.1

這是在告訴Dnsmasq,該向哪台Dns server查詢資料。
c.重點來了,輸入固定對應的網址與IP的關係。
找到# Add domains which you want to force to an IP address here.這段
在這裡列出來的網址與IP會被Dnsmasq優先使用,不會向外面的Dns server查詢。
例如我新增了以下這幾筆資料:
address=/test.hinet.net/192.168.1.2
address=/test.google.com/192.168.1.2
address=/test.myds.me/192.168.1.2

d.存檔,將NAS重新開機就大功告成了!

[分享]利用Synology NAS打造私人專屬的DNS cache

[測試]
1.由以下的測試可以看出端倪。
test.hinet.net是我虛擬的網址,可以正確的解析出我所設定的IP。
www,hinet.net是真實公開的網址,也可以被正確的解析出來。
換句話說,不管你在Dnsmasq裡面怎麼設定,都不會去影響到真實網址的解析。
[分享]利用Synology NAS打造私人專屬的DNS cache

2.DNS Cache的效能。
我們使用兩套軟體來測試,分別是namebench-1.3.1-Windows.exe與DNSBench

3.namebench-1.3.1-Windows測試結果
[分享]利用Synology NAS打造私人專屬的DNS cache

第一次執行時,Dnsmasq並沒有表現的比較快。
這是正常的,因為電腦是透過Dnsmasq來轉達DNS查詢,多了一套手續,當然會慢一些。
[分享]利用Synology NAS打造私人專屬的DNS cache

第二次再執行時,Dnsmasq內已經有上次查詢的結果了。
在DNS查詢結果的TTL內,Dnsmasq就不會再次向外查詢,而是直接回覆查詢的結果。
速度結果是比第一次快,同樣的區網內其他電腦也可達到加速的效果。
[分享]利用Synology NAS打造私人專屬的DNS cache

3.以DNSBench來做測試。
[分享]利用Synology NAS打造私人專屬的DNS cache

速度依然比公共的DNS Server快一些些。
[分享]利用Synology NAS打造私人專屬的DNS cache

其他不足或不清楚的地方,歡迎再提出來討論喔:)

derliang wrote:
[注意]安裝非官方的...(恕刪)


感謝分享. 如果大大能夠將所下的 command 列出來, 這樣小弟才不會老眼昏花看錯了.
FB: Pctine
補充一下ipkg常用的命令。

1.ipkg update
說明:更新套件清單

2.ipkg list
說明:列出可安裝的套件

3.ipkg list|more
說明:分頁列出可安裝的套件

4.ipkg install 套件名稱
說明:安裝套件

5.ipkg upgrade
說明:更新已安裝的套件

6.ipkg list_installed
說明:列出已安裝的套件

7.ipkg remove 套件名稱
說明:移除套件

8.ipkg
說明:列出ipkg常用的命令
irsjx2vxo3ne3k84dr1dz4,r4pe8bez3/4ne3bq4bew2j92gea jx4hq me-2d8 e3hy4hi2ty k84!
derliang wrote:
後來請教了公司的MIS以後,才知道有兩個解決辦法:
1.在家裡就直接用Private IP連,在外才用網址來連。
但這方法很麻煩,尤其是用在無法自由切換設定檔的軟體上。
有些軟體想要換個連線網址,還要設定精靈從頭到尾跑一次耶~

2.自己在區網內架設DNS Server來解析IP。
但這方法有個麻煩的問題,請參考[分享]Synology DNS server套件簡單設定


我的想法不對!自行刪去原文!
以之前跟Synology打交道的經驗,為了保固服務,ipkg建議能免則免.
直接用DSM中Bind view功能會不會簡單些,更快些就看各自的需求了.
很詳細的心得分享,謝謝!
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!