疫情期间一直在家,NAS基本上都是在家中使用。外网访问的问题就没怎么管它。这次要去北京一趟,外网访问就被提上了日程。由于我用的是电信的宽带,提前已经申请了公网ip,并且已经在阿里云上申请了自己的域名。当然你也可以使用威联通官方提供的myqnapcloud云服务,或者使用花生壳等内网穿透工具。
什么是DDNS?
DDNS翻译过来就是动态域名服务,他将用户的动态IP地址映射到一个固定的域名解析服务商,用户每次链接网络的时候客户端会通过信息传递把该主机的动态ip地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。
上面说的可能有些绕,实际上DDNS服务就是将用户的IP地址与固定的域名一一映射,即使用户ip变更,而DDNS服务也会随之将域名的解析变更为新的ip地址。再简单一点就是可以使用固定的域名来在外网找到你的电脑。
为什么要用DDNS?
由于电信等提供的公网ip是动态变化的,通常一天或二天一换,如果想要固定的ip地址还需要交额外的费用。所以我们就需要建立DDNS服务来将域名与动态ip进行映射。
如何创建DDNS服务?
我们使用威联通提供的docker来部署DDNS服务,在威联通的ContainerStation中搜索aliddns找到chenhw2/aliyun-ddns-cli
这个容器。
在高级设置中的环境中设置以下参数:
- AKID:对应的阿里云的AccessKey ID
- AKSCT:对应的阿里云的 AccessKey Secret
- DOMAIN:对应需要映射的网址,可以是自己申请的域名,可以是ddns.xxx.com这样就不影响www的域名映射
- REDO:写600就可以了。
然后运行该容器在控制台中看到以下内容,说明就映射成功了:
实际上这个容器的作用就是自动在阿里云控制后台生成了一个域名映射:
这个是自动完成的,并且会在ip地址变更的时候自动更新这条映射。
接下来的内网管理
创建完成了DDNS服务以后,实际上还是无法在外网访问你的NAS,因为NAS是在光猫下的,其ip地址是192.168这样的内网地址,而我们访问域名实际上是将请求发送给了外网地址也可以理解为发送给了光猫。而光猫本身不能处理这条请求,所以会将该请求抛弃。这个时候就需要另一个知识点就是端口映射,我自己的网络拓扑如下:
可以看到我的网络是两层结构,因为光猫只有一个千兆Lan口,所以我在下面有添加了一个提供多个千兆Lan口的路由器。而光猫下只是接了这个路由器而已。
光猫的网关是192.168.1.1,而路由器连接在光猫上那么他的ip地址是192.168.1.3。
而在光猫下的端口映射如下:
端口映射的意义就是如果外网的某个端口得到了请求,光猫会不加处理的将请求发送给映射的局域网ip:端口上。例如我上面的虚拟服务名称为nas的端口映射的意思是:外网的5000端口得到了一个请求,光猫将请求发送给内网的192.168.1.3:5000(也就是中间的路由器上)。
这时候我们依然无法看到我们的NAS,这就需要中间路由器继续进行映射将从光猫得到的请求转发给nas:
以上就完成了映射。
还需要注意什么?
你也可以看到上面的映射中有一个22端口的ssh映射,同理如果防火墙没有放行也连接。
本文的前提条件:
具体步骤:
原文链接:https://www.jianshu.com/p/d176ee2838fe