XTLS / Xray-core

Xray, Penetrates Everything. Also the best v2ray-core, with XTLS support. Fully compatible configuration.
https://t.me/projectXray
Mozilla Public License 2.0
25.86k stars 3.98k forks source link

透明代理的时候,http代理无法通过远端发出 #3989

Closed cod1ingcoding closed 3 weeks ago

cod1ingcoding commented 3 weeks ago

完整性要求

描述

最新版本的xray,在透明代理下的主机,其他一切正常,

但是如果用类似下面的命令,over透明代理,通过x.x.x.x这个http代理服务器访问https://yy.com

curl -x http://x.x.x.x:8080 https://yy.com

http payload是

CONNECT yy.com:443 HTTP/1.1
Host: yy.com:443

正常情况下: xray所在的代理服务器应该是把tcp请求转发到x.x.x.x的8080端口,并转发http payload,

实际情况: 抓包发现,xray所在的服务器,这个tcp直接被转发到了 z.z.z.z:8080(z.z.z.z是yy.com域名解析的结果),服务器日志则是看着向 z.z.z.z:8080发起了http(s)请求。

重现方式

随便找一个透明代理下的主机都可以复现,我测试了手里很多台不同版本xray-core透明代理下的机器。尝试过关闭客户端的嗅探,也是一样的结果。

Fangliding commented 3 weeks ago

老生常谈的问题 这是http代理自己的锅 发出的htttp请求host就是 yy.com 这是完全合乎http语义的 被xray嗅探到然后重置到yy.com了 要不用socks5要不就开routeonly

cod1ingcoding commented 3 weeks ago

老生常谈的问题 这是http代理自己的锅 发出的htttp请求host就是 yy.com 这是完全合乎http语义的 被xray嗅探到然后重置到yy.com了 要不用socks5要不就开routeonly

但是tcp网络层面应该是先连到x.x.x.x:8080这个http代理远端,应用层的payload会导致网络层的行为发生变化吗?

因为我测试了trojan-gfw的透明模式是没有问题的。

我可不可理解,xray是嗅探到应用层http payload的Host参数以后,不管http method是什么,都直接会把ip修改成host的设置?如果是这样,那么如下参数设置是否能关闭这种嗅探?我测试是不能

"sniffing": {
                "enabled": false, // 改成false
                "destOverride": [
                    "http",
                    "tls"
                ]
            },
Fangliding commented 3 weeks ago

服务端有嗅探 客户端有嗅探 哪边有覆盖都会导致这种问题 具体发生在哪你得检查日志 issue只处理行为不符合预期的bug

cod1ingcoding commented 3 weeks ago

服务端有嗅探 客户端有嗅探 哪边有覆盖都会导致这种问题 具体发生在哪你得检查日志 issue只处理行为不符合预期的bug

服务器、客户端都关闭嗅探还是不行,还是会定位到http协议里的Host目标+http代理服务器的端口。

Fangliding commented 3 weeks ago

我不会算命 你一张嘴说有问题我也没办法不是 如果你觉得这是bug 我模板里要求的四个空是一个没有的