为何外界无法跟局域网内的NAS互通?

1.前言

当设置好了NAS以后,大家的心情一定是很雀跃的。
因为从此有了自己专属的储存空间,而且容量与如何使用完全取决于自己。
现在的NAS功能又多的不得了,可以备份、分享资料,下下下,更有各种的多媒体服务。
但NAS接上网络,装好硬盘后,事情却不是那一回事!!怎么我们无法从外连回家中的NAS呢?
厂商虽然提供了各种的向导辅助等看似简单的设定工具。
但这些工具一点都不简单,NAS不通还是不通!

本片文章不是一步一步傻瓜化的教程,如果你只是想照着做而不愿意自己理解其原理的话,请关闭网页。本篇文章也许无法解决每个人个别的问题,但它可以帮助您了解,从外部无法连上家里的NAS,这问题是出在哪里?
知道问题在哪,要解决问题就有了明确方向,那么解决问题应该只是早晚而已。

2.基础认识

Local Area Network,LAN:局域网络,就是家里的网络
Wide Area Network,WAN:广域网络,就是外面的网络
Private IP:也常被叫做LAN IP,就是私人IP,诸如192.168.xx.xx,10.0.xx.xx
Public IP:也常被叫做WAN IP,就是公共IP,例如168.95.1.1
Port:通信端口,电脑联机时的通信端口,又分为TCP与UDP两大类。
DDNS,Dynamic Domain Name Server:动态域名服务。

通信端口,Port
大家都知道要能上网一定要有IP,但是知道连线时还需要通信端口(Port)的人就不多了。
因为电脑同时处理的连线很多,所以它就必须同时有很多的通信端口来处理这些事情。
这就很像是我们去银行的时候,他们也是同时开了很多窗口来处理事情一样。

以我们连线到某网站 来说,事情是这样的。(以下省略三次握手中间过程,只讲结果)
我们的电脑会随机开一个通信端口(Port),例如2251,然后就连线到SIS网站服务器的80端口。
SIS会将网页从它的80端口再传回我们电脑的2251这个端口。
因此资料的传送一定是这样的:来源IP+来源端口,目的IP+目的端口。
网络上资料通信的完整地址应该是 IP:Port才对,只是Port一般都是隐藏不显示而已。

为什么某网站 的通信端口是80呢?
因为有很多的通信端口是被默认的。
例如FTP是21,Telnet是23….等等,大家可以参考Wiki

3.实际情况分析-有公网IP的情况

3.1 没有路由器的情况:

如果NAS是直连调制解调器,而且调制解调器不会自己拨号。
NAS是自己PPPoE拨号上网,这种情况是最单纯的。
因为这时NAS是直接对外,与外界之间的连线阻碍最少,当然这也是最危险的方式。
另外一个情况是NAS是放在路由后面,但设定了NAS是属于DMZ区域,那么也跟直连效果相当。

注意:现在有的调制解调器会自己拨号,那么调制解调器的角色就跟路由器一样了。

3.2 有路由器的情况:

3.2.1 NAS在路由器后的对外联机

路由器做的事情是这样的,它会自己拨号然后分配私人IP给它底下的电脑。
路由器底下的电脑没有真正的公共IP(Public IP),只有私人IP(Private IP)。
所以路由器底下的电脑连出去或外面资料连进来时,都必须透过路由器的"转发"。
路由器有一个特色,这大家务必要先知道,那就是路由器有一个转发表。

以下NAS对203.75.36.21的联机分为四个步骤来说明:(假设路由器PPPoE拨号获取得的WAN IP为114.80.166.240)
1.NAS先连线到路由器的LAN IP:192.168.0.1,路由器会记录192.168.0.2要连到203.75.36.21。
2.路由器以WAN IP:114.80.166.240连到203.75.36.21。
3.203.75.36.21将资料传回路由器的WAN IP:114.80.166.240。
4.路由器根据刚刚记录的转发表,将203.75.36.21传回的资料再传回给NAS的IP 192.168.0.2。

以上的说明省略了端口,大家要记得连线时一定连带有通信端口(Port)存在。

3.2.2 路由器外部对内的联机

如果今天有笔资料从外部(203.75.36.21)发到路由器WAN IP的21号端口(114.80.166.240:21)进来,
但这资料并不是刚刚我们对外请求的资料。
这时路由器的转发表自然没有这笔记录,所以也不知道这资料要送往何处。
那这会发生什么事情呢?当然这资料就会被舍弃掉。
所以为什么说路由器是一个天然的屏障就是这个关系,不请自来的资料都会被丢掉!
大家看到这里知道问题出在哪里了吗?
我们如果架设了像NAS这样的Server,最常见的就是外部要向NAS要资料。
这些资料当然都是不请自来的,所以这些请求全部都会被路由器舍弃掉…
那这该如何是好呢?

3.2.2.1 在路由器下建立端口(Port)的转发

要解决不请自来的联机请求很简单,就是建立一个端口的转发规则。

以FTP这服务为例:
我们可以告诉路由器,所以连接到路由器21端口的连接,通通转接到我NAS IP:192.168.0.2的21端口
以后外界对于FTP的请求都会被转送到NAS去。
NAS就会根据这些请求将资料送到外部,这不就通了吗?

3.2.2.2 将NAS的IP放置于路由器的DMZ区域内

我不太建议为了省事就将NAS设定成DMZ,因为这样等于NAS赤裸裸的暴露在网络上。所有的通信端口都是外面可以直连的,这样很容易被攻击或一直被无聊的人枚举密码。所以正确的观念应该是"只转发需要的端口",因为只有在路由器上有转发的端口才会通。虽然我们只转发了部分的端口,但不用担心,我们内部主动发起的连线还是会通的。

