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


frp下载地址 https://github.com/fatedier/frp/releases 官网文档 https://github.com/fatedier/frp/blob/dev/README.md  

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、更多使用方式,查询官方文档