xfrpc项目是用C语言编写的frp客户端实现,专为OpenWRT和物联网系统设计。该项目的主要动机是为资源有限的设备提供一个轻量级解决方案,比如OpenWRT设备通常ROM和RAM空间有限。该项目旨在提供一个比其他可用选项占用更少空间和内存的frp客户端。
xfrpc部分兼容最新的frp发布功能,目标是完全兼容最新的frp发布版本。
以下表格详细列出了兼容功能:
功能 | xfrpc | frpc |
---|---|---|
tcp | 支持 | 支持 |
tcpmux | 支持 | 支持 |
http | 支持 | 支持 |
https | 支持 | 支持 |
custom_domains | 支持 | 支持 |
subdomain | 支持 | 支持 |
socks5 | 支持 | 不支持 |
use_encryption | 不支持 | 支持 |
use_compression | 不支持 | 支持 |
udp | 不支持 | 支持 |
p2p | 不支持 | 支持 |
xtcp | 不支持 | 支持 |
stcp | 不支持 | 支持 |
sequenceDiagram title: xfrpc与frps通信交互时序图 participant 本地服务 participant xfrpc participant frps participant 远程访问用户 xfrpc ->> frps : TypeLogin消息 frps ->> xfrpc : TypeLoginResp消息 Note right of frps : 根据Login信息里面的pool值,决定给xfrpc发送几条TypeReqWorkConn请求信息 frps ->> xfrpc : frps aes-128-cfb iv[16] 数据 frps -->> xfrpc : TypeReqWorkConn消息 loop 根据Login中的PoolCount创建工作连接数 xfrpc -->> frps : TypeNewWorkConn消息 Note left of xfrpc : 与服务器创建代理服务工作连接,并请求新的工作连接请求 Note right of frps : 处理xfrpc端发送的TypeNewWorkConn消息,注册该工作连接到连接池中 frps ->> xfrpc : TypeStartWorkConn消息 Note left of xfrpc : 将新创建的工作连接与代理的本地服务连接做绑定 end xfrpc ->> frps : xfrpc aes-128-cfb iv[16] 数据 loop 用户配置的代理服务数 xfrpc -->> frps : TypeNewProxy消息 frps -->> xfrpc : NewProxyResp消息 end loop 心跳包检查 xfrpc -->> frps : TypePing消息 frps -->> xfrpc : TypePong消息 end 远程访问用户 ->> frps : 发起访问 frps ->> xfrpc : TypeStartWorkconn消息 loop 远程访问用户与本地服务之间的交互过程 frps ->> xfrpc : 用户数据 xfrpc ->> 本地服务 : 用户数据 本地服务 ->> xfrpc : 本地服务数据 xfrpc ->> frps : 本地服务数据 frps ->> 远程访问用户 : 本地服务数据 end
要在Ubuntu 20.04 LTS上运行xfrpc,你需要安装以下库:libevent、openssl-dev和json-c。在终端中使用以下命令安装这些库:
sudo apt-get update
sudo apt-get install -y libjson-c-dev libevent-dev libssl-dev
安装完所需的库后,你可以通过在GitHub上fork xfrpc仓库,然后使用以下命令将其克隆到你的本地机器来下载xfrpc源代码:
git clone https://github.com/${YOUR_GITHUB_ACCOUNT_NAME}/xfrpc.git
进入xfrp目录并创建一个build目录,使用以下命令:
cd xfrp
mkdir build
使用以下命令构建和安装xfrpc: 这将编译 xfrpc 并在 build 目录中创建一个可执行文件。然后,您可以通过在终端中运行适当的命令来使用该可执行文件运行 xfrpc。
使用内置第三方 库构建 xfrpc。
需要 cmake 版本 > 3.1。
要使用内置的第三方库构建 xfrpc,您可以在 GitHub 上 fork xfrpc 仓库,然后在本地克隆它。接着,进入 xfrp 目录,创建一个 build 目录,并使用 cmake 配置构建。
git clone https://github.com/${YOUR_GITHUB_ACCOUNT_NAME}/xfrpc.git cd xfrp mkdir build cmake -D THIRDPARTY_STATIC_BUILD=ON .. make
通过设置 THIRDPARTY_STATIC_BUILD=ON,构建 过程将使用 xfrpc 源代码中包含的库,而不是使用系统上安装的库。
THIRDPARTY_STATIC_BUILD 参数默认设置为 OFF,这意味着默认情况下构建过程将使用系统上安装的库。
需要注意的是,您需要 cmake 版本大于 3.1 才能使用此功能。
在 x86 架构下编译 arm 架构或 mips 架构 xfrpc 的方法如下。
在 Ubuntu 22.04 LTS 上测试
交叉编译 mips 架构 xfrpc(仅支持 linux mips,不支持 irix mips) 如果在特定的 mips 架构上无法运行,请修改 thirdparty 文件夹中的 CMakeLists.txt,将 linux-mips32 字符串改为 linux-generic32。修改后可以工作。
sudo apt-get install gcc-mips-linux-gnu # 安装 mips-gcc 编译器
mkdir build && cd build
cmake -DTHIRDPARTY_STATIC_BUILD=mips -DCMAKE_C_COMPILER=mips-linux-gnu-gcc ..
make
CMAKE_C_COMPILER 标志是您的交叉编译器的路径。建议将其放入环境变量中。
交叉编译 arm 架构 xfrpc
sudo apt-get install arm-linux-gnueabihf-gcc
mkdir build && cd build
cmake -DTHIRDPARTY_STATIC_BUILD=arm -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc ..
make
在项目根目录下
$ DOCKER_BUILDKIT=1 docker build --output out . -f docker/Dockerfile $ ls out/ xfrpc
自版本 1.04.515 起,xfrpc 已包含在 OpenWrt 社区中,这使用户可以轻松地将其包含在自定义固件镜像中。建议使用最新版本的 xfrpc,因为它可能包含错误修复和新功能。
要在 OpenWrt 固件镜像中包含 xfrpc,您可以使用 make menuconfig 命令打开配置菜单。在菜单中,导航至"Network",选择"Web Servers/Proxies",然后选择 xfrpc。这将在将要构建的固件镜像中包含 xfrpc。
当遇到段错误时,请使用以下命令编译 xfrpc:
cmake -DCMAKE_BUILD_TYPE=Debug ..
现在您的 xfrpc 可以检测内存泄漏。我们将来会在 CI 流程中添加它。
在使用 xfrpc 之前,您应该获取 frps 服务器:frps
frps 是 FRP(快速反向代理)系统的服务器端组件,用于将传入连接转发到 xfrpc。
要运行 frps,您可以使用以下命令,提供 frps 配置文件的路径:
./frps -c frps.ini
示例中提供了一个 frps.ini 配置文件示例,将 frps 绑定到监听 7000 端口。
# frps.ini
[common]
bind_port = 7000
xfrpc 是 FRP 系统的客户端组件,可用于转发 TCP 连接。要将传入的 TCP 连接转发到本地服务,您可以在 xfrpc_mini.ini 文件中使用以下示例配置 xfrpc
#xfrpc_mini.ini
[common]
server_addr = your_server_ip
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6128
此配置告诉 frp 服务器(frps)将传入的远程端口 6128 上的连接转发到 xfrpc 客户端。xfrpc 客户端随后会将这些连接转发到运行在 IP 地址 127.0.0.1 和端口 22 上的本地服务。
# frps.ini
[common]
bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443
确保xfrpc客户端正确配置以与frp服务器通信很重要,需要在xfrpc配置文件中指定正确的服务器地址和端口。
# xfrpc_mini.ini
[common]
server_addr = x.x.x.x
server_port = 7000
[http]
type = http
local_port = 80
local_ip = 127.0.0.1
custom_domains = www.example.com
[https]
type = https
local_port = 443
local_ip = 127.0.0.1
custom_domains = www.example.com
FRP服务器(frps)将把传入的HTTP和HTTPS连接转发到域名"www.example.com",具体位置是xfrpc在配置文件中指定的本地IP和端口(分别为127.0.0.1:80和127.0.0.1:443)。
为了排查运行xfrpc时的问题,你可以使用调试模式。这种模式在运行时会提供更多信息。
xfrpc -c frpc_mini.ini -f -d 7
xfrpc -c frpc_mini.ini -d 0
需要注意的是,在发布模式下运行xfrpc会生成较少的日志输出,运行速度也会比调试模式更快,因此在生产环境中建议使用发布模式运行xfrpc。
如果你在OpenWRT设备上运行xfrpc,luci-app-xfrpc是一个不错的选择,它提供了一个基于Web的界面来配置和管理xfrpc。luci-app-xfrpc是LuCI Web界面的一个模块,LuCI是OpenWRT的默认Web界面。
luci-app-xfrpc已被LuCI项目采用,LuCI是OpenWRT的官方Web界面。这意味着它是一个受支持且维护良好的选项,用于在OpenWRT设备上管理xfrpc。
luci-app-xfrpc可以通过OpenWRT的opkg包管理器安装,它提供了一个用户友好的界面来配置xfrpc客户端,包括设置多个连接、自定义域名等选项。
有关提交补丁和贡献工作流程的详细信息,请参阅CONTRIBUTING。
QQ群:331230369
支付宝打赏
微信 打赏
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI 集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号