前言
前几天看到 Vedio Talk更新了一篇文章和 Vlog ,标题为 利用群晖反向代理服务器实现外网访问内网无需端口号,这可是所有国内群晖用户最基础最刚性的需求.出于好奇看了下文章和 Vlog ,原来教程是基于用户家庭宽带拥有443端口的前提,而国内几乎95%以上的家庭宽带都被 封了80/443端口,所以此方法对于大部分用户来说没并没有参考价值.
不过文章和 Vlog 中提到的 群晖反向代理确实是解决此需求的重要服务,本站也有多篇文章提到反向代理的使用.基于国内大部分 80/443端口被封的用户,想实现无端口访问,即使宽带拥有公网IP,也必须结合 内网穿透服务来使用.这是一种妥协的解决方案,牺牲访问速度来提升域名无端口访问的体验.
授人以渔
本文大量 干货 + 原理 + 图文教程 ,希望以讲解原理来使新手用户能够自己学会配置.如果能完全理解本文,那么群晖所有的外网访问配置都能够轻松解决.
原理解释
端口
几乎任何设备的通讯都是基于
IP+端口的方式才能交互.IP通过域名解析替代了,方便记忆和输入.而端口是通过
http/https协议标准来省略输入.
当你访问
http://www.ioiox.com时,实际上是访问
http://服务器IP:80
当你访问
https://www.ioiox.com时,实际上时访问
https://服务器IP:443
所谓的
无端口访问其实是各浏览器遵循
http/https协议标准帮你省去输入
80/443端口的步骤,这也是为什么运营商不允许家庭宽带架设个人网站
从而封闭 80/443 端口的原因.当然你可以使用其他端口来架设网站,但是浏览器却无法帮你省去端口号,必须使用例如
http://www.ioiox.com:1234的方式来访问.
http 80 和 https 443
http协议标准端口为 80, https协议标准端口为 443.一个网站或者 web 服务是 同时支持 http 和 https 两种协议,目前已经慢慢普及 https 的加密协议,本文不再详细介绍,请自行搜索研究.
反向代理
一台设备或者服务器拥有
65535个端口号,而
80/443端口只有一个,当你设备中部署了一个网站使用了
80/443端口后,那么其他服务和网站是无法在使用
80/443端口的.这时就需要
反向代理服务器来解决.
群晖反向代理服务器 首先占用群晖nas的
80/443端口,使用任何域名无端口访问(上面提到过无端口即是用 80/443 端口),都会访问到反向代理服务器,由它根据来访域名再次转发给本机或者内网其他的服务.
内网穿透
前言已经明确家庭宽带是没有
80/443端口的,那么上文提到反向代理服务器是使用
80/443端口,外网是无法访问到的,那么就需要配合内网穿透服务来使外网能够访问到群晖的反向代理服务器的
80/443端口.
内网穿透需要一台拥有
公网IP和
80/443端口的服务器,一般云服务商提供的vps服务都可以满足需求,并部署 frps 服务器端.下文简称为
frp服务器.所以当你想访问内网的网站,实际上是先访问到
frp服务器的80/443端口,在由
frp 服务器转发到内网的
群晖反向代理服务器的
80/443端口,在由
群晖反向代理服务器转发给
5000/5001/3001/80等端口.
小结
由此可见,其实内网穿透 frp 服务器本身也是一个反向代理服务器,高级用户完全可以无需使用群晖的反向代理服务器,直接在 frpc.ini中配置各个域名和内网端口即可实现.
但是我发现很多新手用户对 frpc的使用并不熟悉,而且部分服务例如本文提到的 人人影视以及本站推荐的 Bitwarden密码管理服务都没有原生提供 https支持,虽然 frpc是可以配置证书的,但对于新手来说更加复杂,所以才有了本文这种以群晖反向代理为核心的方案:
- 内网穿透 frp服务器提供 80/443端口穿透.
- 群晖反向代理服务器提供 https及 SSL 证书支持,并提供反向代理到内网各设备和服务.
配置教程
前期准备
frp服务器
准备
frp 服务器信息,本站已提供免费服务.详情参考:frp内网穿透专栏.
获取
服务器地址,
端口,
Token.
- 服务器地址:free.frp.ioiox.com
- 端口:7007
- Token:www.ioiox.com
配置域名
配置例如
*.ioiox.com的泛域名,
CNAME指向
frp 服务器地址.其含义是指访问任何二级域名都是访问到
frp 服务器,由
frp 服务器转发到内网群晖反向代理服务器.
配置内网穿透
内网穿透客户端 frpc的安装参考frp内网穿透专栏一文中的客户端 frpc 安装教程汇总,推荐使用 docker方式安装.
配置 frpc.ini如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<pre class="inline:true decode:1 " >[common] server_addr = free.frp.ioiox.com server_port = 7007 token = www.ioiox.com [http_xxxxxxx] type = http local_ip = 192.168.1.4 local_port = 80 custom_domains = *.ioiox.com [https_xxxxxxx] type = https local_ip = 192.168.1.4 local_port = 443 custom_domains = *.ioiox.com |
第一段表示
frp 服务器信息,填写本站免费 frp 服务器信息.
第二段表示使用
http的
80端口访问任意
*.ioiox.com的二级域名,都转发给内网群晖的反向代理服务器的
80端口,此处
192.168.1.4为群晖内网IP.
第三段表示使用
https的
443端口访问任意
*.ioiox.com的二级域名,都转发给内网群晖的反向代理服务器的
443端口,此处
192.168.1.4为群晖内网IP.
配置群晖反向代理
控制面板 – 应用程序门户 – 反向代理服务器
新增 nas.ioiox.com
参考下图分别配置
http和
https的反向代理,表示当群晖反向代理服务器收到
http://nas.ioiox.com的请求时,转发到群晖 DSM 的
http内网地址
192.168.1.4:5000.
收到
https://nas.ioiox.com的请求时,转发到群晖 DSM 的
https内网地址
192.168.1.4:5001
新增 rrshare.ioiox.com
参考下图分别配置
http和
https的反向代理,表示当群晖反向代理服务器收到
http://rrshare.ioiox.com的请求时,转发到人人影视的
http内网地址
192.168.1.4:3001.
收到
https://rrshare.ioiox.com的请求时,由于人人影视的 docker 没有提供
https端口,同样可以使用反向代理转发到人人影视的
http端口
192.168.1.4:3001
新增 openwrt.ioiox.com
参考下图分别配置
http和
https的反向代理,表示当群晖反向代理服务器收到
http://openwrt.ioiox.com的请求时,转发到路由器的
http内网地址
192.168.1.1:80.
收到
https://openwrt.ioiox.com的请求时,同样可以使用反向代理转发到路由器的
http端口
192.168.1.1:80
完成配置
你可以根据需求自行在此配置更多反向代理设置,可以代理内网的任何设备,例如群晖nas,路由器,虚拟机,树莓派等等.同时反向代理服务器还可以为不提供 https 支持的服务提供
https及
SSL 证书.
配置证书
配置完成后在 安全性 – 证书 中把新增的反向代理配置相应的证书.
结语
本站关于 内网穿透和 反向代理相关教程已经覆盖的比较全面,更多相关信息请参考:
本站提供免费和付费的技术支持.你可以通过留言,邮件,TG群的方式来技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面