XHTTP的上下行分离,原理上是建立了两条链路,利用其中一条进行上行数据传输,另外一条进行下行数据传输,因而需要在客户端进行第二条链路,也即下行链路的设置。想使用上下行分离,前提是服务端至少有一个传输层使用xhttp的inbound(以下简称为主inbound),另外一个inbound要么使用和主inbound同样的认证信息、协议,要么fallback到主inbound中,当然也可以只有一个主inbound,通过不同ip进行连接,方法很多,就像作者说的,玩的有多花,全看脑洞有多大。

测试完两个inbound均可以正常连接后,在拟作为上行链路的客户端配置中的XHTTP Extra字段添加downloadSettings配置信息即可,以下分别是下行链路使用xhttp+tls和下行链路使用tcp+reality的情况下所需要的配置

XHTTP+TLS下行链路配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"downloadSettings": {
"address": "自己填",
"port": 443,
"network": "xhttp",
"xhttpSettings": {
"path": "/自己填",
"mode": "auto"
},
"security": "tls",
"tlsSettings": {
"serverName": "自己填",
"allowInsecure": false
}
}
}

TCP+Reality下行链路配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"downloadSettings": {
"address": "自己填",
"port": 443,
"network": "xhttp",
"xhttpSettings": {
"path": "/自己填",
"mode": "auto"
},
"security": "reality",
"realitySettings": {
"serverName": "自己填",
"fingerprint": "chrome",
"show": false,
"publicKey": "自己填",
"shortId": "自己填",
"spiderX": "/"
}
}
}

可以看到两个配置都是不含ID信息的,这是因为下行链路发送的ID信息就是上行链路的ID信息,这也是我之前说的要么和主inbound认证信息相同,要么fallback到主inbound的根本原因