11
2025
06
09:50:52

【工具分享】Switcher一个多功能的端口转发工具(已实现端口复用+socks代理)

介绍

Switcher:一个多功能的端口转发工具,支持转发本地或远程地址的端口,支持正则表达式转发(实现端口复用)。

  1. 简单修改了一下,实现了已存在端口的监听(原只支持新建监听端口)

  2. 新增自动创建socks5代理

Config示例配置


{  
 "log_level": "debug",  
 "socks5_listen": "",  
 "rules": [    
 {      
 "name": "普通模式示例",      
 "listen": "0.0.0.0:1234",      
 "blacklist":{        
 "1.2.3.4":true,        
 "114.114.114.114":true      
 },      
 "targets": [        
 {          
 "address": "127.0.0.1:80"        
 }      
 ]    
 },  
   
 {      
 "name": "正则模式示例",      
 "listen": "0.0.0.0:5555",      
 "enable_regexp": true,      
 "first_packet_timeout": 5000,      
 "blacklist":{        
 "1.2.3.4":true,        
 "114.114.114.114":true      
 },      
 "targets": [        
 {          
 "regexp": "^(GET|POST|HEAD|DELETE|PUT|CONNECT|OPTIONS|TRACE)",          
 "address": "127.0.0.1:80"        
 },        
 {          
 "regexp": "^SSH",          
 "address": "123.123.123.123:22"        
 }      
 ]    
 }  
 ]
 }




字段解释

主结构

  1. log_level代表日志等级,有info/debug/error可以选

  2. rules是规则配置数组,看下面

规则配置

  1. name是这个规则的名字,为了在日志中区分不同规则,建议取不同的名字

  2. listen是这个规则监听的地址,0.0.0.0:1234代表监听所有网卡的1234端口

  3. enable_regexp为是否开启正则表达式模式,后面有解释

  4. first_packet_timeout为等待客户端第一个数据包的超时时间(毫秒),仅开启正则表达式模式后有效,后面有解释

  5. blacklist为黑名单IP,在黑名单里面的IP且为true的时候则直接断开链接。如不需要使用黑名单可留null

  6. targets为目标配置数组,看下面

目标配置

目标配置有两种模式:普通模式正则模式

上面规则配置的enable_regexp为true或false决定了这个目标配置是普通模式还是正则模式。

普通模式,即上面的enable_regexpfalse,当存在多个目标的时候,程序会从第一个目标开始尝试连接,如果失败则尝试下一个目标,直到成功为止

正则模式,即上面的enable_regexptrue,程序会根据客户端第一个数据包来匹配正则表达式,匹配成功就转发到指定的目标。 为了防止客户端长时间不发第一个数据包,故可以通过上面的规则配置的first_packet_timeout字段来配置超时时间(毫秒)

目标配置有两个字段:1.regexp字段在正则模式才有用,代表正则表达式。2.address字段代表要转发的目标地址和端口,可以是本地的地址,也可以是远程地址

常见协议正则表达式


协议正则表达式
HTTP^(GET|POST|HEAD|DELETE|PUT|CONNECT|OPTIONS|TRACE)
SSH^SSH
HTTPS(SSL)^\x16\x03
RDP^\x03\x00\x00
SOCKS5^\x05
HTTP代理(^CONNECT)|(Proxy-Connection:)


复制到JSON中记得注意特殊符号呀,例如^\x16\x03得改成^\\x16\\x03

演示

这里咱们演示用本地的80端口模拟实战中只有一个端口开放的情况,然后咱们需要使用这个端口进行socks5访问和ssh的复用。

配置规则如下:



{
  "log_level": "debug",
    "socks5_listen": "192.168.68.1:1080",
      "rules": [
          {
           "name": "socks5&ssh",
           "listen": "192.168.68.1:80",      
           "enable_regexp": true,      
           "first_packet_timeout": 5000,      
           "blacklist":{        
           "114.114.114.114":true      
           },      
           "targets": [        
           {          
           "regexp": "^\\x05",          
           "address": "192.168.68.1:1080"        
           },        
           {          
           "regexp": "^SSH",          
           "address": "192.168.68.134:22"        
           }      
   ]    
  }  
 ]
}
图片


socks代理测试

首先开启本地的socks5代理服务,端口为1080,通过配置规则进行端口转发,最后实现用80端口进行访问。


如需开启其他端口,自行修改配置文件中socks5_listen的值即可


图片


ssh代理

这里配置访问本地192.168.68.1:80端口,然后去访问虚拟机192.168.68.134的ssh服务。


图片


鸣谢

本项目在crabkun的switcher项目上进行修改,感谢crabkun的辛苦开源



 https://github.com/crabkun/switcher





推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://www.hqyman.cn/post/11573.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: