0.2.0功能:
1. 实现内存缓冲区, 防止内存增长过多
2. 实现流量控制, 可限制某一请求占用过多流量
已实现初步的反向代理支持,包含主动式健康检查,四层代理,七层代理,及配置的热加载等功能
wmproxy 将用 Rust 实现 http/https 代理,socks5 代理,反向代理,静态文件服务器,后续将实现 websocket 代理,内外网穿透等,会将实现过程分享出来,感兴趣的可以一起造个轮子
wmproxy
Rust
http/https
socks5
websocket
cargo install wmproxy
OR
git clone https://github.com/tickbh/wmproxy cd wmproxy cargo install --path .
默认端口为 8090 端口,默认监听地址为 127.0.0.1
# 直接通用默认参数 wmproxy # 设置账号密码 wmproxy -b 0.0.0.0:8090 --user wmproxy --pass wmproxy # 其它指令 wmproxy --help #配置文件版启动 wmproxy -c config/client.yaml
启动二级代理
wmproxy -b 127.0.0.1 -p 8090 -S 127.0.0.1:8091 --ts
或者
wmproxy -c config/client.yaml
配置文件如下:
proxy: # 连接服务端地址 server: 127.0.0.1:8091 # 连接服务端是否加密 ts: true # 内网映射配置的数组 mappings: #将localhost的域名转发到本地的127.0.0.1:8080 - name: web mode: http local_addr: 127.0.0.1:8080 domain: localhost headers: - [proxy, +, x-forward-for, $client_ip] - [proxy, +, from, $url] - [+, key, value] - [-, etag] - [+, last-modified, aaaa] #将tcp的流量无条件转到127.0.0.1:8080 - name: tcp mode: tcp local_addr: 127.0.0.1:8080 domain:
因为纯转发,所以在当前节点设置账号密码没有意义 -S 表示连接到的二级代理地址,有该参数则表示是中转代理,否则是末端代理。--ts 表示连接父级代理的时候需要用加密的方式链接
-S
--ts
wmproxy --user proxy --pass proxy -b 0.0.0.0 -p 8091 --tc
wmproxy -c config/server.yaml
proxy: #绑定的ip地址 bind_addr: 127.0.0.1:8091 #代理支持的功能,1为http,2为https,4为socks5 flag: 7 #内网映射http绑定地址 map_http_bind: 127.0.0.1:8001 #内网映射tcp绑定地址 map_tcp_bind: 127.0.0.1:8002 #内网映射https绑定地址 map_https_bind: 127.0.0.1:8003 #内网映射的公钥证书,为空则是默认证书 map_cert: #内网映射的私钥证书,为空则是默认证书 map_key: #接收客户端是为是加密客户端 tc: true #当前服务模式,server为服务端,client为客户端 mode: server
--tc 表示接收子级代理的时候需要用加密的方式链接,可以 --cert 指定证书的公钥,--key 指定证书的私钥,--domain 指定证书的域名,如果不指定,则默认用自带的证书参数
--tc
--cert
--key
--domain
至此通过代理访问的,我们已经没有办法得到真正的请求地址,只能得到代理发起的请求
目前提供了两种认证双式,two_way_tls 开启客户端的证书认证信息,另一种服务端配置了 username 和 password 即需要客户端配置相同的用户密码才能启用认证信息,两种方式可叠加使用或者单独使用。 配置添加如下:
two_way_tls
username
password
proxy: two_way_tls: true username: wmproxy password: wmproxy
SOCKS5
NOAUTH
USERPASS
CONNECT
UDP ASSOCIATE
评论删除后,数据将无法恢复
wmproxy 0.2.0 发布,支持反向代理 / 正向代理 / 内网穿透等功能,
0.2.0功能:
1. 实现内存缓冲区, 防止内存增长过多
2. 实现流量控制, 可限制某一请求占用过多流量
已实现初步的反向代理支持,包含主动式健康检查,四层代理,七层代理,及配置的热加载等功能
wmproxy
将用Rust
实现http/https
代理,socks5
代理,反向代理,静态文件服务器,后续将实现websocket
代理,内外网穿透等,会将实现过程分享出来,感兴趣的可以一起造个轮子📦 安装 & 🏃 使用
安装
cargo install wmproxy
OR
使用
默认端口为 8090 端口,默认监听地址为 127.0.0.1
启动二级代理
wmproxy -b 127.0.0.1 -p 8090 -S 127.0.0.1:8091 --ts
或者
wmproxy -c config/client.yaml
配置文件如下:
因为纯转发,所以在当前节点设置账号密码没有意义
-S
表示连接到的二级代理地址,有该参数则表示是中转代理,否则是末端代理。--ts
表示连接父级代理的时候需要用加密的方式链接wmproxy --user proxy --pass proxy -b 0.0.0.0 -p 8091 --tc
或者
wmproxy -c config/server.yaml
配置文件如下:
--tc
表示接收子级代理的时候需要用加密的方式链接,可以--cert
指定证书的公钥,--key
指定证书的私钥,--domain
指定证书的域名,如果不指定,则默认用自带的证书参数代理间的认证
🚥 路线图
socks5
SOCKS5
验证方式NOAUTH
USERPASS
SOCKS5
CommandsCONNECT
UDP ASSOCIATE
http/https
内网穿透
反向代理
支持功能