什么是frp
frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。
官方文档地址: frp官方文档
为什么要内网穿透
针对不同业务需求,总结为以下几点:
- Web项目对于电脑(服务器)的性能(内存、CPU、硬盘和图形运算等)要求比较高,需要部署在局域网性能较高的电脑上,且需求进行外网访问;
- 搭建内网穿透小工具,服务于有项目部署需求但没有服务器(或公网IP)的人群;
- 远程桌面连接,当然这个需求可以使用很多远程桌面软件代替,但是如果要使用Windows远程桌面连接公司电脑的话就需要内网穿透。
以上是我在工作和生活中用到的内网穿透的需求总结
准备工作
在使用frp之前,需要一台有公网IP的服务器(下文称外网主机),一台需要实现内网穿透的机器(就是自己的电脑),SSH工具,以及一个域名(如果只是建立SSH反向代理则不需要域名)。
服务器是用来部署frp服务端,个人电脑用来实现内网穿透,SSH工具是用来连服务器,如果是Windows Server服务器则使用Windows系统自带的远程桌面就可以。
教程开始
1.去frp的Github 的 Release 页面中下载到最新版本的客户端和服务端二进制文件,所有文件被打包在一个压缩包中。这里我下载的是Windows和linux两个版本,对于32位和64位请根据自己的服务器和客户机电脑位数进行选择;
2.服务器部署,下载下来linux版本的frp,解压后有“frpc、frpc.ini、frps、frps.ini”等文件,如下图。
解释一下,frpc就是frp后边加c的就是客户端,frps就是frp后加s的就是服务端,这里将frps和frps.ini复制到服务器文件夹下,如下图
3.服务端配置,配置frps.ini
[common]
bind_port = 7000
vhost_http_port = 8080
这里注意一下,【bind_port】是frp客户端连接服务端的端口,【vhost_http_port】是http访问的端口(外网端口)
4.启动服务端
通过 ./frps -c ./frps.ini 启动服务端
5.域名解析
去域名服务商解析域名,例如*.frp.xxx.com
6.客户端配置
[common]
server_addr = 127.0.0.1 #服务器IP
server_port = 7000 #frp服务端端口地址
[web]
type = http
local_port = 8080 #本地项目端
custom_domains = test.frp.xxx.com #域名
7.启动客户端
./frpc -c ./frpc.ini
注意Windows客户端使用cmd命令行启动,不能直接双击frpc.exe启动