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的根本原因