一键脚本自建 Frp 内网穿透访问家里 NAS 和软路由

最近买了一台二手的群晖 NAS,虽然自带 quickconnect 可以免费进行内网穿透,但是这个小水管实在是非常勉强,于是又折腾了一遍 Frp 来做内网穿透。在之前的文章中也已经记录过了搭建 Frp 的过程,这次新增了访问 NAS 部分的内容,以及反向代理子域名来访问内网服务,更加便捷。

Frp 的搭建

  1. SSH 进入 VPS 后台,
  2. 创建一个文件夹
    mkdir ~/data/frp
    进入该文件夹
    cd~/data/frp
  3. 一键脚本进行搭建
   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
  1. 按照脚本引导进行安装就好
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>)
  1. 搭建完成后,浏览器通过 http://ip+dashboard_port 就可以访问 frp 的面板,账号密码都是刚刚设置的内容。如果后面 NAS 或者软路由成功连接上这台 VPS,在面板中是可以看到的,除此之外面板平时不会用到。

NAS 设置

  1. 进入群晖,找一个或创建一个新文件夹用于存放配置文件(稍后会用到)。例如/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目录下。

  1. Container Manager中搜索Frpc,并找到stilleshan/frpc下载。
  2. 下载完成后运行容器,有两个地方需要设置
    1. 记得开启启用自动重新启动
    2. 存储空间设置处,点击添加文件(不是添加文件夹),左边选择刚刚上传的文件/docker_data/frp/frpc.toml,右边填入 /frp/frpc.toml 即可。
  3. 现在回到 frp dashboard 就可以看到建立连接的信息了,并且通过 vps的ip + 刚刚填入的 remote_port 就可以访问 NAS 了。

Openwrt 软路由设置

  1. 进入 openwrt 软路由后台,点击服务Frp内网穿透
  2. 按照截图内容输入对应的参数,服务器填写VPS的IP地址端口填写binding_porthttp穿透服务端口填写vhost_http_porthttps穿透服务端口填写vhost_https_port
  3. 在服务列表下方点击添加,按照截图填入配置。Frp协议类型选择TCP远端端口填入一个新的端口不要与其他冲突,比如9003内网主机地址选择软路由后台地址的IP内网主机端口填写80
  4. 结束后点击保存&应用即可,现在在 frp dashboard 中可以看到新的连接,并且通过 vps的ip + 刚刚填入的远端端口 就可以访问软路由后台了。
软路由后台设置
软路由后台设置

反向代理一个域名

这一步不是必须的,只是因为使用 ip+端口号的形式远程访问不太方便,可以通过反向代理后使用子域名来访问我们内网的服务。

  1. 解析一个或多个子域名到我们的 VPS,取决你有几个远程服务,以一台 NAS 为例。
  2. 通过宝塔面板、1Panel、NPM等工具对这个子域名 nas.example.com 进行反向代理,代理的地址为 http://127.0.0.1:9001 (端口号与前面 NAS 配置文件中的 remote_port 一致,如果是反向代理的软路由后台,就与远端端口保持一致即可),并且配置 SSL 证书。
  3. 完成后即可通过 nas.example.com直接访问内网服务了。

注意

  1. 以上的端口号不用冲突,可以在 SSH 后终端里输入 lsof -i:端口号来确认该端口号是否被占用,如果没有被占用则不会返回任何结果,如果有返回结果说明该端口已被其他服务所占用,就换一个。
  2. 记得在防火墙处放行上面所有用到的端口,特别是使用阿里云、腾讯云的 VPS。

后记

本人使用的是阿里云香港的服务器,在下午 6 点左右测试,观看内网 emby 的电影速度可以达到 3M/s,速度还是不错的,足够使用了。

另外,我也尝试过搭建 tailscale 做内网穿透,速度没有 Frp 快,而且 tailscale 需要下载一个客户端,每次使用还需要开启这个客户端,不太方便,但是 tailscale 看上去更加安全保险一些。如果你想尝试 tailscale 的搭建,可以参考这篇文章

参考文章

16 评论

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注

  1. 这个是属于哪种中转方案吧,我是一直有ipv6,ddnsgo解析,端口转发,反代。再加一个导航页简直太省心了 :lol: 不过我没试过电影 有一次测试下载好像也在3M左右,电影现在存移动云盘了,挂载到alist,在观看的设备上使用infuse和fileball就可以观看了,速度起飞,但是移动云盘就是资源少。 :oops:

    • frp 是蛮常见的中转方案了,我对 ipv6 不太熟,所以没想着这种方式。我电影还是更喜欢下载下来看,感觉反正 NAS 后台挂着慢慢下,回去就有了。