AI提供的资料:
FRP(Fast Reverse Proxy)是一个专为内网穿透设计的高性能反向代理程序。以下是一些关于FRP的详细资料,帮助您更好地理解和使用这一工具:
核心特点:
- 内网穿透:能够将位于内网的服务通过具有公网IP的服务器暴露到互联网上,使得外部网络可以访问原本隐藏在私有网络中的资源。
- 协议支持:广泛支持TCP、UDP、HTTP、HTTPS等多种网络协议,满足不同应用场景的需求。
- 高性能:设计初衷是提供高效的数据传输能力,适合需要低延迟和高带宽的应用场景。
- 安全机制:支持TLS加密通信,可配置客户端和服务端的单向或双向身份验证,增强数据传输的安全性。
- 配置灵活:通过简单的配置文件,用户可以定义各种代理规则,包括端口映射、协议选择、认证方式等。
- 跨平台:FRP支持多种操作系统,包括但不限于Windows、Linux、macOS,便于在不同的环境部署。
安装与配置:
- 下载FRP:访问FRP的GitHub页面(https://github.com/fatedier/frp)获取最新版本的FRP客户端(
frpc
)和服务端(frps
)程序。 - 部署服务端:在具有公网IP的服务器上安装并配置
frps
,设置监听端口、认证信息等。 - 配置客户端:在内网服务器上安装并配置
frpc
,定义需要穿透的服务(包括服务类型、本地监听端口、远端映射端口等)以及指向服务端的连接信息。 - 启动服务:分别在服务端和客户端启动FRP,即可实现内网服务的公网访问。
高级功能与技巧:
- 动态端口映射:FRP支持动态分配端口,使得每次客户端连接时自动获取可用端口映射,适用于不确定数量的服务场景。
- 连接池:优化性能,减少建立连接的延迟,适合频繁短连接的服务。
- 日志与监控:FRP提供详细的日志记录和简单的监控功能,便于问题排查和性能监控。
- P2P穿透尝试:虽然主要聚焦于中心化代理,FRP也尝试性支持点对点穿透,探索更灵活的网络穿透方式。
社区与文档:
- 官方文档:FRP项目维护了一份详细的中文文档(http://www.frp.cool/doc/),涵盖了安装、配置、进阶使用等内容。
- 社区支持:GitHub上活跃的Issue板块和各种技术论坛(如Stack Overflow、知乎等)是解决使用中遇到问题的好去处。
- 第三方服务:除了自建FRP环境,还有如“清欢公益frp”这样的第三方服务,提供免费或付费的FRP服务,简化部署和运维工作。
通过上述资料,您应该能够对FRP有一个全面的了解,并着手将其应用于自己的项目中。在实施过程中,务必关注安全配置,确保内外网通讯的安全性。
加速地址下载windows平台软件包
https://dgithub.xyz/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_windows_amd64.zip
中文文档地址
frp/README_zh.md at dev · fatedier/frp · GitHub
端口范围映射文档
端口范围映射 | frp
端口范围映射
Added in v0.56.0
我们可以利用 Go template 的 range 语法结合内置的 parseNumberRangePair
函数来实现端口范围映射。
下面的示例,应用运行后会创建 8 个代理,名称为 test-6000, test-6001 ... test-6007
,分别将远端的端口映射到本地。
{{- range $_, $v := parseNumberRangePair "6000-6006,6007" "6000-6006,6007" }}
[[proxies]]
name = "tcp-{{ $v.First }}"
type = "tcp"
localPort = {{ $v.First }}
remotePort = {{ $v.Second }}
{{- end }}
本地测试的完整配置
serverAddr = "127.0.0.1"
serverPort = 7000
{{- range $_, $v := parseNumberRangePair "20000-20100" "30000-30100" }}
[[proxies]]
name = "tcp-{{ $v.First }}"
type = "tcp"
localPort = {{ $v.First }}
remotePort = {{ $v.Second }}
{{- end }}
提前打开两个cmd,分别启动服务器端、客户端
启动服务器
frps.exe
启动客户端(-c 参数指定配置文件)
frpc.exe -c frpc.toml
查看监听的端口(windows cmd没有linux bash的管道,不方便。。。)
netstat -ano
可以看到,frps.exe启动了多个端口来转发请求。