[解決] 社區網路架設NAS並設定Hairpin NAT(Loopback)的方式

家裡購入一台Synology NAS來玩
因為上面有大量的圖片影片檔
希望在外網能以直連的方式來得到較高的傳輸頻寬
這部分有請社區網管提供外網IP且配置一個PORT給我
然後我在家裡的router設定port forwarding, 把PORT:10021導至NAS
所以從外網直連回家裡的NAS是可行的, 例如輸入"https://60.10.10.10:10021"

但有個問題, 要是Client使用家裡的網路就無法用外部IP或DDNS申請的域名連入, 只能用"192.168.1.3"去連
像是手機時而外時而內, 打開APP連NAS還要根據時機切換內網或外網的IP, 很不方便
網路爬文得知Hairpin NAT可以解決這個問題, 但怎麼設定都沒用, 家裡的router是Edge
Router X

家裡的網路架構:
[解決] 社區網路架設NAS並設定Hairpin NAT(Loopback)的方式

ER-X port forwarding的設定:
Hairpin NAT功能有打開
[解決] 社區網路架設NAS並設定Hairpin NAT(Loopback)的方式

參照這篇官方教學設定NAT, 也是沒作用
https://help.tw.ui.com/articles/204952134/
桶麵 wrote:
家裡購入一台Synology...(恕刪)


你要不要試著用gateway當dns
內部連線時解析到的dns 就會指向內部ip

這樣也不會繞了一大圈(效能會變差)
桶麵
我來研究看看~
建議選購透天厝會比較單純一點
桶麵
大哥房子不是說換就換呀
桶麵 wrote:
但有個問題, 要是Client使用家裡的網路就無法用外部IP或DDNS申請的域名連入, 只能用"192.168.1.3"去連


我以前用光纖時,是用 DDNS;現在用社區網路,是用反向代理。

怎麼都沒內網連不上的問題?用內網連時,你是不是忘了加 port?

這個問題去網路儲存裝置板問比較好,那邊 NAS 高手比較多 ....

https://www.mobile01.com/topiclist.php?f=494
桶麵
我有加port; 好, 感謝您的建議
當你的手機位於內網192.168.1.X時,要連"https://60.10.10.10:10021"
手機會判斷目的地60.10.10.10與192.168.1.X不同子網,所以封包會往家用Router ER-X送
家用Router ER-X收到後,判斷目的地60.10.10.10與192.168.11.38不同子網,所以封包再往社區Router送
看來問題是在社區Router沒有NAT Loopback,與家用Router無關
桶麵
這樣子阿.., 那要來跟社區網管詢問看看了
我的做法如下:
先申請一個DDNS,假設為www.abc.com
由外網連到你的NAS server就是www.abc.com:10021
內網要這樣連就需先在內網架一台AdGuardHome的DNS server,
DHCP分配IP時指定DNS server為AdGuardHome。

然後在AdGuardHome裡的「過濾器->DNS改寫」設定www.abc.com為192.168.1.3(即你的NAS server ip)
然後在你的NAS server設定port redirect 10021 to 5001

這樣你的手機 / PC,查詢DNS時會先問內網的AdguardHome,而AdguardHome看到www.abc.com會告訴
來查詢的手機 / PC,這個網址對應的IP是192.168.1.3,就不會繞到外網去了。
素閒人 wrote:我的做法如下:先申請...(恕刪)

您好, 不好意思現在才回應
我照以上方法做了, 成功達到我的需求
不管是外網內網, 輸入相同的網址都可以連到自家的NAS服務
重點在於申請主機的網域後, 要架一個AdGuardHome做內網的DNS改寫, 然後NAS要設port redirect
這邊說明一下Synology NAS的port redirect要怎麼設定
  1. 打開控制台 -> 登入入口 -> 進階 -> 反向代理伺服器
  2. 新增設定參考如下, 主機名稱是網域名稱
  3. 原本在內網用port 5000才能連到的服務, 現在用port 10021, NAS也能幫我自動轉換
反向代理伺服器的好處是, 如要在NAS新增其他的服務, 不用多開新的對外port, 利用子網域名稱(Subdomain)就可以區別, 然後導到對應的port
比如架一個jellyfin server, 反向代理的來源主機名稱設"jellyfin.abc.ds.net", port一樣10021, 目的地為localhost:8096, 這樣就可以利用不同的子網域名連至各自的服務

謝謝大大的指導, 藉機學習了一些網路知識~
文章分享
評分
評分
複製連結

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