利用空闲服务器搭建frps服务端-实现穿透代理

article/2025/9/11 23:57:35

利用frps代理Tcp或者udp或其它类型的连接

1、什么是frps/frpc

frps是代理的服务端、frpc是代理的客户端,使用方数据传输到服务端,服务端再将数据传输到提供方,从而达到相互访问的目的。

2、什么是穿透

穿透就是客户端A和客户端B都没有公网ip,但是客户端A需要和客户端B正常通信。中间需要一个有公网ip的服务器,为两个客户端转发数据,就是客户端A绑定端口发送数据,然后坚挺改端口,然后由公网服务器告诉客户端B,客户端A的公网ip和端口,客户端B链接A的公网ip和公网端口实现客户端A和客户端B相互访问。

公网服务器是负责中转数据的,相当于翻译官的角色。客户端A和客户端B之间通信都由这个翻译官传达。

3、下载

下载地址Releases · fatedier/frp · GitHub

选择对应电脑架构和系统匹配的版本下载使用,服务端和客户端程序都在一个压缩包里面

4、配置

1)服务端配置

[common] bind_port = 7000 # 中转服务器中frp服务的端口号,内网客户端通过访问这个端口连接上 dashboard_port = 7500 # frp的web界面的端口号 
dashboard_user = admin # web界面的登陆账户 
dashboard_pwd = admin # web界面的登陆密码 
authentication_method = token 
token = pass123456 # frp客户端连接时的密码, 内网客户端使用这个密码验证自己的身份

在linux中执行frps,在windows中执行frps.exe

linux中 ./frps -c frps.ini 
windows中 ./frps.exe -c frps.ini

如果出现下列提示信息,证明服务端已经启动

 2)客户端配置

[common] server_addr = 中转服务器的公网ip authentication_method = token token = pass123456 #客户端的密码 server_port = 7000 #中转服务器的密码 [windows_hong] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 33389

 

 

3)以远程连接为例

​​​​​​​

 

 

 

同理 ,windows可以穿透3389tcp端口,实现远程控制,而linux或者mac也可以可以支持穿透22tcp端口实现远程控制。同时也可以穿透http服务

4)服务端配置表

基础配置

参数

类型

说明

默认值

可选值

备注

bind_addr

string

服务端监听地址

0.0.0.0

bind_port

int

服务端监听端口

7000

接收 frpc 的连接

bind_udp_port

int

服务端监听 UDP 端口

0

用于辅助创建 P2P 连接

kcp_bind_port

int

服务端监听 KCP 协议端口

0

用于接收采用 KCP 连接的 frpc

proxy_bind_addr

string

代理监听地址

同 bind_addr

可以使代理监听在不同的网卡地址

log_file

string

日志文件地址

./frps.log

如果设置为 console,会将日志打印在标准输出中

log_level

string

日志等级

info

trace, debug, info, warn, error

log_max_days

int

日志文件保留天数

3

disable_log_color

bool

禁用标准输出中的日志颜色

false

detailed_errors_to_client

bool

服务端返回详细错误信息给客户端

true

tcp_mux_keepalive_interval

int

tcp_mux 的心跳检查间隔时间

60

单位:秒

tcp_keepalive

int

和客户端底层 TCP 连接的 keepalive 间隔时间,单位秒

7200

负数不启用

heartbeat_timeout

int

服务端和客户端心跳连接的超时时间

90

单位:秒

user_conn_timeout

int

用户建立连接后等待客户端响应的超时时间

10

单位:秒

udp_packet_size

int

代理 UDP 服务时支持的最大包长度

1500

服务端和客户端的值需要一致

tls_cert_file

string

TLS 服务端证书文件路径

tls_key_file

string

TLS 服务端密钥文件路径

tls_trusted_ca_file

string

TLS CA 证书路径

权限验证

参数

类型

说明

默认值

可选值

备注

authentication_method

string

鉴权方式

token

token, oidc

authenticate_heartbeats

