4 个版本

新版本 0.0.11 2024年8月13日
0.0.10 2024年8月10日
0.0.9 2024年8月5日
0.0.8 2024年8月5日

网络编程 中排名第 351

Download history 203/week @ 2024-08-03 228/week @ 2024-08-10

每月下载量 431

MIT/Apache

30KB
643

[HPTP] (高性能TCP代理)

hptp 是一个高性能 TCP 代理,旨在通过可配置的运行时选项将流量转发到指定的主机和端口。

功能

  • 支持 IPv4 和 IPv6。
  • 可配置的日志级别。
  • 可选择单线程或多线程运行时。
  • 快速高效,在 Linux 上使用 splice 系统调用。

使用方法

命令行参数

  • --v4 (别名: --ipv4): 启用 IPv4。
  • --v6 (别名: --ipv6): 启用 IPv6。
  • --host <HOST>: 指定要转发流量的主机。
  • --ports <PORTS>: 指定要转发流量的端口。
  • --runtime <Runtime type> (别名: --rt): 指定运行时类型(默认 single-threaded)。

默认情况下,如果没有指定 --v4--v6,则启用 --v4

示例

hptp--host example.com--ports[80,443] --log info--runtime multi-threaded

这将把所有 IPv4 流量转发到 0.0.0.0 的 80 和 443 端口到 example.com: <port>:

配置

运行时类型

  • single-threaded: 在单个线程上运行代理。
  • multi-threaded: 在多个线程上运行代理。

端口数组

端口数组允许您指定代理应转发流量的端口。您可以通过以下几种方式定义此数组:

  1. 单个端口: 您可以列出以逗号分隔的单个端口号。

    • 示例: [80, 443, 8080]
  2. 包含范围:您可以使用 .. 语法指定端口号范围,包括起始和结束值。

    • 示例:[80..90](这包括端口号80、81、...、90)
  3. 排除范围:您可以使用 ..!= 语法指定端口号范围,包括起始值但排除结束值。

    • 示例:[80..!=90](这包括端口号80、81、...、89)

端口号数组是从字符串表示形式解析的,并支持单个端口和范围的混合。以下是它的工作方式

  • 字符串应以 [ 开头并以 ] 结尾。
  • 在括号内,端口和范围由逗号分隔。
  • 每个元素可以是一个单独的端口、一个包含范围或一个排除范围。

示例

[80, 443, 20..24, 2040..!=2080]
[80..90, 443, 8080]

主机

host 参数指定代理将转发流量的目标主机。这可以是一个IP地址或主机名。以下是一些示例

  • IPv4地址127.0.0.1
  • IPv6地址::1
  • 主机名example.com

主机参数确保所有接收到的代理流量都指向指定的主机。这在需要集中流量管理或重定向流量到特定服务器的情况下非常有用。

依赖项

~10-20MB
~276K SLoC