1、软件简介
提供内网端口或者服务映射到公网服务器上,仅需一台公网服务器即可实现 互联网访问本地服务
软件基本涵盖了所有架构和平台
2、目录说明
以linux为例,文件目录和配置参数在架构下相同
frpc 客户端程序,frpc.ini 客户端默认配置文件,frpc_full.ini客户端配置参考文档。
frps 服务端程序,frps.ini 服务端默认配置文件,frpc_full.ini客户端配置参考文档。
systemd文件夹里存放客户端和服务端service服务,可以将其加入系统服务,方便管理
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
开启客户端控制台
frps.ini配置文件[common]键添加内容
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin
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
此参数可解决下面连接失败的问题
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记录
测试访问:
达到效果:三个不同的域名,指向同一个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、更多使用方式,查询官方文档