This commit is contained in:
arraykeys
2023-02-13 09:24:39 +08:00
parent f7b3a76582
commit de223d666b
4 changed files with 1398 additions and 1282 deletions
+57 -28
View File
@@ -87,6 +87,8 @@ http
比如: --log proxy.log,日志就会输出到proxy.log方便排除问题。
默认会输出info和warn日志,如果只关注warn日志,可以使用`--warn`参数,只输出warn日志。
### 5. 生成加密通讯需要的证书文件
http(s)代理、tcp代理、udp代理、socks5代理、内网穿透等功能和上级通讯的时候,为了安全我们采用TLS加密通讯,当然可以选择不加密通信通讯,本教程所有和上级通讯都采用加密,需要证书文件。
@@ -436,6 +438,8 @@ iptables -t nat -A OUTPUT -p tcp -j PROXY
比如:
`proxy http -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300`
`--dns-address` 支持设置多个dns地址,负载均衡,英文半角逗号分割。比如:--dns-address "1.1.1.1:53,8.8.8.8:53"
### 1.12 自定义加密
proxy的http(s)代理在tcp之上可以通过tls标准加密以及kcp协议加密tcp数据,除此之外还支持在tls和kcp之后进行自定义
@@ -706,12 +710,24 @@ port:代理的端口
### 2.8 限速,限制连接数
参数`--max-conns`可以限制每个端口的最大连接数
比如限制每个端口最多1000个连接数
`proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --max-conns 1000`
参数`--rate-limit`可以限制每个tcp连接的速率。
比如限制每个tcp连接速率为100k/s
`proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --rate-limit 100k`
- **限制连接数**
参数`--max-conns`可以限制每个端口的最大连接数
比如限制每个端口最多1000个连接数:
`proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --max-conns 1000`
- **限制tcp连接速率**
参数`--rate-limit`可以限制每个tcp连接的速率。
比如限制每个tcp连接速率为100k/s:
`proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --rate-limit 100k`
- **限制客户端IP总速率**
参数`--ip-rate`可以IP维度,限制每个客户端IP的总速率。
比如限制每个客户端IP总速率为1M/s:
`proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --ip-rate 1M`
- **限制端口总速率**
参数`--port-rate`可以在`服务IP:端口`维度,限制每个服务端口总速率。
比如限制每个端口总速率为10M/s:
`proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --port-rate 10M`
- **联合限速**
`--rate-limit`和(`--ip-rate`或`--port-rate`)可以同时使用。既限制总速率,也限制单个tcp速率。
### 2.9 压缩传输
@@ -1828,6 +1844,7 @@ proxy的http(s)/socks5/sps代理功能,支持通过API控制用户对代理对
- 动态上级,可以根据用户或者客户端IP,动态的从API获取其上级,支持http(s)/socks5/ss上级。
- 认证每一个连接,无论是否要求客户端认证。
- 缓存认证结果,时间可以设置,减轻API压力。
- 用户维度、客户端IP维度、端口维度的总限速。
#### 具体使用
@@ -1888,29 +1905,41 @@ if($ok){
header("ipqps:2");
header("upstream:http://127.0.0.1:3500?parent-type=tcp");
header("outgoing:1.1.1.1");
header("userTotalRate:1024000");
//header("ipTotalRate:10240");
//header("portTotalRate:10240");
header("HTTP/1.1 204 No Content");
}
```
#### HTTP HEADER 头部字段解释
`userconns`:用户的最大连接数,不限制为0或者不设置这个头部。
`ipconns`:IP的最大连接数,不限制为0或者不设置这个头部。
`userrate`:用户的单个TCP连接速率限制,单位:字节/秒,不限制为0或者不设置这个头部。
`iprate`:IP的单个TCP连接速率限制,单位:字节/秒,不限制为0或者不设置这个头部。
`userqps`:用户每秒可以建立的最大连接数,不限制为0或者不设置这个头部。
`ipqps`:IP每秒可以建立的最大连接数,不限制为0或者不设置这个头部。
`upstream`:使用的上级,没有为空,或者不设置这个头部。
`outgoing`: 使用的出口IP,这个设置,只有在upstream为空的的时候才有效,这里设置的IP必须是proxy所在机器具有的IP。
- `userconns`:用户的最大连接数,不限制为0或者不设置这个头部。
- `ipconns`:IP的最大连接数,不限制为0或者不设置这个头部。
- `userrate`:用户的单个TCP连接速率限制,单位:字节/秒,不限制为0或者不设置这个头部。
- `iprate`:IP的单个TCP连接速率限制,单位:字节/秒,不限制为0或者不设置这个头部。
- `userqps`:用户每秒可以建立的最大连接数,不限制为0或者不设置这个头部。
- `ipqps`:IP每秒可以建立的最大连接数,不限制为0或者不设置这个头部。
- `upstream`:使用的上级,没有为空,或者不设置这个头部。
- `outgoing`: 使用的出口IP,这个设置,只有在upstream为空的的时候才有效,这里设置的IP必须是proxy所在机器具有的IP。
- `userTotalRate`:用户维度,限制用户的总带宽速度(byte/s),单位是字节byte,没有留空,或者不设置这个头部。
- `ipTotalRate`:客户端IP维度,限制客户端IP的总带宽速度(byte/s),单位是字节byte,没有留空,或者不设置这个头部。
- `portTotalRate`:带宽维度,限制一个带宽总带宽速度(byte/s),单位是字节byte,没有留空,或者不设置这个头部。
#### 限速详细说明
1. 单个tcp限速(`userrate`、`iprate`)和总带宽速度(`userTotalRate`、`ipTotalRate`、`portTotalRate`)可以同时设置,
比如:设置用户总带宽速度是1M/s(`userTotalRate`设置1024000),还可以同时设置单个tcp速度是100K/s(`userrate`设置102400
2. 如果同时设置了`userTotalRate`、`ipTotalRate` 、`portTotalRate`,有效优先级是:`userTotalRate` -> `ipTotalRate` -> `portTotalRate`
3. 如果同时设置了`userTotalRate`、`portTotalRate`,而且设置了`--auth-nouser`,那么所有没有发用户名的客户端会被认为是`同一个空用户名用户`,共用同一个限制。
#### 提示
1.默认情况下,设置了`--auth-url`是强制要求客户端提供用户名和密码的;如果不需要强制要求客户端提供用户名密码,并认证,可以加上`--auth-nouser`,每次访问仍然会访问认证地址`--auth-url`
进行认证,当客户端没有发生认证信息当时候,php接口里面接收的$user认证用户名和$pass认证密码都为空。
2.连接数限制优先级:用户认证文件连接数限制-》文件ip.limit连接数限制-》API用户连接数限制-》API的IP连接数限制-》命令行全局连接数限制。
3.速率限制优先级:用户认证文件速率限制-》文件ip.limit速率限制-》API用户速率限制-》API的IP速率限制-》命令行全局速率限制。
3.上级获取优先级:用户认证文件的upstream-》文件ip.limit的upstream-》API的upstream-》命令行指定的上级。
4.`--auth-cache`认证缓存,对认证结果缓存一定时间,提升性能,降低认证接口压力,--auth-cache 单位秒,默认0, 设置0是关闭缓存。
1. 默认情况下,设置了`--auth-url`是强制要求客户端提供用户名和密码的;如果不需要强制要求客户端提供用户名密码,并认证,可以加上`--auth-nouser`,每次访问仍然会访问认证地址`--auth-url`
进行认证,当客户端没有发生认证信息当时候,php接口里面接收的$user认证用户名和$pass认证密码都为空。
2. 连接数限制优先级:用户认证文件连接数限制-》文件ip.limit连接数限制-》API用户连接数限制-》API的IP连接数限制-》命令行全局连接数限制。
3. 速率限制优先级:用户认证文件速率限制-》文件ip.limit速率限制-》API用户速率限制-》API的IP速率限制-》命令行全局速率限制。
4. 上级获取优先级:用户认证文件的upstream-》文件ip.limit的upstream-》API的upstream-》命令行指定的上级。
5. `--auth-cache`认证缓存,对认证结果缓存一定时间,提升性能,降低认证接口压力,--auth-cache 单位秒,默认0, 设置0是关闭缓存。
#### upstream详细说明
@@ -2002,9 +2031,9 @@ conns格式:`[{"id":"ab7bf1f10501d6f7","client":"127.0.0.1:62112","server":"12
`ip`:当前连接到proxy的客户端ip地址,多个使用英文逗号分割,没有留空,比如:1.1.1.1,2.2.2.2
`conns`:是一个数组,元素是一个连接的id,这个id是上面`控制接口请求说明`里面的conns里面的连接对象的id字段。
`conns`:是一个数组,元素是一个连接的id,这个id是上面`控制接口请求说明`里面的conns里面的连接对象的id字段。
说明:
说明:
- 返回的用户和ip已经建立的连接会被proxy断开。
- 返回的conns匹配的连接会被proxy断开。
- 返回的数据,如果同时包含:user或者ip,和conns,那么user或者ip会被忽略,只会断开conns匹配的连接。
@@ -2192,7 +2221,7 @@ proxy rhttp -c rhttp.toml
为了方便说明,假设背景情况如下:
1、有一批vps,它们每个都有一个主网卡配置了固定的IP:x.x.x.x,然后vps可以pppoe拨号,拨号建立的网卡名称前缀都是`pppoe_`
1、有一批vps,它们每个都有一个主网卡配置了固定的IP:x.x.x.x,然后vps可以pppoe拨号,拨号建立的网卡名称前缀都是`pppoe_`
2、有一个VPS作为代理入口,它的ip是2.2.2.2。
@@ -2229,7 +2258,7 @@ Luminati提供了高质量稳定的住宅IP可以做很多事情,但是价格
2. 7777端口具有认证功能。
操作步骤:
1. 1.1.1.1的VPS执行:`proxy sps -p :7777 --disable-socks --disable-ss -a user1:pass1 -a user2:pass2 -P http://username:[email protected]:8888`
1. 1.1.1.1的VPS执行:`proxy sps -p :7777 --disable-socks --disable-ss -a user1:pass1 -a user2:pass2 -P http://username:[email protected]:8888`
2. 命令中`-a`是设置`代理认证用户`,多个用户,可以重复`-a`参数,格式是:`用户名:密码`
提醒,此种做法,有可能带来Luminati限制你的账号风险,VPS的IP也有可能被可能Luminati屏蔽导致转换不能工作,风险自负。
@@ -2245,14 +2274,14 @@ Luminati提供了高质量稳定的住宅IP可以做很多事情,但是价格
为了方便说明,假设背景情况如下:
1. 有一个http认证代理,地址是:2.2.2.2:8888,认证账号:abc,密码是:123。
2. 有一个自己的VPSIP是1.1.1.1。
2. 有一个自己的VPSIP是1.1.1.1。
实现的效果:
1. 访问1.1.1.1的7777端口,无需认证,会转给2.2.2.2:8888代理。
操作步骤:
1. 1.1.1.1的VPS执行:`proxy sps -p :7777 -P http://abc:[email protected]:8888`
1. 1.1.1.1的VPS执行:`proxy sps -p :7777 -P http://abc:[email protected]:8888`
## 18.典型用法-镜像网站
@@ -2275,9 +2304,9 @@ target="https://github.com/"
upstream="github.com:443"
timeout=5000
```
1. 在1.1.1.1的VPS执行:`proxy rhttp -c github.toml`
1. 在1.1.1.1的VPS执行:`proxy rhttp -c github.toml`
2. 访问 `http://1.1.1.1:7777/snail007/` ,如果一切正常,就把命令加上后台运行参数即可。
3. 命令改成:`proxy rhttp -c github.toml --daemon --log /tmp/github.log`
3. 命令改成:`proxy rhttp -c github.toml --daemon --log /tmp/github.log`
4. 此功能需要`proxy`版本大于等于`v11.2`
如果是想使用域名比如a.com,那么: