1、软件简介

提供内网端口或者服务映射到公网服务器上,仅需一台公网服务器即可实现 互联网访问本地服务

软件基本涵盖了所有架构和平台

2、目录说明

以linux为例,文件目录和配置参数在架构下相同

frpc 客户端程序,frpc.ini 客户端默认配置文件,frpc_full.ini客户端配置参考文档。

frps 服务端程序,frps.ini 服务端默认配置文件,frpc_full.ini客户端配置参考文档。

systemd文件夹里存放客户端和服务端service服务,可以将其加入系统服务,方便管理

frpc docker配置 frpc 配置文件_服务端

3、基础配置

服务器配置

[common]

bind_addr=0.0.0.0 #默认监听所有连接,可省略

bind_port = 7000 #监听端口

 

客户端基本配置

[common]

server_addr = x.x.x.x #x.x.x.x为服务器ip

server_port = 7000 #绑定服务器监听的端口

[test-rdp] #新建一个反向代理连接,名字是ssh,多个连接时不能同名

type = tcp #tcp连接

local_ip = 127.0.0.1 #客户端地址

local_port = 22 #客户端端口

remote_port = 22 #服务器端口

4、运行

运行服务端

当前路径下执行:./frps

默认配置文件frps.ini,即./frps -c ./frps.ini #frps.ini可省略

 

运行客户端

当前路径下执行:./frpc

默认执行frps.ini文件,即./frpc -c ./frpc.ini #frpc.ini可省略

 

通过以上简单配置,客户端服务端分别运行后,就可以通过ssh xxxx:22 连接客户端

 

5、进阶操作

5.1、开启客户端、服务端控制台

开启服务端控制台

frps.ini配置文件[common]键添加内容

dashboard_addr = 0.0.0.0

dashboard_port = 7500

dashboard_user = admin

dashboard_pwd = admin

frpc docker配置 frpc 配置文件_客户端_02

开启客户端控制台

frps.ini配置文件[common]键添加内容

admin_addr = 127.0.0.1

admin_port = 7400

admin_user = admin

admin_pwd = admin

frpc docker配置 frpc 配置文件_客户端_03

 

5.2、开启token认证

frps.ini下[common]中添加

authentication_method = token #开启token,默认toekn认证,可省略

token = xiaoxin

frpc.ini下[common]中添加

token = xiaoxin

5.3、开启日志

服务端或客户端配置文件[common]键添加内容

log_file = ./frps.log #指定日志存放路径

log_level = info #设置日志级别,分别有trace, debug, info, warn, error

log_max_days = 3 #日志存放时间

5.4、开启服务端绑定端口白名单

frps.ini下[common]中添加

allow_ports = 2000-3000,3001,3003,4000-50000

5.5、设置客户端代理名称

frpc.ini下[common]中添加

user = abixiaoxin

5.6、开启客户端访问失败重连

frpc.ini下[common]中添加

login_fail_exit = false #默认为true,表示不开启失败重连

5.5、后台运行

执行 nohup ./frps -c frps.ini 2>&1 &

查找frp相关进程,获取frp进程号

ps aux|grep frp

结束frp相关进程号

kill -9 xxx

5.6、导入配置文件

frpc或frps的配置文件可由多个文件组成,通过includes参数设置要包含的配置文件

如frpc.ini下[common]中添加

includes = ./frpc-ssh.ini

includes = ./frpc-dns.ini

5.7、添加系统服务(linux系统为例)

编辑systemd目录下的frpc.service

[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
#User=nobody	#此处待确认,不注释服务无法启动
Restart=on-failure
RestartSec=5s
ExecStart=/home/kylin/frp/frpc -c /home/kylin/frp/frpc.ini #设置脚本执行路径
ExecReload=/home/kylin/frp/frpc reload -c /home/kylin/frp/frpc.ini #设置脚本重启执行路径
#LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

执行命令启动服务及加入开机自启

cp ./frpc.service /lib/systemd/system/ #将文件放到指定位置

systemctl daemon-reload #重新加载服务

systemctl enable frpc.service #将服务设置开启启动

systemctl start frpc.service #启动服务

5.8、客户端设置tls连接

frpc.ini下[common]中添加

tls_enable = true

此参数可解决下面连接失败的问题

frpc docker配置 frpc 配置文件_服务端_04

5.9、限制服务端代理端口范围

frps.ini下[common]中添加

allow_ports = 2000-3000,3001,3003,4000-50000

5.10、命令获取frpc客户端所有代理状态

frpc status -c ./frpc.ini

5.11、通过客户自有域名访问本地web服务

frps.ini下[common]中添加

[common]

bind_port = 7000

vhost_http_port = 8080

frpc.ini下[common]中添加

[common]

server_addr = x.x.x.x

server_port = 7000

 

[web]

type = http

local_port = 80

custom_domains = www.example.com #添加域名A记录到服务器ip或者cname记录

 

[web2]

type = http

local_port = 81

custom_domains = www.example2.com #添加域名A记录到服务器ip或者cname记录

 

[web3]

type = http

local_port = 82

custom_domains = www.example3.com #添加域名A记录到服务器ip或者cname记录

 

测试访问:

http://www.example.com:8080

http://www.example2.com:8080

http://www.example3.com:8080

达到效果:三个不同的域名,指向同一个ip,访问的web服务不一致

5.12、搭建简单的hfs服务

frpc.ini下[common]中添加

[common]

server_addr = x.x.x.x

server_port = 7000

 

[test_static_file]

type = tcp

remote_port = 6000

plugin = static_file

plugin_local_path = /tmp/files

plugin_strip_prefix = static

plugin_http_user = abc

plugin_http_passwd = abc

 

测试访问: http://x.x.x.x:6000/static/,输入账号密码,访问客户端/tmp/files目录下文件

5.13、热加载frpc配置

1、如果开启了客户端控制台,可以通过访问web页面,修改配置后,重新加载配置

2、还可以通过在本地执行命令

./frpc reload -c ./frpc.ini #只会更新代理,[common]键中的配置不会修改

3、启动前检查配置是否正确

./frpc verify -c ./frpc.ini

 

6、更多使用方式,查询官方文档