MetaCubeX / mihomo

A simple Python Pydantic model for Honkai: Star Rail parsed data from the Mihomo API.
https://wiki.metacubex.one
MIT License
15.14k stars 2.52k forks source link

有什么服务端+clash.meta组合UDP能通过NatTypeTest的fullcone吗? #56

Closed bash99 closed 2 months ago

bash99 commented 2 years ago

我试了各种都有问题,甚至本机跑一个socks5(xray提供的),直接指定这个socks5代理能通过测试。 但是用clash.meta代理一次就过不去了 对应配置如下:

bash99 commented 2 years ago

自问自答一下 服务器端用了xray; trojan + grpc能跑通,fullcone ss协议不套 obfs-tls 也能跑通 fullcone,不过这个不知道会不会容易封;我用了AEAD算法( xchacha20-ietf-poly1305 ),起码没有秒封。

vless-grpc fullcone一直不行,vless-xtls-rptx也是不行,感觉clash.meta对 vless 相关支持在udp上还有问题。(直接拿xray跑 udp是通的)

MetaCubeX commented 2 years ago

@bash99 这个vless支持还没做fullcone的

lsylsy2 commented 2 years ago

@bash99 这个vless支持还没做fullcone的

未实际测试(我正在给路由器做选型),但按xtls的说法,xray本身是支持vless fullcone的?是他的描述有误,还是clash meta还未做实现?

Skyxim commented 2 years ago

@lsylsy2 xray实现了fullcone,vless无fullcone实现

vj23456 commented 2 years ago

@lsylsy2 只有ss、trojan、socks5是fullcone

lsylsy2 commented 2 years ago

@lsylsy2 xray实现了fullcone,vless无fullcone实现

抱歉有点没看懂……是指“xray的vless实现了fullcone,但clash.meta的vless还未实现此功能”吗?考虑到v2fly已经基本放弃vless协议,这里的vless仅指由xray实现,带有xtls等流控优化的协议

@lsylsy2 只有ss、trojan、socks5是fullcone

按照 https://github.com/XTLS/Xray-core/discussions/237 的说法确实是

完美支持 FullCone 的有:

Shadowsocks 入站、出站
Trojan 入站、出站
Socks 入站、出站

但在 https://github.com/XTLS/Xray-core/discussions/252 中提到

客户端、服务端均为 Xray-core v1.3.0+ 时,VLESS、VMess、Mux 默认均为 FullCone。

至此,Xray-core 实现了全协议、全出入站、全传输方式完美支持 FullCone 🎉

按照我的理解,也就是说当客户端、服务端均为xray的时候,ss/trojan/socks/vless/vmess/mux(这里指啥没有理解,mux不应该是作为某个协议底层的传输方式吗,为啥是单独存在)均可实现fullcone。 结合 @bash99 的测试,clash.meta在部分协议下是支持fullcone的; 所以我目前对 @MetaCubeX 和 @Skyxim 的回复的理解是:

  1. clash.meta的架构能够实现fullcone,并已对某些传输协议实现了fullcone
  2. xray实现的vless(目前使用较广的vless+xtls+fallback等等)实现了fullcone,当使用xray自己的客户端时可以生效
  3. clash.meta尚未对2中提到的这个vless实现fullcone支持。 不知道理解是否正确?
Skyxim commented 2 years ago

@lsylsy2 因为 Xray 是利用 mux + 一个专用的 UDP 代理协议魔改出来的 UDP 的 fullcone 而不是在代理协议原本基础上直接实现。所以叫是 Xray 的 fullcone ,不是 Vless 的 fullcone

lsylsy2 commented 2 years ago

@lsylsy2 因为 Xray 是利用 mux + 一个专用的 UDP 代理协议魔改出来的 UDP 的 fullcone 而不是在代理协议原本基础上直接实现。所以叫是 Xray 的 fullcone ,不是 Vless 的 fullcone

理解了,感谢! 请问有没有哪里记录了现在clash.meta有哪些协议支持了fullcone?如果没有文档的话,能比较方便的在代码里搜索关键词也可以。还是说 @vj23456 提到的ss socks trojan三个就是clash.meta目前支持的所有协议,那我为了方便tls伪装大概会选择trojan了。 我的路由器和服务器全套都是自建的,所以对可以随意选择自己想要的协议,clash的urltest对路由器部署十分方便,但原版(包括premium)的udp支持都比较一般般。最近发现了这个项目,所以在考虑合适的话迁移过来。