bool

开启心跳消息鉴权

false

authenticate_new_work_conns

bool

开启建立工作连接的鉴权

false

token

string

鉴权使用的 token 值

客户端需要设置一样的值才能鉴权通过

oidc_issuer

string

oidc_issuer

oidc_audience

string

oidc_audience

oidc_skip_expiry_check

bool

oidc_skip_expiry_check

oidc_skip_issuer_check

bool

oidc_skip_issuer_check

管理配置

参数

类型

说明

默认值

可选值

备注

allow_ports

string

允许代理绑定的服务端端口

格式为 1000-2000,2001,3000-4000

max_pool_count

int

最大连接池大小

5

max_ports_per_client

int

限制单个客户端最大同时存在的代理数

0

0 表示没有限制

tls_only

bool

只接受启用了 TLS 的客户端连接

false

Dashboard, 监控

参数

类型

说明

默认值

可选值

备注

dashboard_addr

string

启用 Dashboard 监听的本地地址

0.0.0.0

dashboard_port

int

启用 Dashboard 监听的本地端口

0

dashboard_user

string

HTTP BasicAuth 用户名

dashboard_pwd

string

HTTP BasicAuth 密码

dashboard_tls_mode

bool

是否启用 TLS 模式

false

dashboard_tls_cert_file

string

TLS 证书文件路径

dashboard_tls_key_file

string

TLS 密钥文件路径

enable_prometheus

bool

是否提供 Prometheus 监控接口

false

需要同时启用了 Dashboard 才会生效

asserts_dir

string

静态资源目录

Dashboard 使用的资源默认打包在二进制文件中,通过指定此参数使用自定义的静态资源

pprof_enable

bool

启动 Go HTTP pprof

false

用于应用调试

HTTP & HTTPS

参数

类型

说明

默认值

可选值

备注

vhost_http_port

int

为 HTTP 类型代理监听的端口

0

启用后才支持 HTTP 类型的代理,默认不启用

vhost_https_port

int

为 HTTPS 类型代理监听的端口

0

启用后才支持 HTTPS 类型的代理,默认不启用

vhost_http_timeout

int

HTTP 类型代理在服务端的 ResponseHeader 超时时间

60

subdomain_host

string

二级域名后缀

custom_404_page

string

自定义 404 错误页面地址

TCPMUX

参数

类型

说明

默认值

可选值

备注

tcpmux_httpconnect_port

int

为 TCPMUX 类型代理监听的端口

0

启用后才支持 TCPMUX 类型的代理,默认不启用

tcpmux_passthrough

bool

是否透传 CONNECT 请求

false

通常在本地服务是 HTTP Proxy 时使用

客户端配置表

基础配置

参数

类型

说明

默认值

可选值

备注

server_addr

string

连接服务端的地址

0.0.0.0

server_port

int

连接服务端的端口

7000

connect_server_local_ip

string

连接服务端时所绑定的本地 IP

dial_server_timeout

int

连接服务端的超时时间

10

dial_server_keepalive

int

和服务端底层 TCP 连接的 keepalive 间隔时间,单位秒

7200

负数不启用

http_proxy

string

连接服务端使用的代理地址

格式为 {protocol}://user:passwd@192.168.1.128:8080 protocol 目前支持 http、socks5、ntlm

log_file

string

日志文件地址

./frpc.log

如果设置为 console,会将日志打印在标准输出中

log_level

string

日志等级

info

trace, debug, info, warn, error

log_max_days

int

日志文件保留天数

3

disable_log_color

bool

禁用标准输出中的日志颜色

false

pool_count

int

连接池大小

0

user

string

用户名

设置此参数后,代理名称会被修改为 {user}.{proxyName},避免代理名称和其他用户冲突

dns_server

string

使用 DNS 服务器地址

默认使用系统配置的 DNS 服务器,指定此参数可以强制替换为自定义的 DNS 服务器地址

login_fail_exit

bool

