在内网使用公网域名访问内网群晖NAS网站

修改说明:原文(本文第一至第三部分)是去年写的,可以看出一个小白在网络设置中的艰苦探索,今天回头来看看,确实是走了一段弯路,最终的解法其实很简单,就续写在后面,作为第四部分吧。

>>>以下为去年的原文>>>

小公司,公司内网有一台群晖NAS,平时做做存储,近期为提升公司信息化管理水平,找人开发了几个小网站,供员工及固定客户访问使用。因网站仅固定人员访问,且公司网络有公网IP,也为了节约成本,就把网站架在了内网的群晖NAS上,同时在腾讯云注册了几个“.cn”的域名(下面以mydomain.cn为例),开通了免费的DNS解析服务。网站上线成功,公司形象及办公效率大大提升。隔壁公司的好兄弟一看眼红了,因关系不错,就帮他们原封不动也部署了一套,因为网站架设在内网,两家公司的网络还有一些差异,网站的访问设置过程中碰到了一些问题。

一、基础篇:内外网使用不同的访问方法

1.在外网访问NAS网站

在群晖的Web Station里设置好了网络门户,外网用户就可以通过域名来访问网站了,但不能使用纯域名,还得在域名后面加上端口号。因为公司网络虽有公网IP,但80、443端口是关闭的,只能通过端口映射来解决这个问题,就通过路由器的端口映射功能(或使用UPnP功能)把NAS的80、443端口映射到了路由器的8000、8001端口。这样,在外网就可以通过“http://mydomain.cn:8000”或“https://mydomain.cn:8001”访问内部网站了。

2.在内网访问NAS网站

因NAT回流的问题,内网的NAS网站只有在外网的时候才能使用域名访问,在内网是不能用域名来访问的。如果没有特殊需要,当然可以在内外网使用不同的方式来访问网站,在内网访问的时候,就直接使用NAS的局域网IP地址如“http://192.168.1.5”或“https://192.168.1.5”来访问就可以了。因为在内网可以直接访问NAS的80、443端口,80、443是默认端口,就不需要添加端口号了。

二、进阶篇:内外网都使用域名访问群晖NAS上的网站

内外网使用不同的访问方法虽然简单,但存在一些问题,一是经常在内外网不同场景中办公的员工感觉不太方便;二是几个网站之间都有一些网页间跳转的链接,如果是使用域名跳转,则内网无法访问,如果使用内网IP跳转,则外网无法访问。解决这些问题的最好办法是让内外网都使用域名来访问NAS上的网站。

1.自定义Hosts或DNS解析

电脑上都可以自定义设置Hosts,基本格式是“192.168.1.5 mydomain.cn”(地址和域名间有一个空格,每条记录单独一行),当我们访问“mydomain.cn”时,就会直接访问“192.168.1.5”,这对于固定在办公室的台式机来讲问题不大,但如果电脑太多需要每台都设置就比较麻烦,而且员工的笔记本电脑需要在内外网间来回移动,设置固定的Hosts就不太现实了。

最佳的办法是在路由器上进行自定义Hosts或设置DNS服务,我公司网络使用了一台H3C的路由器,找到“高级设置”-“应用服务”-“DNS Server”,新增一项静态域名设置就完成了。

在内网使用公网域名访问内网群晖NAS网站插图

商用路由器的设置功能比较齐全,好多的家用路由器设置功能比较简单,往往没有DNS服务可供设置。兄弟公司就使用了一台小米路由器AX3600的路由器,在网页设置界面中没有自定义Hosts或DNS服务的功能,但在手机管理APP“小米WIFI”中有“自定义Hosts”的功能,在手机APP里按基本格式设置即可。

在内网使用公网域名访问内网群晖NAS网站插图1

2.设置反向代理

我公司的路由器设置好端口映射和DNS服务后,内外网的访问都没有问题了,但兄弟公司的访问出现了问题。因为自定义Hosts或DNS Server里的域名和网址不能加上端口号,所以只解决了域名和网址的转换,还没有解决端口的问题。NAS网站在内网的端口号是默认的80和443,在内网使用公网域名带端口号如“http://mydomain.cn:8000”访问时,我公司的H3C路由器在进行DNS解析时会同时执行端口映射功能就把8000映射到NAS的80端口实现访问,而兄弟公司的小米路由器在进行DNS解析时不执行端口映射功能,就没有办法访问到80端口,导致访问失败。要解决这个问题,就需要在NAS里设置反向代理。

