@
szdosar 非常感谢老哥的耐心回复,解释的这么详细真的太感动了,我去试试看这个方案行不行。不过作为一个喜欢折腾的发烧友,我还是很好奇为什么移动客户端会强行把所有的 SNI 变成 IP 地址的形式而不是保留域名。我用流程解释一下这个流程吧,希望您能给点建议:
Shadowsocks 等 Android 代理客户端 ---- (使用软件内设置的远程 DNS 查询
google.com 的 IP) --->>1.1.1.1 DNS --->>(拿到了
google.com 的 IP !而且 IP 是 1.2.3.4 ,拿着这个 IP 去 Clash 的 Socks5 端口请求代理) --->> Clash 的 Socks5 端口:(收到了你的代理请求,但是 1.2.3.4 是啥东西,我没见过啊,白名单里面只有
google.com 可以通过,我只认域名不认 IP ,不知道你这 1.2.3.4 不知道是去往哪个域名的,直接 REJECT !) ---->> 浏览器提示:ERR_CONNECTION_CLOSED 。
事情大概就是这样,这些代理软件把本该是带着域名的请求解析成了 IP 发给了 Clash 的 Socks5 代理端口,结果 Clash 认不出来就全部拒绝了连接,所以不知道有没有办法让这些软件带着域名发起连接请求?我测试了一下 v2rayNG 的客户端,里面有个功能是叫做“启用流量探测”的功能,可以从流量中探测域名,开启这个功能后所有的请求都是带着域名发向 Clash 的,这时候分流规则就正常运行了,只是像 nekobox, shadowsocks,shadowrocket 客户端没有这个选项就非常麻烦