一键脚本自建 Frp 内网穿透访问家里 NAS 和软路由
最近,我购入了一台二手的群晖 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 -----------------------------------
在此过程中,你可以根据需求调整
frps
的端口配置及相关参数。完成安装后,通过浏览器访问http://<IP>:<dashboard_port>
即可打开 Frp 的面板。
NAS 设置
配置文件:
进入群晖 NAS,创建一个文件夹用于存放配置文件,例如
/docker_data/frp
。然后,在本地创建一个frpc.toml
配置文件,内容如下:[common] server_addr = 000.111.222.333 # VPS 的 IP server_port = 5443 # VPS 上设置的 bind_port token = 你的token [NAS] type = tcp local_ip = 192.168.1.10 # NAS 的局域网 IP local_port = 5000 # 群晖默认端口 remote_port = 9001 # 与 VPS 通信的端口 [emby] type = tcp local_ip = 192.168.1.23 local_port = 8096 remote_port = 9002
将配置文件上传到
/docker_data/frp
目录下。下载并运行 Frpc 容器:
在群晖的 Container Manager 中搜索
Frpc
,找到stilleshan/frpc
并下载。在运行容器时,确保以下配置:- 开启自动重新启动。
- 在存储空间设置中,添加
/docker_data/frp/frpc.toml
文件到容器内/frp/frpc.toml
路径。
现在,可以在 Frp 面板中看到连接信息,并通过
http://<VPS IP>:<remote_port>
访问 NAS。
OpenWrt 软路由设置
进入 OpenWrt 后台:
选择服务 - Frp 内网穿透,按照以下步骤填写配置:
- 服务器:填写 VPS 的 IP 地址。
- 端口:填写
binding_port
。 - HTTP 穿透服务端口:填写
vhost_http_port
。 - HTTPS 穿透服务端口:填写
vhost_https_port
。
添加服务配置:
在服务列表下方点击添加,根据需求配置 Frp 协议类型、远端端口(如 9003),并填写内网主机地址和端口(如软路由后台地址的 IP 和端口 80)。
保存并应用:
完成后,可以在 Frp 面板中看到新的连接信息,通过
http://<VPS IP>:<远端端口>
访问软路由后台。
反向代理一个域名
虽然使用 IP+端口号
的方式可以远程访问,但通过反向代理后使用子域名访问内网服务会更方便。
解析子域名到 VPS:
例如,将
nas.example.com
解析到 VPS。配置反向代理:
通过宝塔面板、1Panel 或 NPM 对子域名进行反向代理,代理地址为
http://127.0.0.1:9001
(与前面 NAS 配置文件中的remote_port
一致),并配置 SSL 证书。完成后即可通过nas.example.com
直接访问内网服务。
注意事项
- 确保端口号不冲突,可以通过
lsof -i:<端口号>
检查端口是否被占用。 - 在防火墙中放行所有用到的端口,特别是使用阿里云或腾讯云的 VPS 时。
后记
我使用的是阿里云香港服务器,测试时内网 emby 的电影速度可以达到 3M/s,足够日常使用。另外,我也尝试过搭建 Tailscale 进行内网穿透,尽管 Tailscale 更安全,但使用不如 Frp 方便。