frp 客户端安装与配置

视频教程

安装

  • 下载文件,解压缩,
  • 拷贝文件到指定地点
  • 配置frpc.ini
  • 运行frpc程序
  • 关闭防火墙
  • 修改DNS解析
  • 宝塔面板配置反向代理

官方配置文件

基础配置

参数类型说明默认值可选值备注
server_addrstring连接服务端的地址0.0.0.0
server_portint连接服务端的端口7000
http_proxystring连接服务端使用的代理地址格式为 {protocol}://user:passwd@192.168.1.128:8080 protocol 目前支持 http 和 socks5
log_filestring日志文件地址./frpc.log如果设置为 console,会将日志打印在标准输出中
log_levelstring日志等级infotrace, debug, info, warn, error
log_max_daysint日志文件保留天数3
disable_log_colorbool禁用标准输出中的日志颜色false
pool_countint连接池大小0
userstring用户名设置此参数后,代理名称会被修改为 {user}.{proxyName},避免代理名称和其他用户冲突
dns_serverstring使用 DNS 服务器地址默认使用系统配置的 DNS 服务器,指定此参数可以强制替换为自定义的 DNS 服务器地址
login_fail_exitbool第一次登陆失败后是否退出true
protocolstring连接服务端的通信协议tcptcp, kcp, websocket
tls_enablebool启用 TLS 协议加密连接false
heartbeat_intervalint向服务端发送心跳包的间隔时间30
heartbeat_timeoutint和服务端心跳的超时时间90
startstring指定启用部分代理当配置了较多代理,但是只希望启用其中部分时可以通过此参数指定,默认为全部启用

权限验证

参数类型说明默认值可选值备注
authentication_methodstring鉴权方式tokentoken, oidc需要和服务端一致
authenticate_heartbeatsbool开启心跳消息鉴权false需要和服务端一致
authenticate_new_work_connsbool开启建立工作连接的鉴权false需要和服务端一致
tokenstring鉴权使用的 token 值需要和服务端设置一样的值才能鉴权通过
oidc_client_idstringoidc_client_id
oidc_client_secretstringoidc_client_secret
oidc_audiencestringoidc_audience
oidc_token_endpoint_urlstringoidc_token_endpoint_url

UI

参数类型说明默认值可选值备注
admin_addrstring启用 AdminUI 监听的本地地址0.0.0.0
admin_portint启用 AdminUI 监听的本地端口0
admin_userstringHTTP BasicAuth 用户名admin
admin_pwdstringHTTP BasicAuth 密码admin
asserts_dirstring静态资源目录AdminUI 使用的资源默认打包在二进制文件中,通过指定此参数使用自定义的静态资源
参数类型说明是否必须默认值可选值备注
typestring代理类型tcptcp, udp, http, https, stcp, sudp, xtcp, tcpmux
use_encryptionbool是否启用加密功能false启用后该代理和服务端之间的通信内容都会被加密传输
use_compressionbool是否启用压缩功能false启用后该代理和服务端之间的通信内容都会被压缩传输
proxy_protocol_versionstring启用 proxy protocol 协议的版本v1, v2如果启用,则 frpc 和本地服务建立连接后会发送 proxy protocol 的协议,包含了原请求的 IP 地址和端口等内容
bandwidth_limitstring设置单个 proxy 的带宽限流单位为 MB 或 KB,0 表示不限制,如果启用,会作用于对应的 frpc

本地服务配置

local_ip 和 plugin 的配置必须配置一个,且只能生效一个,如果配置了 plugin,则 local_ip 配置无效。

参数类型说明是否必须默认值可选值备注
local_ipstring本地服务 IP127.0.0.1需要被代理的本地服务的 IP 地址,可以为所在 frpc 能访问到的任意 IP 地址
local_portint本地服务端口xxxx配合 local_ip
pluginstring客户端插件名称见客户端插件的功能说明用于扩展 frpc 的能力,能够提供一些简单的本地服务,如果配置了 plugin,则 local_ip 和 local_port 无效,两者只能配置一个
plugin_paramsmap客户端插件参数map 结构,key 需要都以 “plugin_” 开头,每一个 plugin 需要的参数也不一样,具体见客户端插件参数中的内容

负载均衡和健康检查

