3 个版本
0.1.2 | 2023 年 6 月 1 日 |
---|---|
0.1.1 | 2023 年 5 月 31 日 |
0.1.0 | 2023 年 5 月 28 日 |
#10 在 #多路复用器
每月 28 次下载
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