4.实际情况分析-没公网IP的情况

首先明确一个概念ISP(Internet Service Provider),互联网服务提供商,即向广大用户综合提供互联网接入业务、信息业务、和增值业务的电信运营商。如中国电信,中国联通, 长城宽带。

小区宽带比起一般的网络方案,价格较为低廉,但小区宽带的限制就不是每个人都知道。小区宽带是业者承租网络,然后再以分享的方式租给用户。也就是说问电信联通这种最高级别的ISP租带宽 ,再分享给你普通用户使用。简单的说,这种网络本身可以看成是一个大路由器,它底下的所有用户电脑都是透过业者的路由器共用一个公网IP连上网。

4.1 使用者没有路由器的情形:

使用者如果没有加装路由器,那么外界还是无法直接连到LAN的NAS。这时候用户必须请你的网络运营商帮你在他们的路由器上做端口的转发。但每个IP可用的端口是有限的,一共就是2的16次方,65536个。每家运营商的作法不同,有的会很干脆的先来先赢,谁先来讲,就把端口转给谁。也有的运营商会保留常用的默认端口,而分配一些端口给使用者用。
例如FTP的21 端口不转给使用者,而提供8021 给使用者。(只是随便举例)
这样又会有两种作法:
(1)使用者请网络运营商将8021转到NAS的21端口。
这样子外部要连线时,使用者必须手动将FTP软件里的端口改成8021。
好处是NAS上的设定不用改变。

(2)第二种作法是请业者将8021转到NAS的8021端口
这样子外部连回NAS时,一样要将端口改成8021。
同时在NAS上也必须在FTP服务设定的地方将FTP端口改为8021。

4.2 使用者有路由器的情形:

如果用了这种无公网IP的网络,又用了路由器,这时候路由器的WAN口分配到的IP其实就是ISP的路由器分配给你的内网IP。你真正的出口WAN IP是在ISP路由器上。那么这时候连线就是被转发两次,一次是NAS跟路由器,一次是自家的路由器跟网络运营商的路由器。既然联机是转发两次,想当然,端口的转发也必须设定两次。
因此这种情形比较麻烦,首先要请网络运营商将端口转到自家路由器的端口。然后要在自家路由器上将端口转到NAS的端口。

没有公网IP的解决方法

(1)请业者开通VPN的端口给你,然后你可以在NAS上或是在自家路由器架设VPN。以后要存取NAS资源的时候就先建立VPN连线,这时你人在外面就会像在自己家里一样。要存取NAS的什么服务都没有问题,但如果要P2P还是会有问题。

(2)通过中转服务器的服务。

请求商业公司的中转服务,例如Synology有提供内建的中转服务,称之为QuickConnect。花生壳,NAT123等都有类似服务。关于中转的原理请参考我之前的文章 群晖的QuickConnect快速连接技术白皮书 这篇文章里把打洞,中转两种方式都描述到了。

(3)换ISP!既然架设了NAS,拥有完全自主的网络控制权才是最重要的。
NAS上的服务这么多,如果都受制于网络提供商,那么会很痛苦。
我个人认为架服务器的人,不是很适合使用无公网IP的网络。

(4)如果周围没有能提供公网IP的ISP,那请考虑买房搬家。搬到一个有公网IP的地方。
(欢迎来上海买房,既有公网ip 还不封杀80端口 上传又大,1200一年)

什么是DDNS?
DDNS 的全名叫做 Dynamic Domain Name Server  
(动态域名服务),它的工作流程大概是这样,用户首先申请一个DDNS的固定域名(如misechengzhi.synology.me),每次客户端
(这里客户端就是你的NAS或者是路由器,或者是你局域网内的任何一台设备)连接上网之后,便会将这次随机获得IP地址发送到 DDNS
服务商的服务器去,服务器会将该IP与你的域名进行绑定,这样当其他人通过这个域名访问时,DDNS
便可将其解析到你的客户端的IP地址上去。如果客户端的IP地址有变更,那么它会再次告诉DDNS的服务器要求更新。这样用户只需记住DDNS的域名即
可,完美替代了经常会变化的IP地址。
简单的说,就是每隔几分钟,你的运行DDNS的客户端(NAS,PC,路由之类的)就会向DDNS提供商
(Synology,花生壳,3322之类)的服务器说:我现在还活着,我的ip是X.X.X.X。这样即可不用记上文说的WAN
IP:114.80.166.240例如直接记住域名(misechengzhi.synology.me)即可。

所以DDNS 跟你的NAS是否能被外界访问完全没有关系,唯一作用就是帮你记住你的外网 WAN IP。不同的DDNS服务更新WAN
IP的时间也不同。所以当IP改变之后,会有几分钟甚至十几分钟的时间是无法访问的,因为DDNS服务提供商的数据库中留存的仍然是老的IP。

[结语]
所以大家现在应该了解到,有路由器是好事。因为路由器除了可以让我们的各项装置"躲"在屏障的后面,路由器还有很多其他的优点在。

是要让NAS正确的工作,一定要做好端口的转发,这样子你的内外通信才会连接起来。最后,DSM 里提供的 EZ-Internet
功能其实就是上面的DDNS+协助(用脚本自动)在路由上设置端口转发两处合并起来的设置向导而已。所以端口转发不是在NAS上设置的,跟NAS一点关系
都没有。那该如何的在路由器上面做端口的转发,这就必须参考你的路由器说明书了。