您的位置:首页 > 科技 > 能源 > 【内网穿透】FRP 跨平台内网穿透 支持windows linux x86_64 arm64 端口范围映射

【内网穿透】FRP 跨平台内网穿透 支持windows linux x86_64 arm64 端口范围映射

2024/12/23 5:32:52 来源:https://blog.csdn.net/hknaruto/article/details/139969041  浏览:    关键词:【内网穿透】FRP 跨平台内网穿透 支持windows linux x86_64 arm64 端口范围映射

AI提供的资料:

FRP(Fast Reverse Proxy)是一个专为内网穿透设计的高性能反向代理程序。以下是一些关于FRP的详细资料,帮助您更好地理解和使用这一工具:

核心特点:

  • 内网穿透:能够将位于内网的服务通过具有公网IP的服务器暴露到互联网上,使得外部网络可以访问原本隐藏在私有网络中的资源。
  • 协议支持:广泛支持TCP、UDP、HTTP、HTTPS等多种网络协议,满足不同应用场景的需求。
  • 高性能:设计初衷是提供高效的数据传输能力,适合需要低延迟和高带宽的应用场景。
  • 安全机制:支持TLS加密通信,可配置客户端和服务端的单向或双向身份验证,增强数据传输的安全性。
  • 配置灵活:通过简单的配置文件,用户可以定义各种代理规则,包括端口映射、协议选择、认证方式等。
  • 跨平台:FRP支持多种操作系统,包括但不限于Windows、Linux、macOS,便于在不同的环境部署。

安装与配置:

  1. 下载FRP:访问FRP的GitHub页面(https://github.com/fatedier/frp)获取最新版本的FRP客户端(frpc)和服务端(frps)程序。
  2. 部署服务端:在具有公网IP的服务器上安装并配置frps,设置监听端口、认证信息等。
  3. 配置客户端:在内网服务器上安装并配置frpc,定义需要穿透的服务(包括服务类型、本地监听端口、远端映射端口等)以及指向服务端的连接信息。
  4. 启动服务:分别在服务端和客户端启动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启动了多个端口来转发请求。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com