探索 Project Conncept:Caddy 的 TCP/UDP 应用层
caddy-l4Layer 4 (TCP/UDP) app for Caddy项目地址:https://gitcode.com/gh_mirrors/ca/caddy-l4
项目介绍
Project Conncept 是一个为 Caddy 设计的实验性第 4 层应用。它允许基于连接属性或数据流开头的原始 TCP/UDP 连接进行可组合的处理。通过这个应用,你可以监听套接字/端口,并实现各种逻辑,例如:
- 将所有输入回显给客户端。
- 将所有原始字节代理到指定地址。
- 如果连接是 TLS,终止 TLS 后将所有字节代理到 :5000。
- 终止 TLS;如果是 HTTP,代理到 localhost:80;否则回显。
- 如果连接是 TLS,不终止直接代理到 :443;如果是 HTTP,代理到 :80;如果是 SSH,代理到 :22。
- 如果 HTTP Host 是
example.com
或 TLS ServerName 是example.com
,则代理到 192.168.0.4。 - 阻止来自特定 IP 范围的连接。
- 限制数据流以模拟慢速连接。
项目技术分析
Project Conncept 作为一个 Caddy 应用,可以与其他 Caddy 应用如 HTTP 服务器或 TLS 证书管理器协同工作。它支持 Caddyfile 和 JSON 配置,提供了丰富的匹配器和处理器,使得配置灵活且强大。
匹配器
- layer4.matchers.clock - 根据连接时间匹配。
- layer4.matchers.http - 匹配以 HTTP 请求开始的连接。
- layer4.matchers.local_ip - 根据本地 IP 匹配。
- layer4.matchers.not - 匹配未被内部匹配器集匹配的连接。
- layer4.matchers.postgres - 匹配类似 Postgres 的连接。
- layer4.matchers.proxy_protocol - 匹配以 HAProxy 代理协议开始的连接。
- layer4.matchers.rdp - 匹配类似 RDP 的连接。
- layer4.matchers.regexp - 匹配第一个数据包字节与正则表达式匹配的连接。
- layer4.matchers.remote_ip - 根据远程 IP 匹配。
- layer4.matchers.socks4 - 匹配类似 SOCKSv4 的连接。
- layer4.matchers.socks5 - 匹配类似 SOCKSv5 的连接。
- layer4.matchers.ssh - 匹配类似 SSH 的连接。
- layer4.matchers.tls - 匹配以 TLS 握手开始的连接。
- layer4.matchers.xmpp - 匹配类似 XMPP 的连接。
处理器
- layer4.handlers.echo - 回显服务器。
- layer4.handlers.proxy - 强大的第 4 层代理,支持多个上游(负载均衡和健康检查)和建立新的 TLS 连接到后端。
- layer4.handlers.proxy_protocol - 接收 HAProxy 代理协议。
- layer4.handlers.socks5 - 处理 SOCKSv5 代理协议连接。
- layer4.handlers.subroute - 实现递归逻辑,允许匹配和处理已匹配的连接。
- layer4.handlers.tee - 将连接处理分支到并发处理链。
- layer4.handlers.throttle - 限制连接以模拟慢速和延迟。
- layer4.handlers.tls - TLS 终止。
项目及技术应用场景
Project Conncept 适用于需要复杂网络流量处理的场景,例如:
- 多协议代理和负载均衡。
- 安全通信(TLS 终止和代理)。
- 特定协议的流量过滤和路由。
- 模拟网络条件(如慢速连接)进行测试。
项目特点
- 灵活性:支持多种匹配器和处理器,可以根据需求灵活配置。
- 集成性:作为 Caddy 应用,可以与其他 Caddy 模块无缝集成。
- 实验性:虽然功能强大,但仍处于开发阶段,可能会有重大变更。
- 易用性:支持 Caddyfile 和 JSON 配置,配置示例丰富,易于上手。
结语
**Project Con
caddy-l4Layer 4 (TCP/UDP) app for Caddy项目地址:https://gitcode.com/gh_mirrors/ca/caddy-l4