今天在访问ChatGPT iOS客户端时,提示我区域非法,查看Surge日志发现如下所示。
根据Surge文档说明,Surge默认情况下会block QUIC链接,但这里却通过DIRECT正常连接,这个现象显然不符合预期,日志透露的信息意味着这个场景可能是因为Surge将四层协议先进行了判断,由于节点不支持udp,因此直接fallback回DIRECT,伪代码如下所示:
if udp && udp_support {
if quic {
fallback http2
}
} else {
fallback direct
}
为了测试,我给节点加上了udp-relay=true,然后发现果然正常了,日志如下所示:
先判断四层再判断七层的逻辑没有问题,但是QUIC是一个特例,尽管QUIC是一个UDP协议,但大部分情况下可以fallback回HTTP/2,从而后续建立TCP链接,因此当节点不支持UDP时,简单的将QUIC fallback回直连应该不是一个好的方案。
希望接下来的版本能够做一下修复,提前block QUIC。