最近买了一台二手的群晖 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吧![:?:](https://veryjack.com/wp-content/plugins/wp-alu-master/static/img/icon_question.gif)
之前做功课的时候,有人说和 tailscale 差不多,而且也有节点被封掉的情况,所以就没有深入使用了。![:shock:](https://veryjack.com/wp-content/plugins/wp-alu-master/static/img/icon_eek.gif)
马克
自己搭薛微有点麻烦,软路由可以直接装DDNSTO,挺方便的
我也有试过 DDNSTO ,还不错,只是口子小了点。因为我有闲置的服务器,就想着自己弄比较划算。![:shock:](https://veryjack.com/wp-content/plugins/wp-alu-master/static/img/icon_eek.gif)
我目前也在用,客户端和服务端都直接docker,两个文件映射一下,就搞定了,很方便
docker 确实很方便呢,像我这种小白,docker 可太省心了。![:wink:](https://veryjack.com/wp-content/plugins/wp-alu-master/static/img/icon_wink.gif)
内网穿透也这么麻烦呀,还是有公网IP省心。
有公网 IP 那确实更方便,只是住出租房,我就懒得去跟运营商 battle 了。
不错!不过我这家里宽带有公网IP,直接DDNS域名动态解析一下+端口号就可以访问了
我这种 I 人还是懒得去找运营商 battle 了,反正自己有服务器就自己搞搞算了![:!:](https://veryjack.com/wp-content/plugins/wp-alu-master/static/img/icon_exclaim.gif)
最近也在研究这个,值得参考一下
也可以考虑参考文章里用 docker 安装,讲得非常详细。