前言
疫情期間一直在家,NAS基本上都是在家中使用。外網(wǎng)訪問(wèn)的問(wèn)題就沒怎么管它。這次要去北京一趟,外網(wǎng)訪問(wèn)就被提上了日程。由于我用的是電信的寬帶,提前已經(jīng)申請(qǐng)了公網(wǎng)ip,并且已經(jīng)在阿里云上申請(qǐng)了自己的域名。當(dāng)然你也可以使用威聯(lián)通官方提供的myqnapcloud云服務(wù),或者使用花生殼等內(nèi)網(wǎng)穿透工具。
什么是DDNS?
DDNS翻譯過(guò)來(lái)就是動(dòng)態(tài)域名服務(wù),他將用戶的動(dòng)態(tài)IP地址映射到一個(gè)固定的域名解析服務(wù)商,用戶每次鏈接網(wǎng)絡(luò)的時(shí)候客戶端會(huì)通過(guò)信息傳遞把該主機(jī)的動(dòng)態(tài)ip地址傳送給位于服務(wù)商主機(jī)上的服務(wù)器程序,服務(wù)器程序負(fù)責(zé)提供DNS服務(wù)并實(shí)現(xiàn)動(dòng)態(tài)域名解析。
上面說(shuō)的可能有些繞,實(shí)際上DDNS服務(wù)就是將用戶的IP地址與固定的域名一一映射,即使用戶ip變更,而DDNS服務(wù)也會(huì)隨之將域名的解析變更為新的ip地址。再簡(jiǎn)單一點(diǎn)就是可以使用固定的域名來(lái)在外網(wǎng)找到你的電腦。
為什么要用DDNS?
由于電信等提供的公網(wǎng)ip是動(dòng)態(tài)變化的,通常一天或二天一換,如果想要固定的ip地址還需要交額外的費(fèi)用。所以我們就需要建立DDNS服務(wù)來(lái)將域名與動(dòng)態(tài)ip進(jìn)行映射。
如何創(chuàng)建DDNS服務(wù)?
我們使用威聯(lián)通提供的docker來(lái)部署DDNS服務(wù),在威聯(lián)通的ContainerStation中搜索aliddns找到chenhw2/aliyun-ddns-cli
這個(gè)容器。

在高級(jí)設(shè)置中的環(huán)境中設(shè)置以下參數(shù):

- AKID:對(duì)應(yīng)的阿里云的AccessKey ID
- AKSCT:對(duì)應(yīng)的阿里云的 AccessKey Secret
- DOMAIN:對(duì)應(yīng)需要映射的網(wǎng)址,可以是自己申請(qǐng)的域名,可以是ddns.xxx.com這樣就不影響www的域名映射
- REDO:寫600就可以了。
然后運(yùn)行該容器在控制臺(tái)中看到以下內(nèi)容,說(shuō)明就映射成功了:

實(shí)際上這個(gè)容器的作用就是自動(dòng)在阿里云控制后臺(tái)生成了一個(gè)域名映射:

這個(gè)是自動(dòng)完成的,并且會(huì)在ip地址變更的時(shí)候自動(dòng)更新這條映射。
接下來(lái)的內(nèi)網(wǎng)管理
創(chuàng)建完成了DDNS服務(wù)以后,實(shí)際上還是無(wú)法在外網(wǎng)訪問(wèn)你的NAS,因?yàn)镹AS是在光貓下的,其ip地址是192.168這樣的內(nèi)網(wǎng)地址,而我們?cè)L問(wèn)域名實(shí)際上是將請(qǐng)求發(fā)送給了外網(wǎng)地址也可以理解為發(fā)送給了光貓。而光貓本身不能處理這條請(qǐng)求,所以會(huì)將該請(qǐng)求拋棄。這個(gè)時(shí)候就需要另一個(gè)知識(shí)點(diǎn)就是端口映射,我自己的網(wǎng)絡(luò)拓?fù)淙缦拢?/p>

可以看到我的網(wǎng)絡(luò)是兩層結(jié)構(gòu),因?yàn)楣庳堉挥幸粋€(gè)千兆Lan口,所以我在下面有添加了一個(gè)提供多個(gè)千兆Lan口的路由器。而光貓下只是接了這個(gè)路由器而已。
光貓的網(wǎng)關(guān)是192.168.1.1,而路由器連接在光貓上那么他的ip地址是192.168.1.3。
而在光貓下的端口映射如下:

端口映射的意義就是如果外網(wǎng)的某個(gè)端口得到了請(qǐng)求,光貓會(huì)不加處理的將請(qǐng)求發(fā)送給映射的局域網(wǎng)ip:端口上。例如我上面的虛擬服務(wù)名稱為nas的端口映射的意思是:外網(wǎng)的5000端口得到了一個(gè)請(qǐng)求,光貓將請(qǐng)求發(fā)送給內(nèi)網(wǎng)的192.168.1.3:5000(也就是中間的路由器上)。
這時(shí)候我們依然無(wú)法看到我們的NAS,這就需要中間路由器繼續(xù)進(jìn)行映射將從光貓得到的請(qǐng)求轉(zhuǎn)發(fā)給nas:

以上就完成了映射。
還需要注意什么?
這個(gè)時(shí)候理論上你就將你的NAS暴露給了外網(wǎng),但是有可能還是無(wú)法連接到NAS,這通常是防火墻的原因。
你也可以看到上面的映射中有一個(gè)22端口的ssh映射,同理如果防火墻沒有放行也連接。
總結(jié)
本文的前提條件:
- 具備公網(wǎng)ip(電信通過(guò)10000號(hào)是可以申請(qǐng)到的)
- 有自己的域名(域名如果不太熱門真的不貴)
具體步驟:
- 創(chuàng)建DDNS服務(wù)(通過(guò)docker來(lái)完成)
- 內(nèi)網(wǎng)端口映射
- 防火墻設(shè)置