一个 TCP/UDP 端口复用器,根据第一个包的内容用正则表达式来确定转发的目标

353 天前
 ppxppx

github: https://github.com/lidotcircle/portForwarder

应用协议复用器

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

使用方法

可以从源代码构建此工具,或者从发布页面下载名为 portfd 的预编译二进制文件。

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

forwarders:
  - local: 0.0.0.0:8808
    # 指定 'remoteMap' 或 '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: .*
        remote: 192.168.100.46:3389
    remote: <remote-address/127.0.0.1:2233>
    enable_tcp: true # 默认为 true
    enable_udp: true # 默认为 true
    conn_bufsize: 2MB
    max_connections: 10000 # 可选
    allow_nets: # 可选的白名单
      - 127.0.0.0/24

pattern字段支持四种格式,所有格式都将转换为正则表达式:

2350 次点击
所在节点    分享创造
27 条回复
ppxppx
352 天前
@leeyuzhe 收到的第一个 tcp 包的数据越多应该更有助于判断协议类型,所以不需要处理吧
julyclyde
351 天前
@leeyuzhe 粘包是一种编程错误
和转发没什么关系
leeyuzhe
350 天前
@ppxppx #21
@julyclyde
对对对,粘包跟 lz 这个项目无关 ,是我想错了。
julyclyde
350 天前
@IDAEngine 首先 iptables 就不负责转发吧,何谈“根据规则”?
etnperlong
349 天前
不错不错 已 star
想提个需求 看看大佬能不能支持一下 RDP ?
ppxppx
349 天前
@etnperlong #25 我之前有看过相关文档,不过 rdp 的包有点复杂,还得再研究研究
ppxppx
349 天前
@etnperlong #25 刚刚加了对 rdp 的支持

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/943547

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX