介绍
Switcher:一个多功能的端口转发工具,支持转发本地或远程地址的端口,支持正则表达式转发(实现端口复用)。
简单修改了一下,实现了已存在端口的监听(原只支持新建监听端口)
新增自动创建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" } ] } ] }
字段解释
主结构
log_level代表日志等级,有info/debug/error可以选
rules是规则配置数组,看下面
规则配置
name是这个规则的名字,为了在日志中区分不同规则,建议取不同的名字
listen是这个规则监听的地址,0.0.0.0:1234代表监听所有网卡的1234端口
enable_regexp为是否开启正则表达式模式,后面有解释
first_packet_timeout为等待客户端第一个数据包的超时时间(毫秒),仅开启正则表达式模式后有效,后面有解释
blacklist为黑名单IP,在黑名单里面的IP且为true的时候则直接断开链接。如不需要使用黑名单可留null
targets为目标配置数组,看下面
目标配置
目标配置有两种模式:普通模式和正则模式。
上面规则配置的enable_regexp为true或false决定了这个目标配置是普通模式还是正则模式。
普通模式,即上面的enable_regexp为false,当存在多个目标的时候,程序会从第一个目标开始尝试连接,如果失败则尝试下一个目标,直到成功为止
正则模式,即上面的enable_regexp为true,程序会根据客户端第一个数据包来匹配正则表达式,匹配成功就转发到指定的目标。 为了防止客户端长时间不发第一个数据包,故可以通过上面的规则配置的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
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://www.hqyman.cn/post/11573.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~