第一次登陆失败后是否退出

true

protocol

string

连接服务端的通信协议

tcp

tcp, kcp, websocket

tls_enable

bool

启用 TLS 协议加密连接

false

tls_cert_file

string

TLS 客户端证书文件路径

tls_key_file

string

TLS 客户端密钥文件路径

tls_trusted_ca_file

string

TLS CA 证书路径

tls_server_name

string

TLS Server 名称

为空则使用 server_addr

disable_custom_tls_first_byte

bool

TLS 不发送 0x17

false

当为 true 时,不能端口复用

tcp_mux_keepalive_interval

int

tcp_mux 的心跳检查间隔时间

60

单位:秒

heartbeat_interval

int

向服务端发送心跳包的间隔时间

30

建议启用 tcp_mux_keepalive_interval,将此值设置为 -1

heartbeat_timeout

int

和服务端心跳的超时时间

90

udp_packet_size

int

代理 UDP 服务时支持的最大包长度

1500

服务端和客户端的值需要一致

start

string

指定启用部分代理

当配置了较多代理,但是只希望启用其中部分时可以通过此参数指定,默认为全部启用

meta_xxx

map

附加元数据

会传递给服务端插件,提供附加能力

权限验证

参数

类型

说明

默认值

可选值

备注

authentication_method

string

鉴权方式

token

token, oidc

需要和服务端一致

authenticate_heartbeats

bool

开启心跳消息鉴权

false

需要和服务端一致

authenticate_new_work_conns

bool

开启建立工作连接的鉴权

false

需要和服务端一致

token

string

鉴权使用的 token 值

需要和服务端设置一样的值才能鉴权通过

oidc_client_id

string

oidc_client_id

oidc_client_secret

string

oidc_client_secret

oidc_audience

string

oidc_audience

oidc_token_endpoint_url

string

oidc_token_endpoint_url

oidc_additional_xxx

map

OIDC 附加参数

map 结构,key 需要以

oidc_additional_

开头

UI

参数

类型

说明

默认值

可选值

备注

admin_addr

string

启用 AdminUI 监听的本地地址

0.0.0.0

admin_port

int

启用 AdminUI 监听的本地端口

0

admin_user

string

HTTP BasicAuth 用户名

admin_pwd

string

HTTP BasicAuth 密码

asserts_dir

string

静态资源目录

AdminUI 使用的资源默认打包在二进制文件中,通过指定此参数使用自定义的静态资源

pprof_enable

bool

启动 Go HTTP pprof

false

用于应用调试

代理部分配置表,可配置(tcp, udp, http, https, stcp, sudp, xtcp, tcpmux)

通用配置

通用配置是指不同类型的代理共同使用的一些配置参数。

基础配置

参数

类型

说明

是否必须

默认值

可选值

备注

type

string

代理类型

tcp

tcp, udp, http, https, stcp, sudp, xtcp, tcpmux

use_encryption

bool

是否启用加密功能

false

启用后该代理和服务端之间的通信内容都会被加密传输

use_compression

bool

是否启用压缩功能

false

启用后该代理和服务端之间的通信内容都会被压缩传输

proxy_protocol_version

string

启用 proxy protocol 协议的版本

v1, v2

如果启用,则 frpc 和本地服务建立连接后会发送 proxy protocol 的协议,包含了原请求的 IP 地址和端口等内容

bandwidth_limit

string

设置单个 proxy 的带宽限流

单位为 MB 或 KB,0 表示不限制,如果启用,会作用于对应的 frpc

本地服务配置

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

参数

类型

说明

是否必须

默认值

可选值

备注

local_ip

string

本地服务 IP

127.0.0.1

需要被代理的本地服务的 IP 地址,可以为所在 frpc 能访问到的任意 IP 地址

local_port

int

本地服务端口

配合 local_ip

plugin

string

客户端插件名称

见客户端插件的功能说明

