一. 前言
我在之前的文章有介绍过使用服务商提供的内网穿透,但是这也存在着一些缺点,有的服务商提供的节点并不稳定,容易掉线,一旦掉线,就直接与机器“失联”了。
因为我本身有一台云服务器,拥有公网IP,就想用这台服务器,利用FRP技术实现群晖的内网穿透。
虽然我的服务器带宽只有5M,无法满足正常的影音娱乐需求,但是这个就相当于服务商挂掉后的备选方案,可以进入群晖的控制台,更改或者重启服务商的服务。
二.原理
在说具体步骤前想讲解一下frp的原理吧,这样即使出问题了大家至少还有个思路。
简单来说,就是比如你想在外面用手机的 4G网络 访问家里 内网的NAS,这个正常情况下是行不通的,因为你的手机和NAS都没有公网IP,所以离开了内网是互相访问不到的。
那么你就需要一个拥有公网IP的中介,即一台云服务器(有公网IP就行),在服务器上部署frp的服务端frps,在NAS部署frp的客户端frpc。
这样,你就可以通过 手机 ➡️ 云服务器 ➡️ frps ➡️ frpc ➡️ NAS 这个访问顺序来实现内网穿透啦!
三. 步骤
- 首先,在 https://github.com/fatedier/frp/releases 下载frp,注意, 根据服务端和客户端的架构和操作系统的不同要下载不同的frp。
比如,我的服务器是amd64的windows server,NAS是基于linux的amd64架构的系统,
所以我应该分别下载 frp_0.36.2_linux_amd64.tar.gz 和 frp_0.36.2_windows_amd64.zip。
-
服务端
下载好后,解压打开目录,编辑frps.ini
[common]
bind_port = 7000 #服务端监听端口,要求和客户端一致
vhost_http_port = 80
vhost_https_port = 443
token = key #token值,客户端需要配置相同的token值
#以下设置的是dashboard监控,可以在服务器的7500端口打开监控面板查看信息
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
配置项这几个就够了,然后控制台切到当前目录,输入启动指令
frps.exe -c frps.ini
如果是linux的话,就是
./frps -c frps.ini
其中这个 -c 是指定配置文件的意思,你可以输入 frps.exe --help 查看更多的指令,这里就不一一介绍了。
当出现下面的画面就是启动成功了
注意:上图配置里出现的端口 全部需要服务器开放这些端口,需要配置云服务器安全组和防火墙,这里就不介绍了,可自行搜索。
有什么不懂的可以私信我哈
如果你可以通过 http://xx.xx.xx.xx:7500 访问到DashBoard(xx.xx.xx.xx为你的服务器地址)
那么恭喜你,已经成功部署服务端了。
-
客户端
同样,下载后解压,进入目录,修改frpc.ini
[common]
server_addr = xx.xx.xx.xx #你的服务器地址
server_port = 7000 #与服务端的端口一致
token = key #与服务端配置的token一致
[service1] #该隧道的名称,可同时开启多个隧道,一个隧道对应一个端口
type = tcp
local_ip = 127.0.0.1
local_port = 5000 #你NAS的服务端口
remote_port = 9000 #服务器穿透出去的端口
[service2]
type = tcp
local_ip = 127.0.0.1
local_port = 8081
remote_port = 9091
然后进入NAS的控制台,切到frp目录,输入启动指令
./frpc -c frpc.ini
成功启动后如下: