type
status
date
slug
summary
tags
category
icon
password
网址
总所周知,公网ipv4的ip地址在中国那是相当的珍惜。为了一个固定、甚至只是动态的公网ipv4,无数人打爆运营商的电话,甚至是花费一大笔钱开通所谓的专线方可获得,虽然这种固定ip在发达地区是人手一个。
但是我们访问家里的设备和运行的服务又要一个独立的ip,因此我们就发展出各种各样的技术,比如我之前写得搭建zerotier局域网
但是这种方式需要在双方设备都安装客户端,且需要在网站上把设备加入到自己的局域网中,外人想要访问就显得很是麻烦,比如给网友分享自己私人网盘资源的时候。当我们有这种需求且没有公网ip的情况下,frp技术应运而生。
FRP
FRP——高性能的反向代理应用,作用是把流量从服务端转到客户端上。当流量访问到服务端的时候,frp便会把相关的流量转到部署了客户端的设备中中,这样我们就实现了外部网络访问到自己的设备了。
那么说到这里,我想你也很敏感的注意到,咱们还是需要公网ip以便于我们可以直接访问到服务端。我们是租用一台带有公网ip的云服务器来部署服务端。这样做的优势就在于租用云服务的成本通常要小于直接拉取专线,个人用户拉专线只是为了一个公网ip其实还是很亏的(说得就是广东,连动态公网都不给的屑运营商)。
购买服务器
在正如前文所述,在开始正式部署之前我们需要租用一个带有公网ip的服务器,按需购买即可。购买之前看清楚是否带独立的公网ip(只是开放数个端口的也可以,但是对frp有部分限制)、上下行带宽(服务器一般的带宽单位是Mbps/s,而我们日常生活中的流量速度单位是MB/s,前者除以8才能得到后者),可以的话尽量找大牌的服务器商,比如阿里云这类,选择中小服务器商有跑路的风险。
配置FRPS(服务端)
我们需要在服务器部署frp服务端(frps),在客户端上部署frp客户端(frpc)。
我们从上面的连接下载适合自己版本的frp(frp_windows_amd64)并解压,可以得到以下这几个文件:

我们首先把带frps字样的文件放到我们租用的服务器上,然后点开frps.toml,对frps进行基础配置。由于我只是需要转发http网页流量,因此我是这么写:
在fprs的配置中,tcp类型的流量是不需要单独设置端口的,且我们是需要在frpc配中设置;tcpmux则是需要单独设置端口,它支持服务端 TCP 端口的多路复用,允许通过同一端口访问不同的内网服务,但是我一直没搞明白,因此在此按下不谈。
配置FRPC(客户端)
我们把带frpc字样的文件放在自己的设备上,然后点开frpc.toml,对frpc进行基础配置。由于我只是需要转发http网页流量,因此我是这么写:
以上配置中,我是设置了http类型端口进行流量转发,并通过
customdomains
参数来规划每一部分流量的具体走向,因此我这里是输入自己的域名。域名配置可以看我之前写得这一片教程稍微剑走偏锋的nas方案——2 | cyilin的小房间,只要看域名那一块即可。
对于tcp的流量,之前说过我们是不需要在frps指定一个tcp端口的,因为tcp会直接占用frps端的一整个端口,无法像是http类型这样通过
customdomains
来判定流量具体走向到什么端口。因此我们可以这么写:反向代理
根据前面的步骤,我设置了13470端口作为http的流量转发端口,我们需要把访问到公网服务器的流量转发到这个端口上,因此反向代理或者端口转发就得派上用场了。而反向代理可以挂上SSL证书且可以实现端口复用,因此我优先选择使用反向代理。
至于SSL证书和反向代理的使用请看之前的博客,翻到SSL证书这一部分。
在这里需要注意的是,我们设置的反向代理后端地址是写本机地址(127.0.0.1)的http流量转发端口。以上面的例子来说,就是写入
127.0.0.1:13470
弄完之后,我们在在frps目录下启动powershell并输入
./frps -c ./frps.toml
,在frpc目录下启动powershell并输入./frpc -c ./frpc.toml
,随后在浏览器进行连接测试即可,能成功访问那就是正常运行。Frp常驻后台
上面使用命令启动frp不但容易误触,而且每次启动也不方便,关机后还得再次输入命令,因此我们需要一个自动化启动的方案。由于我使用的是windows作为演示,因此我这里使用nssm将frp注册为windows的系统服务,从而达成自动开机启动frp。

然后我们输入命令
nssm install
,就可以得到这样一个弹窗。
在Application Path中选择frps的exe文件;Statup directory会自动填写到frp的根目录,不用管;Arguments则是填写
-c frps的配置文件路径
既可;Service name则是随意,指的是服务的名称,自己能记住就行,不能够和已有的服务同名。
然后我们点击Install service既可成功注册,frpc端也是这样如法炮制。
接着我们在搜索并打开“服务”,找到刚刚注册好的frp服务(Service name),然后点击启动即可。需要注意的是我们要右键frp服务并打开属性,并把启动类型改成自动,这样才能一开机就自启动frp。

至此,便是我目前配置的frp。
如果不是该死的运营商天天想着拿ipv4收钱,我也不用这么麻烦。但是当我看到阿里云的ipv6开通居然要额外缴费,真是感慨:一山还有一山高啊。
- Author:cyilin
- URL:https://cyilin.top/article/nas-3
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!