#流量 #tcp-udp #连接 #端口 #配置文件 #远程 #多路复用器

bin+lib 端口转发器

基于流量内容进行连接转发的 TCP/UDP 端口多路复用器

3 个版本

0.1.2 2023 年 6 月 1 日
0.1.1 2023 年 5 月 31 日
0.1.0 2023 年 5 月 28 日

#10#多路复用器

每月 28 次下载

MIT 许可证

60KB
1K SLoC

应用协议多路复用器

应用协议多路复用器是一个工具,允许您根据客户端发送的第一个数据包中的正则表达式模式匹配将 TCP 或 UDP 流量转发到不同的地址。

用法

您可以使用 cargo install portForwarder 从源代码构建此工具,或从 发布页面 下载预构建的二进制文件 portfd

要使用简单的命令行参数运行 portfd,请使用以下语法: portfd <local-bind> <remote>。在这种情况下,您需要指定监听地址和远程地址。对于更高级的使用,可以使用支持更复杂规则的配置文件启动 portfd。以下是一个 YAML 格式的配置文件示例

forwarders:
  - local: 0.0.0.0:8808
    # Specify either 'remoteMap' or 'remote'
    remoteMap:
      - pattern: "[http:localhost]"
        remote: 192.168.44.43:5445
      - pattern: "[https:baidu.com]"
        remote: "39.156.66.10:443"
      - pattern: "[ssh]"
        remote: "192.168.44.43:22"
      - pattern: "[socks5]"
        remote: "192.168.100.46:7890"
      - pattern: "[rdp]"
        remote: 192.168.100.46:3389
      - pattern: .*
        remote: 192.168.100.46:23
    remote: <remote-address/127.0.0.1:2233>
    enable_tcp: true # Default is true
    enable_udp: true # Default is true
    conn_bufsize: 2MB
    max_connections: 10000 # Optional
    allow_nets: # Optional whitelist
      - 127.0.0.0/24

模式字段支持六种格式,所有这些格式都将转换为正则表达式

  • [http] or [http:domain_name]: 仅将匹配 domain_name 的 HTTP 请求的主机名流量转发到指定的远程地址。
  • [https:domain_name]: 匹配 HTTPS 流量客户端 hello 中的 SNI(服务器名称指示)。
  • [ssh]: 仅转发 SSH 流量。
  • [socks5]: 仅转发 socks5 流量。
  • [rdp]: 仅转发 rdp 流量。
  • 任何正则表达式: 仅转发第一个接收到的与该正则表达式匹配的流量。

依赖关系

~5–17MB
~177K SLoC