frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。
一个frp文件包里面包括frpc、frps以及相应的配置文件。内部的配置文件,如下图所示:
frpc:是指 frp客户端(client)
frpc.ini:客户端配置文件
frps:是指 frp服务端(server)
frps.ini:服务端配置文件
一台有公网IP的服务器(下文称外网主机)
一台需要实现内网穿透的机器(下文称内网主机)
一个SSH工具(xshell、Mobaxterm或putty)
一个域名(如果只是建立SSH反向代理则不需要域名)。
windows环境中,推荐下载 frp_0.20.0_windows_amd64.zip
linux环境中,推荐下载 frp_0.20.0_linux_amd64.tar.gz
具体还是看情况而定,可以自己选取版本、看操作系统选择32位或64位的。
下载地址传送门: https://github.com/fatedier/frp/releases
外网主机(带有公网ip的服务器)需要安装服务端的frp
(1)解压
使用tar指令解压tar.gz文件
tar -zxvf frp_0.20.0_linux_amd64.tar.gz
(2)删除多余文件
外网主机作为服务端,可以删掉不必要的客户端文件。使用cd指令进入解压出来的文件夹,使用rm指令删除文件。
cd frp_0.20.0_linux_amd64/
rm -f frpc
rm -f frpc.ini
(3)修改配置文件
修改服务器配置文件,frps.ini文件。使用vi指令对目标文件进行编辑。
vi frps.ini
添加以下内容:
[common]
bind_port = 7000 #frp服务端端口
vhost_http_port = 8080 #http访问端口
[common]部分是必须有的配置,其中bind_port是自己设定的frp服务端端口,vhost_http_port是自己设定的http访问端口。
保存配置!
(4)启动
启动frp服务端,命令如下:
./frps -c ./frps.ini
服务端配置完成!
(1)解压
使用tar指令解压tar.gz文件
tar -zxvf frp_0.20.0_linux_amd64.tar.gz
(2)删除多余文件
外网主机作为服务端,可以删掉不必要的服务端文件。使用cd指令进入解压出来的文件夹,使用rm指令删除文件。
cd frp_0.20.0_linux_amd64/
rm -f frps
rm -f frps.ini
(3)修改配置文件
使用vi命令,修改frpc.ini
vi frp.ini
客户端的配置如下:
[common]中的server_addr填frp服务端的ip(也就是外网主机的IP),server_port填frp服务端的bind_prot。
[common]
server_addr = 123.5.57.118 #服务端ip(外网ip)
server_port = 7000 #服务端设定的端口
[ssh]中的local_port填本机开放的ssh端口,一般ssh端口默认为22。
#通过tcp来连接SSH
[ssh]
type = tcp
local_ip = 127.0.0.1 #本机ip
local_port = 22 #本机ssh端口
remote_port = 6000 #外网服务器请求过来的端口
[mysql]中的 type对应服务端配置,local_port填服务端mysql端口。
#通过tcp来连接mysql
[mysql]
type = tcp
local_port = 3306
remote_port = 3306
#use_encryption = true
#use_compression = true
[tomcat]中的 type对应服务端配置,local_port填服务端toncat端口。
[tomcat]
type = http
local_port = 8083
#custom_domains = tomcat.xxxx1.com
#remote_port =8083
[web]中的type对应服务端配置。local_port填f服务器的web端口。
[web]
type = http
local_port = 80
custom_domains = www.xxx.com
以上的配置和服务端是对应的。
可以选择自己需要的进行配置,其中[common]是必不可少的配置,其余按需配置。
保存配置!!!
(4)运行
运行frp客户端,命令如下:
./frpc -c ./frpc.ini
(若要在后台运行,需要使用其他命令,后面详述)
若在服务端会看到"start proxy sucess"字样,即连接成功。
SSH连接:
通过客户端IP:6000和服务器端建立SSH连接。
ssh 120.79.17.158 -p 6000
现阶段只是让frp暂时运行,功能也已经实现,但是只要关闭ssh连接,frp也会自动停止。若想要frp一直保持运行状态怎么办???
两个办法
一个是screen命令,
一个是nohup命令。
先使用screen命令创建一个会话。
screen -dmS frp
然后进入这个会话。
screen -r frp
最后使用运行frp的指令,在后面加上" &" (一定是要在frp目录下使用该命令)
./frps -c ./frps.ini &
这样就让frp在后台运行了。
nohup指令的使用方法相对简单,只需要在nohup后面加上frp的运行指令即可。下面示范的指令是运行frp客户端。(同样,如果之前断开了SSH连接,记得用cd指令进入frp的目录先。)
nohup ./frpc -c ./frpc.ini &
这样就成功让frp在后台运行了。
有了后台启动,自然就有相应的关闭之法。关闭frp,直接杀进程就可以啦!!!
ps -aux|grep frp| grep -v grep
kill -9 进程号
例如:
[web1~]#ps -aux|grep frp| grep -v grep
[web1~]#root 3600 0.1 0.1 110188 9484 pts/0 Sl 15:04 0:00 ./frpc -c ./frpc.ini
[web1~]#kill -9 3600
传送门
frp下载地址:https://github.com/fatedier/frp/releases
frp中文说明:https://github.com/fatedier/frp/blob/master/README_zh.md