用于扩展 frpc 的能力,能够提供一些简单的本地服务,如果配置了 plugin,则 local_ip 和 local_port 无效,两者只能配置一个

plugin_params

map

客户端插件参数

map 结构,key 需要都以 “plugin_” 开头,每一个 plugin 需要的参数也不一样,具体见客户端插件参数中的内容

负载均衡和健康检查

参数

类型

说明

是否必须

默认值

可选值

备注

group

string

负载均衡分组名称

用户请求会以轮询的方式发送给同一个 group 中的代理

group_key

string

负载均衡分组密钥

用于对负载均衡分组进行鉴权,group_key 相同的代理才会被加入到同一个分组中

health_check_type

string

健康检查类型

tcp,http

配置后启用健康检查功能,tcp 是连接成功则认为服务健康,http 要求接口返回 2xx 的状态码则认为服务健康

health_check_timeout_s

int

健康检查超时时间(秒)

3

执行检查任务的超时时间

health_check_max_failed

int

健康检查连续错误次数

1

连续检查错误多少次认为服务不健康

health_check_interval_s

int

健康检查周期(秒)

10

每隔多长时间进行一次健康检查

health_check_url

string

健康检查的 HTTP 接口

如果 health_check_type 类型是 http,则需要配置此参数,指定发送 http 请求的 url,例如 “/health”

TCP

参数

类型

说明

是否必须

默认值

可选值

备注

remote_port

int

服务端绑定的端口

用户访问此端口的请求会被转发到 local_ip:local_port

UDP

参数

类型

说明

是否必须

默认值

可选值

备注

remote_port

int

服务端绑定的端口

用户访问此端口的请求会被转发到 local_ip:local_port

HTTP

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

参数

类型

说明

是否必须

默认值

可选值

备注

custom_domains

[]string

服务器绑定自定义域名

是(和 subdomain 两者必须配置一个)

用户通过 vhost_http_port 访问的 HTTP 请求如果 Host 在 custom_domains 配置的域名中,则会被路由到此代理配置的本地服务

subdomain

string

自定义子域名

是(和 custom_domains 两者必须配置一个)

和 custom_domains 作用相同,但是只需要指定子域名前缀,会结合服务端的 subdomain_host 生成最终绑定的域名

locations

[]string

URL 路由配置

采用最大前缀匹配的规则,用户请求匹配响应的 location 配置,则会被路由到此代理

route_by_http_user

string

根据 HTTP Basic Auth user 路由

http_user

string

用户名

如果配置此参数,暴露出去的 HTTP 服务需要采用 Basic Auth 的鉴权才能访问

http_pwd

string

密码

结合 http_user 使用

host_header_rewrite

string

替换 Host header

替换发送到本地服务 HTTP 请求中的 Host 字段

headers

map

替换 header

map 中的 key 是要替换的 header 的 key,value 是替换后的内容

HTTPS

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

参数

类型

说明

是否必须

默认值

可选值

备注

custom_domains

[]string

服务器绑定自定义域名

是(和 subdomain 两者必须配置一个)

用户通过 vhost_http_port 访问的 HTTP 请求如果 Host 在 custom_domains 配置的域名中,则会被路由到此代理配置的本地服务

subdomain

string

自定义子域名

是(和 custom_domains 两者必须配置一个)

和 custom_domains 作用相同,但是只需要指定子域名前缀,会结合服务端的 subdomain_host 生成最终绑定的域名

STCP

参数

类型

说明

是否必须

默认值

可选值

备注

role

string

角色

server

server,visitor

server 表示服务端,visitor 表示访问端

sk

string

密钥

服务端和访问端的密钥需要一致,访问端才能访问到服务端

SUDP

参数

类型

说明

是否必须

默认值

可选值

备注

role

string

角色

server

server,visitor

server 表示服务端,visitor 表示访问端

sk

string

密钥

服务端和访问端的密钥需要一致,访问端才能访问到服务端

XTCP

参数

类型

说明

是否必须

默认值

可选值

备注

role

