最近买了一台二手的群晖 NAS,虽然自带 quickconnect 可以免费进行内网穿透,但是这个小水管实在是非常勉强,于是又折腾了一遍 Frp 来做内网穿透。在之前的文章中也已经记录过了搭建 Frp 的过程,这次新增了访问 NAS 部分的内容,以及反向代理子域名来访问内网服务,更加便捷。
目录
Frp 的搭建 {#rtoc-1}
-
SSH 进入 VPS 后台,
-
创建一个文件夹
mkdir ~/data/frp
进入该文件夹
cd~/data/frp
-
一键脚本进行搭建
wget https://raw.githubusercontent.com/mvscode/frps-onekey/master/install-frps.sh -O ./install-frps.sh chmod 700 ./install-frps.sh ./install-frps.sh install
-
按照脚本引导进行安装就好
Please select frps download url: [1].gitee [2].github (default) Enter your choice (1, 2 or exit. default [github]): 2
Your select: 2
Please input frps bind_port [1-65535](Default Server Port: 5443):[按需修改] frps bind_port: [按需修改]
Please input frps vhost_http_port [1-65535](Default : 80): frps vhost_http_port: [按需修改]
Please input frps vhost_https_port [1-65535](Default : 443): frps vhost_https_port: [按需修改]
Please input frps dashboard_port [1-65535](Default : 6443): frps dashboard_port: [按需修改]
Please input frps dashboard_user(Default : admin): frps dashboard_user: [修改成自己的]
Please input frps dashboard_pwd(Default : [修改成自己的] frps dashboard_pwd: [修改成自己的]
Please input frps token(Default : tX5atsFBeqfcucGD):[修改成自己的] frps token: [修改成自己的]
Please input frps subdomain_host(Default : x.x.x.x): frps subdomain_host: [默认就行]
Please input frps max_pool_count [1-50] (Default : 5):[默认就行] frps max_pool_count: 5
Please select log_level 1: info (default) 2: warn 3: error 4: debug 5: trace
Enter your choice (1, 2, 3, 4, 5 or exit. default [1]): [默认就行] log_level: info
Please input frps log_max_days [1-15] (Default : 3 day):[默认就行] frps log_max_days: 3
Please select log_file 1: enable (default) 2: disable
Enter your choice (1, 2 or exit. default [1]): [默认就行] log_file: enable
Please select tcp_mux 1: enable (default) 2: disable
Enter your choice (1, 2 or exit. default [1]): [默认就行] tcp_mux: true
Please select transport protocol support 1: enable (default) 2: disable
Enter your choice (1, 2 or exit. default [1]): [默认就行]
Please input frps kcp_bind_port [1-65535](Default kcp bind port: 6443):[按需修改] frps kcp_bind_port: [按需修改]
Please input frps quic_bind_port [1-65535](Default quic bind port: 6081):[按需修改] frps quic_bind_port: [按需修改]
transport protocol support: enable>)
- 搭建完成后,浏览器通过 http://ip+dashboard_port 就可以访问 frp 的面板,账号密码都是刚刚设置的内容。如果后面 NAS 或者软路由成功连接上这台 VPS,在面板中是可以看到的,除此之外面板平时不会用到。
NAS 设置 {#rtoc-2}
-
进入群晖,找一个或创建一个新文件夹用于存放配置文件(稍后会用到)。例如
/docker_data/frp
,然后在电脑中创建一个文本文件内容填写如下:[common]
server_addr = 000.111.222.333 (你的VPS IP)
server_port = 5443(VPS 上搭建 frp 时设置的 bind_port)
token = 你的token
[NAS]
type = tcp
local_ip = 192.168.1.10 (NAS 的局域网ip)
local_port = 5000 (群晖一般默认5000)
remote_port = 9001 (与 VPS 通信的端口,需填写一个新的,不要与前面的冲突)
use_encryption = true
[emby] (如果没有,可以删除这部分)
type = tcp
local_ip = 192.168.1.23
local_port = 8096
remote_port = 9002 (再填写一个新的)
use_encryption = true
并保存为名为frpc.toml
的文件,记得把括号及括号内的内容删掉,将文件上传/docker_data/frp
目录下。
- 在
Container Manager
中搜索Frpc
,并找到stilleshan/frpc
下载。 - 下载完成后运行容器,有两个地方需要设置
- 记得开启
启用自动重新启动
- 存储空间设置处,点击
添加文件
(不是添加文件夹
),左边选择刚刚上传的文件/docker_data/frp/frpc.toml
,右边填入/frp/frpc.toml
即可。
- 记得开启
- 现在回到 frp dashboard 就可以看到建立连接的信息了,并且通过
vps的ip + 刚刚填入的 remote_port
就可以访问 NAS 了。
Openwrt 软路由设置 {#rtoc-3}
- 进入 openwrt 软路由后台,点击
服务
--Frp内网穿透
。 - 按照截图内容输入对应的参数,
服务器
填写VPS的IP地址
,端口
填写binding_port
,http穿透服务端口
填写vhost_http_port
,https穿透服务端口
填写vhost_https_port
。 - 在服务列表下方点击添加,按照截图填入配置。
Frp协议类型
选择TCP
,远端端口
填入一个新的端口不要与其他冲突,比如9003
。内网主机地址
选择软路由后台地址的IP
,内网主机端口
填写80
。 - 结束后点击
保存&应用
即可,现在在 frp dashboard 中可以看到新的连接,并且通过vps的ip + 刚刚填入的远端端口
就可以访问软路由后台了。
软路由后台设置 软路由后台设置
反向代理一个域名 {#rtoc-4}
这一步不是必须的,只是因为使用 ip+端口号
的形式远程访问不太方便,可以通过反向代理后使用子域名来访问我们内网的服务。
- 解析一个或多个子域名到我们的 VPS,取决你有几个远程服务,以一台 NAS 为例。
- 通过宝塔面板、1Panel、NPM等工具对这个子域名
nas.example.com
进行反向代理,代理的地址为 http://127.0.0.1:9001 (端口号与前面 NAS 配置文件中的remote_port
一致,如果是反向代理的软路由后台,就与远端端口
保持一致即可),并且配置 SSL 证书。 - 完成后即可通过
nas.example.com
直接访问内网服务了。
注意 {#rtoc-5}
- 以上的端口号不用冲突,可以在 SSH 后终端里输入
lsof -i:端口号
来确认该端口号是否被占用,如果没有被占用则不会返回任何结果,如果有返回结果说明该端口已被其他服务所占用,就换一个。 - 记得在防火墙处放行上面所有用到的端口,特别是使用阿里云、腾讯云的 VPS。
后记 {#rtoc-6}
本人使用的是阿里云香港的服务器,在下午 6 点左右测试,观看内网 emby 的电影速度可以达到 3M/s,速度还是不错的,足够使用了。
另外,我也尝试过搭建 tailscale 做内网穿透,速度没有 Frp 快,而且 tailscale 需要下载一个客户端,每次使用还需要开启这个客户端,不太方便,但是 tailscale 看上去更加安全保险一些。如果你想尝试 tailscale 的搭建,可以参考这篇文章。