打开NAS的控制面板,在“登录门户”的“高级”页面里点击打开“反向代理服务器”,新增两项反向代理服务。

在内网使用公网域名访问内网群晖NAS网站插图2

这样,在内网使用“http://mydomain.cn:8000”或“https://mydomain.cn:8001”访问的时候,路由器会通过自定义Hosts或DNS服务跳转到NAS,而NAS会将所有8000或8001的端口访问都代理到80和443端口,顺利实现网站的访问,实现了内外网都可以使用同样的“域名+端口号”访问到内网NAS上的网站了。

三、高级篇:内外网都使用https安全访问

1.使用https安全访问

考虑到网站在访问过程中许多公司信息和客户资料在网络上传送,为保障信息安全,网站仅提供https安全访问。这就需要在NAS上安装相应的签名证书,否则在进行https访问时,浏览器会提示网站存在安全问题,严重的话会影响网站访问。首先,在腾讯云申请了免费的签名证书,因为有几个网站,还有几个二级域名,每个都需要申请各自的证书。其次,在NAS上安装这些证书,并且在“证书设置”里将NAS的各项服务和对应的证书一一匹配设置好。这样,用户在使用https访问网站时,浏览器会确认这是一个安全的网站而不会阻拦,实现安全访问。

在内网使用公网域名访问内网群晖NAS网站插图3

2.在内网实现https安全访问

问题还是出在了兄弟公司,按我公司原样设置好证书,外网访问是没问题了,但在内网访问时,浏览器还是提醒存在安全问题,查看详情是因为证书不匹配。经过一番折腾,尝试着在反向代理服务器进行进一步设置,把原来“*:8001”分解,把每一个域名都单独设置反向代理(如下图),设置完成后再在内网使用浏览器进行https访问,安全通过,问题解决了。

在内网使用公网域名访问内网群晖NAS网站插图4

对于业务量不大的小公司来讲,把网站架设在内网NAS上不失为既能提升管理效率又能控制成本的一种有效手段。但由于公司的供电保障情况不同,网络布设情况也较复杂,所以公司内部NAS的安全性、稳定性远不如云服务器来得高,需要高稳定性和安全性的网站还是应选择部署在云服务器上。

>>>以下为今年续写的部分>>>

四、后续篇:把走过的弯路捋直了

1.出现了新情况

前文中有个细节交待一下,我和兄弟公司的NAS主机都使用UPnP方式向路由器提交端口映射表,路由器上不再作端口设置了。最近兄弟公司上了一套广告屏系统,主机在内网,终端屏内外网都有,按照原来的做法,注册了域名和解析,内网在小米WIFI内设置自定义Hosts,外网没有采用UPnP方式,而是直接在小米路由器里设置了端口映射。结果问题出现了,内网广告屏访问主机不稳定,经常连不上,查了一下路由,发现内网通过域名访问时,有时是广告主机,有时是NAS,没有规律。思来想去,不得要领,只好把各种可能的设置逐一试试。当在小米WIFI自定义Hosts里把广告主机那行删除后,内网对广告主机的域名访问就正常了,查域名的路由就显示是网络的公网IP地址,显然是小米路由器的端口映射起作用了。

2.把老问题也给解决了

我好像明白了一个道理,小米路由器的端口映射对WAN(外网)和LAN(内网)口都起作用,无论是外网还是内网发起域名访问都能映射到指定的内网主机上。而UPnP只对WAN(外网)起作用,当从LAN(内网)访问时,UPnP不起作用,路由器收到访问请求但没有找到对应的主机而认为这是一条无效信息就丢弃了,所以在内网用域名就无法访问到内网主机。以此类推,干脆把小米路由器的UPnP功能关闭,把NAS需要的端口映射手动添加到小米路由器里的端口映射表里,再把小米WIFI自定义Hosts里的内容全部删除,内外网访问NAS主机都没有问题。这时,无论是外网还是内网,都使用一样的域名+端口,都由路由器使用端口映射统一转发,理论上也就不需要NAS里的反向代理服务器了,在把反向代理服务器的内容都删除后访问确实也没有问题。

这样,就把原来外网访问的一步走(UPnP)和内网访问的两步走(自定义Hosts和反向代理服务器)统一为新的一步走(端口映射),把走过的弯路给捋直了。而反思我自己公司的H3C路由器,其实也不需要设置DNS Server,这个路由器的UPnP对外网和内网都是有作用的(不同的厂家有不同的思路),只需要删除DNS Server里那个多余的设置就可以了。

原文链接:https://blog.csdn.net/weixin_56957163/article/details/131321912

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享