string

角色

server

server,visitor

server 表示服务端,visitor 表示访问端

sk

string

密钥

服务端和访问端的密钥需要一致,访问端才能访问到服务端

TCPMUX

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

参数

类型

说明

是否必须

默认值

可选值

备注

multiplexer

string

复用器类型

httpconnect

custom_domains

[]string

服务器绑定自定义域名

是(和 subdomain 两者必须配置一个)

用户通过 tcpmux_httpconnect_port 访问的 CONNECT 请求如果 Host 在 custom_domains 配置的域名中,则会被路由到此代理配置的本地服务

subdomain

string

自定义子域名

是(和 custom_domains 两者必须配置一个)

和 custom_domains 作用相同,但是只需要指定子域名前缀,会结合服务端的 subdomain_host 生成最终绑定的域名

route_by_http_user

string

根据 HTTP Basic Auth user 路由

5、服务端监控面板

 

 

 

 

6、总结

以上就是本期分享内容,以windows的3389远程服务端口为例,映射了3389端口到公网ip的33389实现访问公网ip访问到本地服务,当然也可以映射tcp, udp, http, https, stcp, sudp, xtcp, tcpmux服务程序,实现公网访问。


http://chatgpt.dhexx.cn/article/bZKshQGu.shtml

相关文章

利用frps进行内网穿透

这里使用的是传统穿透方法,需要一个有公网ip的中转节点去告知 看最下面,用最新版的frps 1、注意 服务器和客户机之间的数据传输全部经过中转服务器,传输速度将受制于中转服务器的上下行带宽。 2、穿透原理 其实就是客户端A绑定端口发送数…

使用frps建立内网穿透从而实现外界连接内网电脑的全教程

1. 说明 我有台服务器,但它在内网里,我需要通过ssh方式访问它,目前可以采用:向日葵等商业软件,RustDesk等开源软件。或者,《自建内网穿透服务器》。 本教程把实现上述功能的所有步骤罗列出来,以…

frp 内网穿透服务器搭建frps服务端和frpc客户端

