1 原理讲解
frp工作原理
- 服务端运行,监听一个主端口,等待客户端的连接; 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
- 服务端fork新的进程监听客户端指定的端口; 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
- 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
2 frps软件准备
云端服务器和本地下载frps
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
3 云服务器(公网IP)准备
1)配置文件
修改 frps.ini 配置文件
示例:
[common]
# frp服务端口
bind_port = 7000
# 用户连接时的url端口
vhost_http_port = 10000
# 主域名 通过此域名连接(也可用公网IP)
subdomain_host = test.com
# 管理台
dashboard_port = 7500
dashboard_user = admin # 账户
dashboard_pwd = admin123 # 密码
max_pool_count = 10
# 日志文件位置及名字
log_file = ./frps.log
# 日志级别
log_level = info
# 日志最多记录天数
log_max_days = 3
# token 客户端token需要与此一致
token = testtoken
2)端口放行
步骤3自定义配置好了后
放行frp服务端口(步骤三的 bind_port = 7000)
放行自定义访问端口(步骤三的 vhost_http_port = 10000)
3)启动frp服务
先切换到frp的根目录
再用命令 ./frps -c ./frps.ini 启动服务
(上面是相对路径,也可不切换路径,直接在启动命令中用绝对路径)
此种方式启动服务后不能关闭命令窗口,命令窗口关闭后服务也会关闭
挂后台方式参考 步骤13
4. 服务器(动态IP)准备
2.2、客户端配置
1、下载frp库
https://github.com/fatedier/frp/releases/download
选择对应版本下载
2、解压frp压缩包
tar -zxvf frp_0.33.0_linux_amd64.tar.gz
3、进入该解压目录:
cd frp_0.33.0_linux_amd64/
并打开配置文件:
vi frpc.ini (注意哦,不是frps.ini)
将文件内容修改为如下:
# 客户端配置
[common] # 心跳维持
server_addr = test.com # 与subdomain_host保持一致
server_port = 7000 # 与bind_port 保持一致
token = testtoken
# 配置ssh服务
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
# 这个自定义,之后再ssh连接的时候要用
remote_port = 6000
[frp] # 端口映射
type = http
local_ip = localhost
local_port = 8080
remote_port = 8080 # 自定义的远程服务器端口,例如8080 即本地8080→云服务器8080
subdomain = frp # 与custom_domains 保持一致
修改后如下图:
注意:[ssh]、[frp]这样的名称必须全局唯一,即就算有多个客户端,也只能使用一次,其他的可以用[ssh2]、[ssh3]等;意思就是说,如果你要配置多个客户端,必须将另外的客户端的[ssh]改为[ssh2]、[ssh3]等,并且remote_port也要变,比如6002,6003等