利用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服务程序,实现公网访问。

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

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

    1 工具 一台具有公网ip的服务器 2 下载frp frp下载地址 打开上面的frp下载地址 公网服务器上 打开下载文件 frps是服务端,在公网服务器上部署 frpc是客户端,在需要内网穿透的电脑上 ...

  2. 怎么在Win7服务器搭建SVN服务端

    怎么在Win7服务器搭建SVN服务端 今天码大夫给大家分享在Windows服务器上如何搭建SVN环境的详细步骤: 工具/原料 1.VisualSVN server 这是服务器端的安装应用程序,根据自己 ...

  3. 利用VPS服务器搭建一个FRP内网穿透服务和Web服务穿透

    目标:实现在公司用mstsc访问控制家里的电脑 附:基本配置参考:FRP服务端和客户端的基本配置_JohnGene的博客 准备资料 1.带有公网ip的Linux主机,下面假设1.2.3.4是固定外网i ...

  4. Centos7搭建Frps服务端的教程

    FRP项目地址:https://github.com/fatedier/frp/releases 假设当前目录为/root. 1.下载Frp文件包 wget https://github.com/fa ...

  5. 在云服务器搭建 socket服务端

    1.环境:腾讯云服务器.ubuntu16.python3.git 2.在自己电脑(我的win10)用python3写好socket服务端代码,上传到自己的GitHub,然后在云服务器里git clon ...

  6. SVN版本服务器搭建(服务端+客户端)

     http://www.cnblogs.com/warrior1988/p/5359084.html 环境:Win7 32 bit SVN简介:程序员在编写程序的过程中,每个程序员都会生成很多不同 ...

  7. linux安装frps服务,Debian手动搭建frps服务端

    本教程以 Debian 64位(amd64)为例. 更新 apt-get update 安装 apt-get install -y wget ntpdate supervisor 创建目录 mkdir ...

  8. 指纹系统服务器,利用JARM指纹进行TLS服务端标记

    原标题:利用JARM指纹进行TLS服务端标记 0x01 背景 对网络空间测绘数据的分析和发掘,是Quake团队一直以来的核心目标. 十几年来Web应用的飞速发展使其毋庸置疑的成为了互联网的主流.为了弥 ...

  9. CSGO社区服搭建服务器架设游戏服务端教程

    CSGO社区服搭建服务器架设游戏服务端教程 我是艾西,上一篇说了搭建CSGO服务器需要准备服务器以及安装好所需要的环境,那么今天说一下CSGO社区私人服务器怎么搭建游戏服务端 搭建CSGO服务器比较简 ...

最新文章

  1. python多线程的使用(导入线程模块、创建子线程任务、启动子线程任务、获取当前执行的线程号)
  2. 最新Android系统版本与API等级对应关系表
  3. 大厂的 404 页面都长啥样?看到最后一个,我笑了...
  4. MySQL 1064 错误
  5. 3d镜头 适配_您是否应该将镜头适配器与无反光镜相机一起使用?
  6. 关于opacity、visibility、display属性的一道CSS面试题
  7. ccna、ccnp视频教程
  8. Interesting卡常数
  9. python编写计算方差的函数_基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解...
  10. 阿里云Oss获取图片的大小信息
  11. 建筑工地人脸识别门禁通道闸机如何安装
  12. 十进制 -> N进制 写法 -- Java
  13. 笔记本电脑蓝牙搜索不到设备
  14. 什么是敏捷管理 常用的敏捷Scrum会议有哪些
  15. php实现智能音箱播放内容,海尔小优智能音箱有这些功能 用好它更方便
  16. 关于C语言中“x++”和“++x”的问题
  17. 矩阵 Hessian
  18. jieba分词统计红楼梦出现名字前20名
  19. latch: cache buffers chains故障处理总结
  20. html在电脑上转换字体怎么变了,电脑网页字体怎么变换大小

热门文章

  1. epub 电子书文件如何使用浏览器打开
  2. 当当年中庆,百万自营图书大放价,又有羊毛可以薅了
  3. EXCEL学习笔记----EXCEL操作
  4. android 官方ui库,腾讯出品的一个超棒的 Android UI 库
  5. 一个屌丝程序猿的人生(十五)
  6. Kill Demodogs——c++——pow_na的博客
  7. 2022总结,强风吹拂
  8. Chrome浏览器及调试教程
  9. JAVA图片裁剪上传实例______软件开发-帮助类
  10. 一些好听的纯音乐及下载