所有文章

电信收回了我的公网ipv4,如何外网访问群晖NAS?Frp 内网穿透!效果媲美直连!

calendar-logo
calendar-logo

11 min read

本文详细介绍了Frp的安装过程、配置方法及域名解析,最终实现稳定、安全的远程访问。通过自建Frp,用户能够提高网络控制权和使用体验。

123

前言

公网ipv4 被回收

今天公司NAS外网域名突然访问不了,排查一番,发现用了2年的公网ip被电信收回了,联系了1000电信客服,被告知:

  • 2024年12月30之前,一律收回所有老用户的公网ip,并且新用户已经不提供公网ip了。感慨,以前一个电话就提供公网ipv4的日子,一去不复返了。

  • 如果想继续使用公网ip,需要缴纳 100 元/月 (作为专业的群晖 NAS 垃圾佬,我肯定是不同意的)


接下来要面对的问题

  • 没有公网ip,如何远程外网访问NAS?

  • 使用群晖QC(QuickConnect)可以保证公司 50 个人的流畅使用体验吗?

  • 用第三方的内网穿透工具(花生壳盒子、Zerotier、Starvpn、Tailscale、异地虚拟组网软件…)能保证跟公网ipv4的使用体验一样吗?要收费吗?

我的需求

实现跟ipv4直连的连接速度质量,并且要足够稳定 (毕竟用了这么多年的ipv4直连,如果因没了ipv4要降低我的NAS使用体验,我是 100 个不愿意)

研究一番得出解决方案

通过云服务器自建Frp内网穿透服务,如果购买的服务器上传速度足够优秀,速度和稳定性可以等同于公网 IPv4直连 NAS。

前期准备

  • 腾讯云轻量服务器 (地区选择新加坡,优势是跟中国大陆的距离足够近,价格相对于香港的云服务器来讲,也足够便宜,另外1.5TB的月流量也足够使用)

购买链接

  • 域名 (本文假设你购买的域名是abc.com),域名的作用是为了能够通过域名访问,而不是ip

Frp内网穿透项目介绍

介绍

Frp是一款高性能的开源的内网穿透项目,旨在帮助人们可以通过外网,能随时随地访问家里的NAS 设备、路由器以及其它的自部署开源项目,其本质是一个反向代理工具。

官网地址

Github项目地址

工作原理

architecture.webp 建立连接:用户的设备上的 FRPC 会连接到 FRPS,就像每个人都在排队等着进门。 发送请求:当用户想访问内网服务时,FRPC 会把这个请求送到 FRPS。FRPS 就像一个管理员,接收所有的请求。 转发请求:FRPS 收到请求后,会把它转发到相应的 FRPC,这样请求就到达了用户的内网服务。返回结果:内网服务处理完请求后,把结果通过 FRPC 发回 FRPS,最后再把结果送回给用户。

优势

灵活性:支持多种协议(TCP、HTTP),适应不同类型的服务需求。 内网穿透:允许用户在内网环境中运行服务,而不需要公网 IP。 简化访问:用户可以通过 FRPS 的公网 IP 轻松访问各自的内网服务。

开始安装搭建Frps内网穿透服务

安装Frp 需要安装 2 个部分:Frps 服务端和Frpc 客户端,云服务器安装frps,NAS 安装Frpc

云服务器安装Frps服务端

购买云服务器后,安装 1panel 面板,以下教程将通过1panel 进行操作。

1.新建frp文件夹 CleanShot 2024-10-12 at 01.02.21@2x 拷贝 (1).webp

2.开始搭建

进入projects

cd /root/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

CleanShot 2024-10-12 at 00.59.02@2x 拷贝 (1).webp 跟着安装脚本的流程,一路填写信息即可

安装成功后会得出以下信息

Congratulations, frps install completed!
================================================
You Server IP      : 12.56.34.78
bind port          : 32210
vhost http port    : 13188
vhost https port   : 10566
token              : DLKSDowokkLLp
subdomain_host     : 12.56.34.78
tcp mux            : true
Max Pool count     : 5
Log level          : info
Log max days       : 15
Log file           : enable
transport protocol : enable
kcp bind port      : 16333
quic bind port     : 32222
================================================
frps Dashboard     : http://12.56.34.78:32211/
Dashboard port     : 32211
Dashboard user     : pipufrp
Dashboard password : ODSIkkckckopas
================================================

