在路由器上搭建自己专属的FRP内网穿透服务器

如何用网上一些免费的FRP服务器,实现内网的设备反向穿透,在外网(公网)访问的教程,在网上挺多的。但这些教程大都是教如何借助网上第三方收费或免费的FRP服务器来搭建FRP反向代理服务的。
可是天下毕竟没有永远免费的午餐:免费的FRP服务器能用多久?带宽够不够?以后是不是要收费....? 想想这些问题,如果能拥有自己专用而且永远“免费”的FRP服务器,何乐而不为?

如果你家里上网的宽带有公网IP地址,无论是IPV4还是IPV6地址,那在路由器上部署一个自己专用的FRP服务器,其实也不难。

先介绍下我自己的为何有搭建FRP反向代理服务器的需求,以及我的网络环境。

需求背景:

之所以有搭建FRP内网穿透反向代理服务器的需求,是因为家里此前装了一台群晖的NAS服务器。平时家里各成员的PC机以及笔记本电脑、手机、PAD等移动终端的的数据,大部分都通过WebDAV、DS Photo等方式备份回这台NAS服务器。由于这里面的数据挺重要(特别是有挺多家里领导珍爱的孩子们的各种照片),而且这玩意用着也挺好用,就不禁会担心,如果这台NAS坏了,或者家里的网络服务歇菜了,岂不是要糟糕?于是就想在位于异地的爷爷家里也放一台群晖的NAS(因为穷,这个备份机只好败了一台黑群:( ),两台NAS服务器之间,做一个异地灾备。

但爷爷家在广东的一个五线小县城,虽然用的也是电信的宽带,那里的中国电信服务就更糟糕,接咨询电话的服务员居然不懂什么叫公网IP(也可能是装不懂),要求给爷爷家里的宽带分配公网IP也就无从谈起了!而且当地也没有能提供公网IPV6地址的其它宽带运营商可选(在这里羡慕下河南等地的网友,听说几年前就用上了带IPV6公网IP的宽带!号称发达地区的广东,包括号称宇宙科创中心的深圳却至今也没有)。剩下能想到的较可行的解决方案,就是做FRP内网穿透来远程访问将要安装在爷爷家的NAS备份服务器了。

那做FRP,就涉及要用到FRP的服务器。如上文所讲,不想吃免费午餐,就得自己动手做一个FRP服务器。

网络环境:

1、家里用的是电信的600M光纤宽带,有一个动态的IPV4公网地址;
2、接入宽带用的是小米路由器HD,已经ROOT;(不懂怎么ROOT的,请自行问度娘)

图片[2]-在路由器上搭建自己专属的FRP内网穿透服务器-主机007
(小米路由器HD)

 

有需求,恰好现在家里用的电信宽带,又分配有动态公网IP。如果能在接入宽带的小米路由器HD上直接安装一个FRP服务器,不就有了自己专用,且免费的FRP服务器吗?

马上就开干! (前提,家的小米路由器是Root过的,至于如果root,网上有教程,也可以自行请教度娘)

第一步:先查清楚小米路由器的指令集:

putty连到小米路由器(不知道putty是什么的请自行网上学习),执行以下命令,查看路由器的指令集。

如下图,看到我这台小米路由器HD是ARMv7版的指令集,同时也就表明这台路由器用的是一颗32位的arm指令集处理器(ARM V7版本不支持64位处理器)。

图片[4]-在路由器上搭建自己专属的FRP内网穿透服务器-主机007

第二步:下载相应的FRP服务器版本并安装:

到github这个地址下载所需的FRP服务器版本:

如下图,显然,我需要的是frp0.34.3_linux_arm.tar.gz这个版本

图片[6]-在路由器上搭建自己专属的FRP内网穿透服务器-主机007

在选定好的,计划安装FRP服务器的目录,把安装包拉取回来(本来想直接贴个wget命令的,但知乎总是把粘贴的所有URL都直接搞成链接....我也不知道怎么把它改回文本,放弃了):

然后解压安装包: tar -zxvf frp_0.34.3_linux_arm.tar.gz

在解压的文件里,找到frps.ini (注意别看错,同目录下还有个frpc.ini文件,那是给客户端用的,不用改),参考下面的例子按需要修改frps.ini文件的内容。源文件只有两行,是最简单的配置,我根据自己的需要给改下如下这样:

[common]
bind_port = 7700
token = write-anything
dashboard_port = 7701
dashboard_user = admin
dashboard_pwd = adminpwd
vhost_http_port = 7780
vhost_https_port = 7781
vhost_http_webdav = 7800
vhost_https_webdav = 7801
vhost_nas_ssh = 7802

略为解读下这里的一些参数:
1、bind_port:这是用于FRP客户端和这台FRP服务端进行连接的端口,这个端口号我们之后在配置FRP客户端时要用到。
2、dashboard_port:这是FRP服务web管理端的访问端口。在FRP服务器配置完成且服务启动后,可以通过浏览器访问 x.x.x.x:7701 (其中x.x.x.x为小米路由器的公网IP或域名)查看frp服务器的运行信息。
3、token:表示用于客户端和服务端连接的口令(暗号,类似社会人见面,你来一句”天王盖地虎“,我应该回一句”宝塔镇河妖的“),请自行设置一个自己喜欢的字符串,配置FRP客户端时要用到。
4、dashboard_user 和 dashboard_pwd:表示打开FRP服务器web管理端时页面登录的用户名和密码,自行设置即可。
5、vhost_http_port、vhost_https_port、vhost_http_webdav.....这些端口,是给反向代理的NAS服务器(或者要使用FRP反向代理的机器)应用预留的端口,根据自己的需求配置即可。注意,如果你在小米路由器安装了防火墙,记得要先去防火墙开放相关端口的访问。

第三步:启动FRP服务器:

安装配置好FRP服务器后,当然就是启动服务器了!
在SSH终端命令行,先键入如下命令测试启动FRP服务器:
./frps -c frps.ini
如果看到如下图的提示,就表示FRP服务器启动成功!

图片[8]-在路由器上搭建自己专属的FRP内网穿透服务器-主机007

这时候,在本机的浏览器上键入地址: http://XXX:7701 (其中XXX代表小米路由器的公网IP或者动态域名,端口对应INI配置文件里设的dashboard_port),就会显示如下图所示的FRP服务器管理仪表界面,这表示FRP服务器运行正常。

图片[10]-在路由器上搭建自己专属的FRP内网穿透服务器-主机007
(FRP服务器运行监控界面)

第四步:配置路由器开机自动启动FRP服务器:

上文在SSH终端通过命令行启动FRP服务器的方式,如果退出SSH终端,FRP服务也会跟着关闭退出,这显然不符合我们希望FRP服务一直驻留运行的需求。
另外,为了保证小米路由器有持续稳定的性能,我设置了令小米路由器每天凌晨自动重启。所以在每次路由器重启时,自动加载FRP服务,才是最符合我需求的。

切换到路由器的 /etc 目录,目录里有一个名为rc.local的文件,用vi命令 (或者用WinSCP拉回本地改好再上传),在文件里的exit 0那一行前,增加如下一行:

nohup /userdisk/frp/frps -c /userdisk/frp/frps.ini &

(这里的FRP服务安装路径,请自行修改为你的真实安装路径)

配置后好,重启路由器,应该就会自动加载FRP服务器的相关服务了!

第五步:安装配置FRP客户端

如果如上面介绍的,ROOT自己的小米路由器,并在ROOT后的小米路由器上安装FRP服务器的事你都能搞定,那安装配置FRP客户端对您来讲就应该是很简单的事了!网上相关的教程也非常多,这里放一个我把自己的办公的PC(装的是Win10的系统)远程桌面服务反向穿透,在外网可以访问的例子。

先去github下载frp的客户端:
https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_windows_386.zip
注意win10的防火墙会把这个安装包认为是有害程序,需要先关闭防火墙或者在防火墙告警时,把这个程序手动标识会无害。

然后把压缩包解压到一个安装目录,我这里选的是D:\Apply\Frp 目录。解压后,修改fprc.ini文件,我改成以下这样:

[common]
server_addr = 【我小米路由器的域名】
server_port = 7700
token = 【我的token】
protocol = tcp
[RemoteDesktop]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3389
use_encryption = true
use_compression = false

以上面这个配置文件为例,远程桌面的端口3389,要先在FRP服务端配置进去。
配置好后,用以下命令,把FRP客户端注册为Windows的自启动服务:
sc create FRPClient binpath= "D:\Apply\frp\frpc.exe -c D:\Apply\frp\frpc.ini" type= share start= auto displayname= "FRP for Windows Remotedesktop service"

如果PC机的远程桌面服务已经启动(通过我的电脑->属性->远程设置 菜单检查是否已启动),那就可以在任何能接入互联网的地方,通过另一台计算机(例如你的笔记本电脑)远程访问并使用放在办公室里那台PC机的远程桌面服务了。

再推荐一篇用FRP访问群晖NAS服务的教程:

高级玩法,配置自己的顶级域名

也可以花点小钱,买一个顶级域名,搞成自己各类联网设备的统一入口,或者专用的网站。

首先,去阿里巴巴的万网(域名注册_虚拟主机_云服务器_企业邮箱-万网-阿里云旗下品牌),或者花生壳(免费域名注册申请|域名价格查询|域名转入|二手域名|SSL证书-Oray贝锐科技域名注册官网)买一个自己喜欢的一级域名。我个人推荐去花生壳,不仅比万网便宜一半,而且还送了域名解析服务,土豪喜欢找马爸爸也行。

买了域名后,解析到自家的路由器上。注意@和*两种解析都得添加。下图是我的解析配置:

图片[13]-在路由器上搭建自己专属的FRP内网穿透服务器-主机007

然后就参照上文给的群晖FastConnect那篇贴子,配置服务端frps.ini以及各FRP客户端frpc.ini的参数,把自己家里、办公室、异地的各种联网设备,都整合到一起来管理、使用.....。

下面是我的FRP服务端frps.ini配置文件内容的样例:

[common]
bind_port = 7700
token = nasbackup
dashboard_port = 7701
dashboard_user = admin
dashboard_pwd = ad#m^i&n?
max_pool_count = 5
#我的一级域名
subdomain_host = 请改为自己的一级域名,例如 baidudu.net
#各类支持HTTP服务设备的共用端口,可在客户端配置子域名分别访问
vhost_http_port = 8090
vhost_https_port = 443
#证券数据库服务器的SSH服务专用端口
vhost_dba_ssh = 8022
#办公PC的远程桌面服务专用端口
vhost_RD = 3389
#位于SZ市的NAS服务器WebDav、SSH服务专用端口
vhost_sznas_webdav = 109000
vhost_sznas_ssh = 109001
#位于XY市的NAS服务器WebDav、SSH服务专用端口
vhost_xynas_webdav = 109002
vhost_xynas_ssh = 109003
#FRP服务器日志相关参数
log_file = ./frps.log
log_level = info
log_max_days = 9

以下是在位于其中一个地方的家里局域网,部署在一台群晖服务器上的一个FRP客户端的配置文件frpc.ini的内容实例:

[common]
server_addr = 请改为自己的一级域名,例如 baidudu.net
server_port = 7700
token = myhomefrp
# FRP客户端日志文件参数
log_file = ./frpc.log
log_level = info
log_max_days = 3

#下面开始配置局域网内各设备需要从外网访问的服务参数
[dbsvr_web]
type = http
local_ip = 192.168.31.15
local_port = 5000
#通过subdomain配置可以在外网用http://dba.我的域名.net:8090 地址访问数据库服务器
#的web管理端
subdomain = dba

[miRouter_web]
type = http
local_ip = 192.168.31.1
local_port = 80
#可以在外网用http://router.我的域名.net:8090 地址访问小米路由器web管理端
subdomain = router

[HuaWei_ADC]
type = https
local_ip = 192.168.31.17
local_port = 443
#可以在外网用https://hwadc.我的域名.net:443 地址访问家里的华为AD9430DN无线
#网络管理器的web管理端
subdomain = hwadc

#以下是配置数据库服务器的SSH服务
[dbsver_ssh]
type = tcp
local_ip = 192.168.31.16
local_port = 22
use_encryption = false
use_compression = true
remote_port = 8022
health_check_type = tcp
health_check_timeout_s = 3
health_check_max_failed = 3
# every 1000 seconds will do a health check
health_check_interval_s = 1000

配置完成后,从服务器的管理仪表板,看下如下图的运行情况:

图片[15]-在路由器上搭建自己专属的FRP内网穿透服务器-主机007

大致就是这样吧,祝折腾愉快:)

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享