frp内网穿透、反向代理详细配置

frp下载地址
官网文档
 

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记录
 
测试访问:
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、更多使用方式,查询官方文档
posted @ 2022-03-04 14:21  gpysir  阅读(3275)  评论(0编辑  收藏  举报