说明
bind port:端口,FRP 服务器用于监听 FRPC 连接的端口
vhost http port:HTTP 穿透服务端口,用户通过这个端口访问内网的 HTTP 服务
vhost https port:HTTPS 穿透服务端口,用户通过这个端口访问内网的 HTTPS 服务
token:FRPS 和 FRPC 之间的连接令牌密钥,用于身份验证,确保只有授权的客户端可以连接
tcp mux:TCP 多路复用,允许在一个连接上同时处理多个请求,提高效率
Max Pool Count:允许的最大并发连接数,表示 FRPS 可以同时处理的 FRPC 连接的数量
Log Level:这是日志记录级别,info 表示记录普通信息,便于后续查看和调试
Log Max Days:这表示日志文件的最大保存天数,超过这个天数的日志会被删除
Log File:日志文件记录,方便后续查看
Transport Protocol:表示启用传输协议,通常是默认选项
KCP Bind Port:KCP 协议的绑定端口,KCP 是一种快速的传输协议,适用于高延迟的网络情况
QUIC Bind Port:QUIC 协议的绑定端口,QUIC 是一种新型传输协议,提供更快的连接和更低的延迟
FRPS Dashboard:FRP 服务器的管理面板地址,可以通过这个地址访问和管理 FRP 服务
Dashboard Port:访问管理面板的端口
Dashboard User:管理面板的用户名
Dashboard Password:管理面板的密码,用于登录

使用建议

配置调整:根据实际需要,可以调整 Max Pool Count 和其他参数,以优化性能

安装Frpc客户端

因为国内政策原因,Docker‘官方镜像仓库被墙了,在群晖NAS 的Container Manager中搜索docker 镜像时,会发生“查询注册表失败”,所以我将通过“我不是矿神”来安装Frpc 客户端。 asdf

在群晖(Synology)NAS的套件中心添加“我不是矿神”的源地址:https://spk7.imnks.com (NAS 的DSM系统版本需 ≥ 7.1) CleanShot 2024-10-12 at 01.18.50@2x (1).webp

因为已经在云服务器安装了frps的服务端,所以在群晖NAS只安装Frpc客户端即可 CleanShot 2024-10-12 at 01.23.21@2x (1).webp

安装完毕,打开Frpc客户端,正确填写信息

配置模版

[common]
server_addr = 你的服务器 IP
server_port = frp 通信通道端口号
token = 你的token

[任务名称,随便写,不能重名,如:NAS1]
type = tcp
local_ip = 局域网 IP
local_port = 本地端口号
remote_port = 对外端口号

[任务名称,随便写,不能重名,如:NAS2]
type = tcp
local_ip = 局域网 IP
local_port = 本地端口号
remote_port = 对外端口号

CleanShot 2024-10-12 at 01.37.08@2x (1).webp

记得打开云服务器的端口哦! CleanShot 2024-10-12 at 01.59.59@2x (1).webp

此时可通过云服务器ip地址+端口,即可登录NAS的桌面了,根据以上信息,NAS 的外网访问地址是:http://12.56.34.78:13666 CleanShot 2024-10-12 at 01.41.00@2x (1).webp

验证

测试连接是否正常,去访问Frps Dashboard(Frp控制面板):http://12.56.34.78:32211,可查看到内网的NAS 已经通过内网穿透,成功实现外网访问了! 1728704784121.webp

域名解析

为了让 NAS 的访问更加优雅,我们将云服务器的ip地址与域名绑定在一起 CleanShot 2024-10-12 at 01.48.24@2x 拷贝 (1).webp

此时,外网访问 NAS 地址是:https://nas.abc.com:13666

继续配置其他服务

如果 NAS 还部署了其他服务,可继续通过模版进行配置

实例

[common]
server_addr = 12.56.34.78
server_port = 32210
token = DLKSDowokkLLp

[Pipu-NAS]
type = tcp
local_ip = 192.168.22.90
local_port = 13222
remote_port = 13666

[Emby]
type = tcp
local_ip = 192.168.22.90
local_port = 8096
remote_port = 8096

[Navidrome]
type = tcp
local_ip = 192.168.22.90
local_port = 3000
remote_port = 21096

CleanShot 2024-10-12 at 02.07.37@2x (1).webp

总结

以前用中国电信的公网ipv4 就像租房子,随时可能面临搬家的风险,而通过自建 FRP(Fast Reverse Proxy)内网穿透服务,就像是自己建了一个房子,拥有了更高的控制权和稳定性,减少了对外部网络环境的依赖。