wmproxy
wmproxy
已用Rust
实现http/https
代理, socks5
代理, 反向代理, 负载均衡, 静态文件服务器,websocket
代理,四层TCP/UDP转发,内网穿透等
📦 安装 & 🏃 使用
安装
OR
docker pull dreamwhat/wmproxy
docker run -p 8090:8090 --name proxy_bash dreamwhat/wmproxy /bin/./wmproxy proxy -b 0.0.0.0:8090
使用
默认端口为8090端口,默认监听地址为127.0.0.1
# 直接通用默认参数
# 设置账号密码
# 其它指令
#配置文件版启动
启动二级代理
- 在本地启动代理
或者
配置文件如下:
[]
# 连接服务端地址
#server = "127.0.0.1:8091"
= "0.0.0.0:8090"
= "http https socks5"
# 连接服务端是否加密
= true
= true
# username = "wmproxy"
# password = "wmproxy"
# 内网映射配置的数组
#将localhost的域名转发到本地的127.0.0.1:8080
[[]]
= "web"
= "http"
= "127.0.0.1:8080"
= "localhost"
= [
"proxy x-forward-for {client_ip}",
"proxy + from $url",
"+ last-modified 'from proxy'",
"- etag",
]
#将tcp的流量无条件转到127.0.0.1:8080
[[]]
= "tcp"
= "tcp"
= "127.0.0.1:8080"
= ""
因为纯转发,所以在当前节点设置账号密码没有意义-S
表示连接到的二级代理地址,**有该参数则表示是中转代理,否则是末端代理。**--ts
表示连接父级代理的时候需要用加密的方式链接
- 在远程启动代理
或者
配置文件如下:
[]
#绑定的ip地址
= "127.0.0.1:8091"
#代理支持的功能,1为http,2为https,4为socks5
# flag = "7"
= "wmproxy"
= "wmproxy"
#内网映射http绑定地址
= "127.0.0.1:8001"
#内网映射tcp绑定地址
= "127.0.0.1:8002"
#内网映射https绑定地址
= "127.0.0.1:8003"
#内网映射的公钥证书,为空则是默认证书
# map_cert =
#内网映射的私钥证书,为空则是默认证书
# map_key =
# 双向认证
= true
#接收客户端是为是加密客户端
= true
#当前服务模式,server为服务端,client为客户端
= "server"
--tc
表示接收子级代理的时候需要用加密的方式链接,可以--cert
指定证书的公钥,--key
指定证书的私钥,--domain
指定证书的域名,如果不指定,则默认用自带的证书参数
至此通过代理访问的,我们已经没有办法得到真正的请求地址,只能得到代理发起的请求
代理间的认证
目前提供了两种认证双式,
two_way_tls
开启客户端的证书认证信息, 另一种服务端配置了username
和password
即需要客户端配置相同的用户密码才能启用认证信息, 两种方式可叠加使用或者单独使用。 配置添加如下:
proxy:
two_way_tls: true
username: wmproxy
password: wmproxy
🚥 路线图
socks5
- IPV6 支持
-
SOCKS5
验证方式-
NOAUTH
-
USERPASS
-
-
SOCKS5
Commands-
CONNECT
-
UDP ASSOCIATE
-
http/https
- IPV6 支持
内网穿透
- Http 支持
- Https 支持
- Tcp 支持
反向代理
- 静态文件服务器
- 被动健康检查
- 主动健康检查
- 配置热加载
- 负载均衡
- 四层TCP负载
- 四层UDP负载
- 流量控制
- websocket转发
基础能力
- 日志
扩展能力
- 请求限速(limit_req)
- 修改 HTTP 请求 Header
- 支持 HTTP2 的内网穿透
- 控制微端
- try_paths
- tcp转websocket
- websocket转tcp