frp简介
frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。frp 项目官网是 https://github.com/fatedier/frp,软件下载地址为https://github.com/fatedier/frp/releases
frp工作原理
- 服务端运行,监听一个主端口,等待客户端的连接;
- 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
- 服务端fork新的进程监听客户端指定的端口;
- 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
- 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
简单来说,就是可以随时随地通过有公网 IP的服务器 中转连接到运行 frpc 程序的任意机器的任意端口。
安装包结构
下载linux安装包:frp_0.47.0_linux_amd64.tar.gz,解压后文件如下:
服务端相关文件
frps 、frps_full.init 、frps.ini
- frps服务端运行程序
- frps.ini:服务端配置文件(简化版)
- frps_full.ini:服务端配置文件(完整版配置模板)
客户端相关文件
frpc 、frpc_full.init 、frpc.ini
- frpc:客户端运行程序
- frpc.ini:客户端配置文件(简化版)
- frpc_full.ini:客户端配置文件(完整版配置模板)
frp配置
服务端配置
服务端配置文件为 frps.init,配置如下图:
[common]
#bind_port是服务端与客户端之间通信使用的端口号
bind_port = 7000
#与客户端的token必须设置成一致,token用于验证连接,只有服务端和客户端token相同的时候才能正常访问。如果不使用token,那么所有人都可以直接连接上
token = 123456
#开启仪表板
dashboard_port = 6556
dashboard_user = admin
dashboard_pwd = admin
服务端启动
./frps -c ./frps.ini
客户端配置
客户端配置文件为 frpc.init,配置如下图:
[common]
#服务端ip
server_addr = xxx.xxx.xxx.xxx # frp服务端所在的IP(公网IP)
#服务端与客户端之间通信使用的端口号
server_port = 7000
#与服务端的token必须设置成一致
token = 123456
[ssh]
type = tcp
local_ip = 127.0.0.1 # 部署客户端的机器的IP,默认写127.0.0.1即可
local_port = 22 # 本地的ssh端口
remote_port = 6000 # 通过frp服务端IP的6000端口即可访问本机的22端口
#本地服务1
[web1]
type = http
local_ip = 127.0.0.1 # 部署客户端的机器的IP,默认写127.0.0.1即可
local_port = 8090 # 本地web1应用的端口
remote_port = 9090 # 通过frp服务端IP的9090端口即可访问本机的8090端口应用
#本地服务2
[web2]
type = http
local_ip = 127.0.0.1 # 部署客户端的机器的IP,默认写127.0.0.1即可
local_port = 8091 # 本地web1应用的端口
remote_port = 9091 # 通过frp服务端IP的9091端口即可访问本机的8091端口应用