电信收回了我的公网ipv4,如何外网访问群晖NAS?Frp 内网穿透!效果媲美直连!
本文详细介绍了Frp的安装过程、配置方法及域名解析,最终实现稳定、安全的远程访问。通过自建Frp,用户能够提高网络控制权和使用体验。
前言
公网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 设备、路由器以及其它的自部署开源项目,其本质是一个反向代理工具。
工作原理
建立连接:用户的设备上的 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文件夹
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
跟着安装脚本的流程,一路填写信息即可
安装成功后会得出以下信息
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 客户端。
在群晖(Synology)NAS的套件中心添加“我不是矿神”的源地址:https://spk7.imnks.com
(NAS 的DSM系统版本需 ≥ 7.1)
因为已经在云服务器安装了frps的服务端,所以在群晖NAS只安装Frpc客户端即可
安装完毕,打开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 = 对外端口号
记得打开云服务器的端口哦!
此时可通过云服务器ip地址+端口,即可登录NAS的桌面了,根据以上信息,NAS 的外网访问地址是:http://12.56.34.78:13666
验证
测试连接是否正常,去访问Frps Dashboard(Frp控制面板):http://12.56.34.78:32211
,可查看到内网的NAS 已经通过内网穿透,成功实现外网访问了!
域名解析
为了让 NAS 的访问更加优雅,我们将云服务器的ip地址与域名绑定在一起
此时,外网访问 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
总结
以前用中国电信的公网ipv4 就像租房子,随时可能面临搬家的风险,而通过自建 FRP(Fast Reverse Proxy)内网穿透服务,就像是自己建了一个房子,拥有了更高的控制权和稳定性,减少了对外部网络环境的依赖。