我们使用群晖NAS的众多APP时,需要选择登录到我们自己的NAS服务器。一般来说我们在外时会通过QC(quick connection)或者使用绑定了DDNS的动态域名来访问。从经验来看使用QC比较慢,而使用DDNS是比较便捷的。在NAS的DSM6.0以上系统中直接提供了简便的DDNS服务。我目前选择的就是群晖公司提供的.myds.me这个域下的动态DNS服务。
但是有一个问题,如果我们回到家中,虽然我们接入了家庭内网,但这些APP软件还是保持了之前的连接,还是使用的DDNS解析的公网IP地址,导致在家中访问内网的NAS还需要出去转一圈再回来,这样在使用同步或者下载NAS的电影到手机上时的速率上限变就成了我们家庭宽带的出口带宽,效率非常低了。这种情况下,我们可以选择退出APP,然后重新选择内网地址或者内网SMB名称进行访问以解决问题。但某些软件,比如好用的全方位同步软件:DS Cloud就无法直接切换登录,需要删除之前的同步连接,重新配置。配置过程繁琐,且会中断同步过程… 让我真的无法接受。
我现在使用一种方法,可以半自动的让APP切换到内外网,免除大部分的手动操作,提高效率。
实现理论如下:
我们在NAS上安装DNS服务(我们叫他NAS-DNS吧),启动NAS自带的DHCP服务,关闭路由器的DHCP服务,按需切换手机的飞行模式。
我们在NAS上自己建立一个本地的myds.me域的解析,我们实现一种’欺骗’,给内网请求myds.me域的设备解析本地NAS地址。利用群晖的DHCP服务,把配置下发到每一个接入内网的设备,修改这些接入设备的DNS服务为NAS-DNS服务器地址。(如果你的路由器支持DHCP参数修改,那么可以在路由器上进行修改,而不使用群晖的DHCP服务。)其他的正常DNS请求我们让NAS-DNS直接转发到宽带提供商的DNS服务器上去或路由器的地址。
终端操作过程:
我们只需要在APP上保持选择用 xxx.myds.me (xxx是我的DDNS域名)这样域名登录的方式即可。当我们在家接入家庭网络时,APP软件用域名登录,解析到的xxx.myds.me 的IP地址就是本地的192.xxx.xxx.xxx 或者其它不可Internet路由的地址。而当我们离开家在外使用蜂窝移动网或其它网络时,由于获取到的DNS服务器是正常的,没有经过本地欺骗过,这样解析过来的IP地址就是我们的家庭宽带路由器公网地址(DDNS)。反之,从外回到家时我们获取的xxx.myds.me的地址又变为了本地…
弊端:
由于我把 myds.me这个域搬到了本地,因此可能会存在无法访问其他以myds.me这个域进行访问的其他设备。不过一般来说这种情况非常少,因为我们为啥要去访问别人的机器?如果自己有多台NAS那我们可以在NAS-DNS中添加多条A记录来解析啊!
弊端2:
我不清楚群晖软件的设计情况,是只管高层应用层调用呢?还是需要调用解析到的真实IP地址?如果是只管高层应用的话,那软件内部就是只使用域名或IP地址,并保持这种唯一状态,那我们的切换就是全自动的。如果是要调用真实IP这就会存在一个缓存问题,APP没有退出之前会一直使用那个登录时解析到的IP地址。这样就算我们已经离开原来的网络,重新加入新的网络后,APP还会使用初始解析地址,导致外网入内网后速率还是提不起来,内网入外网后无法访问的尴尬情况。但是也不怕,先让我们现在回到第一种假设。如果是第一种情况,只需要手机端系统对DNS缓存的定时刷新就OK了,大部分情况下对我们是透明的。如果一直没有刷新,我们可以切换一次飞行模式就好了,这就是所谓的半自动切换。这要操作即可实现,至少可以保证你不用去删除cloud DS的配置就可以切换网络。其它APP你可以选择重新登录一次,或者用域名登录也能解决。
原文链接:https://jingyan.baidu.com/article/e5c39bf5ea3f3639d76033cb.html