阅读视图

发现新文章,点击刷新页面。

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

作者 pipu

摘要
由于中国电信计划在2024年收回所有老用户的公网IPv4,导致无法继续远程访问公司NAS。为了解决这个问题,作者提出使用自建Frp内网穿透服务,通过云服务器实现与公网IPv4相似的访问体验。Frp是一款高性能的开源反向代理工具,支持多种协议,用户可以通过其公网IP访问内网服务。本文详细介绍了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.腾讯云轻量服务器
(地区选择新加坡,优势是跟中国大陆的距离足够近,价格相对于香港的云服务器来讲,也足够便宜,另外1.5TB的月流量也足够使用)

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

Frp内网穿透项目介绍

介绍

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

Github项目地址:https://github.com/fatedier/frp
官网:https://gofrp.org/zh-cn/

工作原理

建立连接:用户的设备上的 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

[Brothersbox-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

FAQ

通过frp 内网穿透,传输速度是多少?

计算从外面访问家中 NAS 的网速,主要考虑以下几个因素:

  1. 家里宽带上传速度:如1 Mbps。
  2. 云服务器下载速度:如5 Mbps。
  3. frp 的性能:通常影响不大,但会有一定的开销。

在这种情况下,访问速度会受到家上传速度的限制。从外部访问家中 NAS 的最大速度可以表示为:最大速度 = min(家里上传速度, 云服务器下载速度)

因此,计算如下:最大速度 = min(1 Mbps, 5 Mbps) = 1 Mbps

所以,从外部访问家中的 NAS 时,理论上的网速为 1 Mbps。实际速度可能会因为网络波动或其他因素而稍低于此值。

总结

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

❌