前言
疫情期間一直在家敞斋,NAS基本上都是在家中使用。外網訪問的問題就沒怎么管它衙解。這次要去北京一趟焰枢,外網訪問就被提上了日程蚓峦。由于我用的是電信的寬帶济锄,提前已經申請了公網ip,并且已經在阿里云上申請了自己的域名荐绝。當然你也可以使用威聯(lián)通官方提供的myqnapcloud云服務,或者使用花生殼等內網穿透工具召夹。
什么是DDNS岩喷?
DDNS翻譯過來就是動態(tài)域名服務监憎,他將用戶的動態(tài)IP地址映射到一個固定的域名解析服務商,用戶每次鏈接網絡的時候客戶端會通過信息傳遞把該主機的動態(tài)ip地址傳送給位于服務商主機上的服務器程序,服務器程序負責提供DNS服務并實現動態(tài)域名解析爬虱。
上面說的可能有些繞,實際上DDNS服務就是將用戶的IP地址與固定的域名一一映射跑筝,即使用戶ip變更,而DDNS服務也會隨之將域名的解析變更為新的ip地址曲梗。再簡單一點就是可以使用固定的域名來在外網找到你的電腦。
為什么要用DDNS?
由于電信等提供的公網ip是動態(tài)變化的愧旦,通常一天或二天一換定罢,如果想要固定的ip地址還需要交額外的費用。所以我們就需要建立DDNS服務來將域名與動態(tài)ip進行映射祖凫。
如何創(chuàng)建DDNS服務?
我們使用威聯(lián)通提供的docker來部署DDNS服務,在威聯(lián)通的ContainerStation中搜索aliddns找到chenhw2/aliyun-ddns-cli
這個容器惠况。
在高級設置中的環(huán)境中設置以下參數:
- AKID:對應的阿里云的AccessKey ID
- AKSCT:對應的阿里云的 AccessKey Secret
- DOMAIN:對應需要映射的網址,可以是自己申請的域名,可以是ddns.xxx.com這樣就不影響www的域名映射
- REDO:寫600就可以了峦睡。
然后運行該容器在控制臺中看到以下內容完箩,說明就映射成功了:
實際上這個容器的作用就是自動在阿里云控制后臺生成了一個域名映射:
這個是自動完成的,并且會在ip地址變更的時候自動更新這條映射阻逮。
接下來的內網管理
創(chuàng)建完成了DDNS服務以后秩彤,實際上還是無法在外網訪問你的NAS事哭,因為NAS是在光貓下的,其ip地址是192.168這樣的內網地址鳍咱,而我們訪問域名實際上是將請求發(fā)送給了外網地址也可以理解為發(fā)送給了光貓。而光貓本身不能處理這條請求与柑,所以會將該請求拋棄。這個時候就需要另一個知識點就是端口映射丑念,我自己的網絡拓撲如下:
可以看到我的網絡是兩層結構结蟋,因為光貓只有一個千兆Lan口,所以我在下面有添加了一個提供多個千兆Lan口的路由器嵌屎。而光貓下只是接了這個路由器而已。
光貓的網關是192.168.1.1植榕,而路由器連接在光貓上那么他的ip地址是192.168.1.3尼夺。
而在光貓下的端口映射如下:
端口映射的意義就是如果外網的某個端口得到了請求内贮,光貓會不加處理的將請求發(fā)送給映射的局域網ip:端口上汞斧。例如我上面的虛擬服務名稱為nas的端口映射的意思是:外網的5000端口得到了一個請求,光貓將請求發(fā)送給內網的192.168.1.3:5000(也就是中間的路由器上)粘勒。
這時候我們依然無法看到我們的NAS,這就需要中間路由器繼續(xù)進行映射將從光貓得到的請求轉發(fā)給nas:
以上就完成了映射事富。
還需要注意什么乘陪?
這個時候理論上你就將你的NAS暴露給了外網,但是有可能還是無法連接到NAS啡邑,這通常是防火墻的原因。你也可以看到上面的映射中有一個22端口的ssh映射,同理如果防火墻沒有放行也連接仇穗。
總結
本文的前提條件:
- 具備公網ip(電信通過10000號是可以申請到的)
- 有自己的域名(域名如果不太熱門真的不貴)
具體步驟:
- 創(chuàng)建DDNS服務(通過docker來完成)
- 內網端口映射
- 防火墻設置