参数类型说明是否必须默认值可选值备注
groupstring负载均衡分组名称用户请求会以轮询的方式发送给同一个 group 中的代理
group_keystring负载均衡分组密钥用于对负载均衡分组进行鉴权,group_key 相同的代理才会被加入到同一个分组中
health_check_typestring健康检查类型tcp,http配置后启用健康检查功能,tcp 是连接成功则认为服务健康,http 要求接口返回 2xx 的状态码则认为服务健康
health_check_timeout_sint健康检查超时时间(秒)3执行检查任务的超时时间
health_check_max_failedint健康检查连续错误次数1连续检查错误多少次认为服务不健康
health_check_interval_sint健康检查周期(秒)10每隔多长时间进行一次健康检查
health_check_urlstring健康检查的 HTTP 接口如果 health_check_type 类型是 http,则需要配置此参数,指定发送 http 请求的 url,例如 “/health”

TCP

参数类型说明是否必须默认值可选值备注
remote_portint服务端绑定的端口用户访问此端口的请求会被转发到 local_ip:local_port
当type=tcp时,此项必选

UDP

参数类型说明是否必须默认值可选值备注
remote_portint服务端绑定的端口用户访问此端口的请求会被转发到 local_ip:local_port

HTTP

custom_domains 和 subdomain 必须要配置其中一个,两者可以同时生效。

参数类型说明是否必须默认值可选值备注
custom_domains[]string服务器绑定自定义域名是(和 sub_domain 两者必须配置一个)用户通过 vhost_http_port 访问的 HTTP 请求如果 Host 在 custom_domains 配置的域名中,则会被路由到此代理配置的本地服务
subdomainstring自定义子域名是(和 custom_domains 两者必须配置一个)和 custom_domains 作用相同,但是只需要指定子域名前缀,会结合服务端的 subdomain_host 生成最终绑定的域名
locations[]stringURL 路由配置采用最大前缀匹配的规则,用户请求匹配响应的 location 配置,则会被路由到此代理
http_userstring用户名如果配置此参数,暴露出去的 HTTP 服务需要采用 Basic Auth 的鉴权才能访问
http_pwdstring密码结合 http_user 使用
host_header_rewritestring替换 Host header替换发送到本地服务 HTTP 请求中的 Host 字段
headersmap替换 headermap 中的 key 是要替换的 header 的 key,value 是替换后的内容

HTTPS

custom_domains 和 sub_domain 必须要配置其中一个,两者可以同时生效。

参数类型说明是否必须默认值可选值备注
custom_domains[]string服务器绑定自定义域名是(和 sub_domain 两者必须配置一个)用户通过 vhost_http_port 访问的 HTTP 请求如果 Host 在 custom_domains 配置的域名中,则会被路由到此代理配置的本地服务
sub_domainstring自定义子域名是(和 custom_domains 两者必须配置一个)和 custom_domains 作用相同,但是只需要指定子域名前缀,会结合服务端的 subdomain_host 生成最终绑定的域名

STCP

参数类型说明是否必须默认值可选值备注
rolestring角色serverserver,visitorserver 表示服务端,visitor 表示访问端
skstring密钥服务端和访问端的密钥需要一致,访问端才能访问到服务端

SUDP

参数类型说明是否必须默认值可选值备注
rolestring角色serverserver,visitorserver 表示服务端,visitor 表示访问端
skstring密钥服务端和访问端的密钥需要一致,访问端才能访问到服务端

XTCP

参数类型说明是否必须默认值可选值备注
rolestring角色serverserver,visitorserver 表示服务端,visitor 表示访问端
skstring密钥服务端和访问端的密钥需要一致,访问端才能访问到服务端

个人配置文件

[common]
 server_addr = 服务器ip地址
 server_port = 7000
 token=omv5
 login_fail_exit = false
 [ssh]
 type = tcp
 local_ip = 192.168.50.142
 local_port = 22
 remote_port = 6000
 [omv5]
 type =http
 local_ip =192.168.50.142
 local_port =80
 custom_domains =omv5.cryogeny.cn 

omv5关闭防火墙

iptables -F
iptables -Z
iptables -X

DNS解析

宝塔面板配置反向代理

如何安全的暴露内网信息

前面官方的配置文档中已经提到了要采用以下两个字段,可以在每个type=http 的分段中都给配置上。

http_user = xxx
http_pwd = xxx

发表回复