文章目录
概要
FRP(Fast Reverse Proxy)是一个开源的、高性能的反向代理应用,可以实现内网穿透,让外部设备能够访问内网中的资源。通过 FRP,可以让在 NAT(网络地址转换)或防火墙后面的设备向外部提供服务。
一、整体架构流程
云服务器(公网):
部署 FRP 服务端(frps)。
云服务器具有公网 IP,充当外部设和内网设备之间的桥梁。
配置 FRP 服务端监听指定的公网端口(如 8888),接受外部的连接请求并将其转发到内部设备。
内部网络(NAT 内网):
内部网络处于 NAT 后面,通过路由器连接到互联网,家中的设备通常没有公网 IP,无法直接被外部访问。
在家庭网络中的 Linux 机器上,部署 FRP 客户端(frpc),并配置将本地的 nginx 服务(端口 80)映射到云服务器的指定端口(如 8081)。
FRP客户端会与云服务器建立一个长期的 TCP 连接,将内部网络的nginx服务暴露给云服务器。
二、环境准备
一个云服务器用于充当公网,选择的ubuntu20.04
一个虚拟机用于充当内网,选择的 ubuntu24.04
三、操作细节
一、安装frp
frp下载链接
由于github下载速度过慢,需要下载一个提速器
Watt Toolkit
注意一定要下载amd架构的
安装出现的问题
frp下载Windows安全中心检测出有病毒:
一些敏感操作会被误报,比如说读取内存du,调用/执行cmd脚本,修改dll文件,注入代码等等操作”而这款软件就是会调用/执行CMD脚本,并且会将本地端口映射到公网(内网穿透不就是干这个的嘛),所以部分杀毒软件会报毒。
解决办法
在设置的安全中找到Windows安全中心
打开之后,选择病毒和威胁防护
把这个实时保护关掉就行了,下载完之后记得打开
二、将压缩包拖拽到云服务器解压
这里就把frp安装到了云服务器上,可以看看里面的内容
后面在云服务器上外面就操作frps和frps.toml,因为server服务器,所以就就操作s
三、将压缩包拷贝到ubuntu虚拟机上
首先需要确保win和虚拟机能够通信,外面用ping命令进行测试
虚拟机网络适配器修改为NAT模式
查看虚拟机的ip
查看win的ip
用ping命令测试是否连通
现在使用scp拷贝
找到frp压缩包在win下的位置
虚拟机创建了一个目录,便于管理
看看虚拟机内容安装没
这样就可以解压了
前置工作完成
四、进行内网穿透
这里选择用nginx来测试
在ubuntu虚拟机下下载nginx
启动nginx并查看nginx端口
可以看到使用的端口号是80
打开虚拟机浏览器测试能不能访问
五、配置并运行云服务器的frp
看到云服务器的配置文件的绑定端口是7000,我们可以修改为8888或者开放云服务器的7000端口
这里选择开放端口
选择自己的云服务器实例,选择安全组,管理规则
这里开放了7000和8081,都有用处
现在就可以运行云服务器的frp程序
六、配置并运行虚拟机的frp程序
这里我们就需要修改frpc.toml内容了,需要一点vim的操作
现在就明白为什么要开放2个端口了吧
这个时候就运行虚拟机的frpc程序
连接成功,看看服务器的响应
七、这个时候就已经成功了
我们用win来访问云服务器的8081端口看看效果
至此,内网穿透就成功了
八、附录
可以把frp程序都放在后台运行,这样就不会影响到正常使用了
相关操作
nohup ./frpc -c ./frpc.toml &> /dev/null &
nohup ./frps -c ./frps.toml &> /dev/null &
小结
内网穿透:通过云服务器的中转,实现 NAT 内网设备的外网访问,无需更改路由器设置。
多协议支持:FRP 支持 TCP、UDP、HTTP 等多种协议,可以扩展为其他服务的内网穿透。