1 工具 一台具有公网ip的服务器 2 下载frp frp下载地址 打开上面的frp下载地址 公网服务器上 打开下载文件 frps是服务端,在公网服务器上部署 frpc是客户端,在需要内网穿透的电脑上部署 1. frps配置 首先我这用的是win公网服务器 (linux…

内网穿透配置(FRP)

目录 0、内网穿透的一般场景 1、内网穿透配置 a、frp软件下载 b、frp 的配置 3、通过 frp 实现远程连接 4、设置 frpc / frps 开机启动的方法 5、设置frp安全连接的方法 0、内网穿透的一般场景 放假回家怎么远程连接学校实验室的服务器? 先分析一波&#x…

FRP入门篇

目录 一、前言 1、概述 2、原理 3、支持功能 4、适用场景 二、环境准备 三、使用 1、安装包下载 2、服务端部署 2.1、上传安装包 2.3、启动服务端 3、客户端部署 3.1、代理服务准备 3.2、上传安装包 3.3、客户端配置 3.4、启动客户端 4、功能验证 一、前言 1、…

frps内网穿透

1 原理讲解 frp工作原理 服务端运行,监听一个主端口,等待客户端的连接; 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;服务端fork新的进程监听客户端指定的端口; 外网用户连接到客户…

2021大数据架构、高性能、数据治理面试题

2021大数据架构、高性能、数据治理面试题 需要自取:https://url80.ctfile.com/f/32319880-516640957-aba608 (访问密码:1000)

Java架构师和大数据架构师的区别是什么?哪个更有发展前景?

[Java]是我们耳熟能详的编程语言,[大数据]更是当今科技的明星技术,那Java和Java大数据架构学习的内容是一样的吗?两者有什么区别呢?今天千锋广州Java的老师就从Java和大数据架构的以下方面谈谈两者的区别。 [ 01 [架构师](需要考…

大数据架构发展的20年

随着近几年数据湖概念的兴起,业界对于数据仓库和数据湖的对比甚至争论就一直不断。有人说数据湖是下一代大数据平台,各大云厂商也在纷纷的提出自己的数据湖解决方案,一些云数仓产品也增加了和数据湖联动的特性。 但是数据仓库和数据湖的区别…

大数据架构设计模式主要考虑八方面问题

在架构设计中,没有万能的软件架构能解决所有问题,不同的场景、需求、限制下需要有针对性的架构模式才能满足项目需求。大数据架构设计模式中,需要从分层、分割、分布式、集群、缓存、异步、灾备、自动化几个方面考虑。 1.分层 大数据平台从…

深度解密 5 类大数据架构及实现

前几天读到白发川的一篇文章《对比解读五种主流大数据架构的数据分析能力》,文中详细总结了各类数据架构的应用以及原理。作为一名在数据仓库耕耘多年的技术人员,对于其中的一些技术细节还是破解兴趣的,所以随着作者的思路写下了我对主流数据…

典型大数据架构有哪些?我该怎么选择?

讨论大数据架构,不可避免要讨论传统的结构化存储和数据仓库。 PS:最原始的结绳记事、仓颉造字不在咱们讨论范围内哈,咱们主要讨论计算机出现以后的数据存储。 我们对数据存储方式的认知顺序一般是: 注意:这个演变过程&…

大数据架构与技术——(一)大数据概述

文章目录 1.1 大数据时代1.1.1第三次信息化浪潮1.1.2信息科技为大数据时代提供技术支撑1.1.3数据产生方式的变革促成大数据时代的来临1.1.4 大数据的发展历程 1.2 大数据概念1.2.1 数据量大1.2.2 数据类型繁多1.2.3 处理速度快 1.3 大数据的影响1.4 大数据的应用1.5 大数据关键…

什么是大数据架构

什么是大数据架构 大数据架构是用于摄取和处理大量数据(通常称为“大数据”)的总体系统,因此可以针对业务目的进行分析。该架构可视为基于组织业务需求的大数据解决方案的蓝图。大数据架构旨在处理以下类型的工作:   批量处理大数据源。 实时处理大…

Pipeline大数据架构

1.Pipeline大数据架构 (create by 王小雷) Pipeline大数据架构,面向大数据仓库和大数据处理平台。是基于lambda的大数据架构的变种,增加了企业级服务,而并非只是大数据组件的对切,是一种更落地的方案。 如…

大数据架构之--Kappa架构

一、什么是Kappa架构 Kappa 架构是由 LinkedIn 的前首席工程师杰伊克雷普斯(Jay Kreps)提出的一种架构思想。克雷普斯是几个著名开源项目(包括 Apache Kafka 和 Apache Samza 这样的流处理系统)的作者之一。 Kreps 提出了一个改…

大数据架构及技术体系

下面是大数据体系架构图 大数据分2个部分,一部分是走实时的,另外一部分是走离线的,不管那块都需要数据来分析 从上图来看,数据分为结构化数据(MYSQL,ORACLE等),半结构数据(文件日志…

大数据架构演进

1、数仓架构演变(场景驱动) 1.1 经典数仓架构 数据仓库概念是Inmon于1990年提出并给出了完整的建设方法 1.2 离线大数据架构 随着互联网时代来临,数据量暴增,开始使用大数据工具来代替经典数仓中的传统工具 此时仅仅是工具的…

大数据架构(一)背景和概念

-系列目录- 大数据架构(一)背景和概念 大数据架构(二)大数据发展史 一、背景 1.岗位现状 大数据在一线互联网已经爆发了好多年,2015年-2020年(国内互联网爆发期)那时候的大数据开发,刚毕业能写Hive SQL配置个离线任务、整个帆软报表都20K起步。如果做到架…

大数据架构

大数据核心原理和场景分析 processon:https://www.processon.com/view/link/60b4d0071e08532bd00e9290