最近买了一台二手的群晖 NAS,虽然自带 quickconnect 可以免费进行内网穿透,但是这个小水管实在是非常勉强,于是又折腾了一遍 Frp 来做内网穿透。在之前的文章中也已经记录过了搭建 Frp 的过程,这次新增了访问 NAS 部分的内容,以及反向代理子域名来访问内网服务,更加便捷。
Frp 的搭建
- 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 设置
- 进入群晖,找一个或创建一个新文件夹用于存放配置文件(稍后会用到)。例如
/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 软路由设置
- 进入 openwrt 软路由后台,点击
服务
–Frp内网穿透
。 - 按照截图内容输入对应的参数,
服务器
填写VPS的IP地址
,端口
填写binding_port
,http穿透服务端口
填写vhost_http_port
,https穿透服务端口
填写vhost_https_port
。 - 在服务列表下方点击添加,按照截图填入配置。
Frp协议类型
选择TCP
,远端端口
填入一个新的端口不要与其他冲突,比如9003
。内网主机地址
选择软路由后台地址的IP
,内网主机端口
填写80
。 - 结束后点击
保存&应用
即可,现在在 frp dashboard 中可以看到新的连接,并且通过vps的ip + 刚刚填入的远端端口
就可以访问软路由后台了。
反向代理一个域名
这一步不是必须的,只是因为使用 ip+端口号
的形式远程访问不太方便,可以通过反向代理后使用子域名来访问我们内网的服务。
- 解析一个或多个子域名到我们的 VPS,取决你有几个远程服务,以一台 NAS 为例。
- 通过宝塔面板、1Panel、NPM等工具对这个子域名
nas.example.com
进行反向代理,代理的地址为 http://127.0.0.1:9001 (端口号与前面 NAS 配置文件中的remote_port
一致,如果是反向代理的软路由后台,就与远端端口
保持一致即可),并且配置 SSL 证书。 - 完成后即可通过
nas.example.com
直接访问内网服务了。
注意
- 以上的端口号不用冲突,可以在 SSH 后终端里输入
lsof -i:端口号
来确认该端口号是否被占用,如果没有被占用则不会返回任何结果,如果有返回结果说明该端口已被其他服务所占用,就换一个。 - 记得在防火墙处放行上面所有用到的端口,特别是使用阿里云、腾讯云的 VPS。
后记
本人使用的是阿里云香港的服务器,在下午 6 点左右测试,观看内网 emby 的电影速度可以达到 3M/s,速度还是不错的,足够使用了。
另外,我也尝试过搭建 tailscale 做内网穿透,速度没有 Frp 快,而且 tailscale 需要下载一个客户端,每次使用还需要开启这个客户端,不太方便,但是 tailscale 看上去更加安全保险一些。如果你想尝试 tailscale 的搭建,可以参考这篇文章。
还是使用zerotier吧
之前做功课的时候,有人说和 tailscale 差不多,而且也有节点被封掉的情况,所以就没有深入使用了。
马克
自己搭薛微有点麻烦,软路由可以直接装DDNSTO,挺方便的
我也有试过 DDNSTO ,还不错,只是口子小了点。因为我有闲置的服务器,就想着自己弄比较划算。
我目前也在用,客户端和服务端都直接docker,两个文件映射一下,就搞定了,很方便
docker 确实很方便呢,像我这种小白,docker 可太省心了。
内网穿透也这么麻烦呀,还是有公网IP省心。
有公网 IP 那确实更方便,只是住出租房,我就懒得去跟运营商 battle 了。
不错!不过我这家里宽带有公网IP,直接DDNS域名动态解析一下+端口号就可以访问了
我这种 I 人还是懒得去找运营商 battle 了,反正自己有服务器就自己搞搞算了
最近也在研究这个,值得参考一下
也可以考虑参考文章里用 docker 安装,讲得非常详细。