IOIOX 上有一系列完整的教程……

关于 SSL 证书

原理有待学习。 IOIOX 上有 腾讯云的免费申请教程;当然直接进其后台有更为简洁的方案。 问题是腾讯云只支持 单域名的证书;而泛域名(例如所有的二级有域名 *.example.com)都是要收费的;网站上另外的 免费申请Let's Encrypt泛域名SSL证书教程 教程好像失效了。

反向代理+内网穿透 实现无端口访问

主要参考:群晖NAS反向代理 + 内网穿透 = 无需端口访问内网所有服务无需端口

基本原理

http协议标准端口为80,https协议标准端口为443. 一个网站或者 web 服务是同时支持 http 和 https 两种协议,目前已经慢慢普及 https 的加密协议,本文不再详细介绍,请自行搜索研究.

反向代理

群晖反向代理服务器 首先占用群晖NAS的80/443端口,使用任何域名无端口访问(上面提到过无端口即是用 80/443 端口),都会访问到反向代理服务器,由它根据来访域名再次转发给本机或者内网其他的服务. 例如普遍的VPS服务器安装的 nginx 就是反向代理服务器,所以一个服务器是可以配置多个网站同时使用 80/443 端口的,群晖中的 Web Station 和 反向代理服务器 都是使用的 nginx.

内网穿透

前言已经明确家庭宽带是没有80/443端口的,那么上文提到反向代理服务器是使用80/443端口,外网是无法访问到的,那么就需要配合内网穿透服务来使外网能够访问到群晖的反向代理服务器的80/443端口.
内网穿透需要一台拥有 公网IP80/443 端口的服务器,一般云服务商提供的VPS服务都可以满足需求,并部署 frps 服务器端.下文简称为frp服务器.所以当你想访问内网的网站,实际上是先访问到 frp服务器的80/443端口, 在由frp 服务器转发到内网的群晖反向代理服务器80/443 端口, 在由群晖反向代理服务器 转发给 5000/5001/3001/80等端口.

由此可见,其实内网穿透 frp 服务器 本身也是一个反向代理服务器,高级用户完全可以无需使用群晖的反向代理服务器,直接在frpc.ini 中配置各个域名和内网端口即可实现.

但是我发现很多新手用户对 frpc 的使用并不熟悉,而且部分服务例如本文提到的人人影视以及本站推荐的Bitwarden密码管理服务都没有原生提供https支持, 虽然frpc是可以配置证书的, 但对于新手来说更加复杂, 所以才有了本文这种以群晖反向代理为核心的方案:

  • 内网穿透frp服务器提供80/443端口穿透.
  • 群晖反向代理服务器提供httpsSSL 证书支持,并提供反向代理到内网各设备和服务.

基本配置

准备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
[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

配置群晖反向代理

控制面板 - 应用程序门户 - 反向代理服务器

你可以根据需求自行在此配置更多反向代理设置,可以代理内网的任何设备,例如群晖NAS,路由器,虚拟机,树莓派等等.同时反向代理服务器还可以为不提供 https 支持的服务提供httpsSSL 证书. 【注意】可直接对于 https 的地址配置为本地的 http 地址,这一点非常方便。

配置证书

配置完成后在 安全性 - 证书 中把新增的反向代理配置相应的证书.

Synology 用 Docker 安装 frpc 内网穿透

参考 群晖NAS使用Docker安装配置frpc内网穿透教程

配置域名解析

首先将需要使用的域名在域名解析服务商控制台设置CNAME指向 frp 服务器地址. 例如,按照下面的配置,可设置一条类型为 CNAME 的主机记录为 nas.ioiox.com 记录为 frp.freefrp.net 的解析条目。

配置 Docker

在 Docker 中搜索下载 stilleshan/frpc

配置 frpc.ini 。上面一节中,是将整个泛域名都交给群晖自带的反向代理服务去执行了;下例中直接在这个文件中进行配置,例如这里是 DSM。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[common]
server_addr = frp.freefrp.net # 服务器IP或者地址
server_port = 7000 # 服务器提供的端口号
token = freefrp.net # 服务器提供的token

[web1_xxxxxx] # 为避免错误,一定需更改为比较特殊的名称,不能和服务器端其他配置重名.
type = http # http协议
local_ip = 192.168.1.5 # 填写群晖内网IP.
local_port = 5000 # 群晖内网HTTP端口,默认为5000.
custom_domains = nas.ioiox.com # 填写你的域名

[web2_xxxxxx] # 为避免错误,一定需更改为比较特殊的名称,不能和服务器端其他配置重名.
type = https # https协议
local_ip = 192.168.1.5 # 填写群晖内网IP.
local_port = 5001 # 群晖内网HTTPS端口,默认为5001.
custom_domains = nas.ioiox.com # 填写你的域名

「勾选使用高权限执行容器」 在高级设置中: 【文件映射】装载路径为 /frp/frpc.ini 【网络】「勾选使用与Docker Host相同的网络」

群晖NAS内网穿透各套件独立门户

参见 群晖NAS内网穿透各套件独立门户

有了上面两节的基础之后,就很简单了。 事实上,仅需要在 「控制面板-应用程序门户-File Station」 中进行简单配置即可。