Skip to content

Commit afccf2a

Browse files
committed
add pendingIpv6
1 parent 4c4fcc1 commit afccf2a

File tree

2 files changed

+89
-0
lines changed

2 files changed

+89
-0
lines changed

source/_posts/trueblog/pendingIpv6.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
---
2+
title: 没有应答的IPv6长连接
3+
date: 2025/02/15 23:08:00
4+
updated: 2025/02/16 01:10:00
5+
tags:
6+
- non-ctf
7+
excerpt: >-
8+
开启tproxy后,直连的网站偶尔要等待1分钟才能建立连接,否则就是响应超时,反倒是代理一直都能直接连接。
9+
然而,关闭tproxy后,反而一点问题都没有了,直连几乎没有延迟。在加入了archlinuxcn群组后,
10+
我和群友一起排除干扰项,排除了*ray、dns后,真正的根源是...
11+
---
12+
13+
到了家之后,我发现代理的tproxy功能很难用,总是导致国内的网站访问起来非常慢,
14+
也就是说,直连的速度比代理的还慢,甚至偶尔还会发生断连的情况,长达一分钟都显示无响应,
15+
然而,一旦关闭代理就会恢复正常。这种直连与代理的倒挂,简直就是倒反天罡。
16+
恰逢我加入了archlinuxcn群组,在群里交流后,与群友一同揭开了国内IPv6糟糕的现状...
17+
18+
## DNS: Pass
19+
20+
群友首先怀疑的是DNS解析。但是我使用`dog`来尝试解析后,发现解析的速度非常快,
21+
不超过200ms。无论我怎么测试,都没有变化。我也尝试还原代理中对于DNS的解析规则,
22+
同样无济于事。
23+
24+
## 代理: Pass
25+
26+
由于开了tproxy才会导致这样的症状,那么下一个要排查的就是代理了。群友很热心地表示可以帮忙看
27+
v2ray的配置并提示记得脱敏, ~~但是我找错路径了,一开始没找到v2raya的v2ray配置,
28+
结果传的是默认的空配置~~。群友并没有回复我,于是我尝试把系统代理设置设为无代理
29+
(KDE),看起来好像国内网站在浏览器中可以正常访问了。于是我尝试更新系统,
30+
熟悉的问题又出现了:国内的镜像在连接建立后10s内无响应。当我查看日志时,
31+
写得非常清楚,访问ipv4地址,`[direct]`。又有群友说可以`curl -vI`
32+
来进一步测试,我尝试`curl -vI https://mirrors.ustc.edu.cn`结果就是有时不到
33+
1s就完成了请求,有时则是等了几十秒却无响应。群友让我加上时间戳再发一次log,
34+
我尝试了http和https,都有被卡住的时候。然而从log里仍然看不出有什么问题。
35+
36+
## 伏笔:用不了的ipv6
37+
38+
曾有好友尝试用DeepSeek搭建了网站,并架设在自己家里,通过ipv6向互联网暴露服务。
39+
我尝试用手机浏览器直接访问,然而无论是使用移动网络还是Wi-Fi,都无法连接上。
40+
41+
除此之外,我家的网络结构也比较出人意料。一般人家入户都是光纤,由光猫解调后插在路由器
42+
WAN口上。然而我家买的电信宽带,直接入户网线插到路由器LAN口上,没有认证,
43+
唯一的安全措施是外面的路由器是锁在柜子里的。
44+
45+
## 只有地址的ipv6
46+
47+
回归主线,群友让我`strace -p $(pgrep v2ray)`并把log再发一份,这次她找到了共同点:
48+
所有的失败的请求都是ipv6请求,ipv4请求都是正常的。更令她疑惑的是我的出站ipv6
49+
地址可以正确定位到浙江电信,而不是本地ipv6地址,这意味着上游路由器确实给我分配了
50+
ipv6地址。一番尝试后,我俩发现 **这个地址既不能发送请求,也不能接受请求,
51+
只是一味地挂起**,直到超时,连接被关断。不能用的ipv6又有什么用呢?
52+
合理推测是外面的路由器太老,因此功能是残废的,这时候大概只能打运营商电话投诉了。
53+
54+
这时候也就不难理解为什么迟迟无法访问一些网站了,由于流量被卡在透明代理上,
55+
而linux又是优先选择ipv6的,对于代理来说,ipv6解析成功了,连接建立了,
56+
既没有应答,也没有强制关闭,继续等下去自然是合理的,对于代理来说,
57+
它只是认为应答比较“慢”而已。
58+
59+
{% notel purple fa-check 最后的解决方案 %}
60+
首先我把家里路由器的ipv6功能关闭了,然后把系统设置成了ipv4优先,
61+
就这样用到现在,没出过什么连接长时间无法建立的情况。
62+
63+
```ini /etc/gai.conf
64+
precedence ::ffff:0:0/96 100
65+
```
66+
67+
倒是没必要完全禁止ipv6,万一哪天真需要呢。
68+
{% endnotel %}
69+
70+
只能说在国内,宽带方面的IPv6的部署情况实在不容乐观。移动网络IPv6倒是相当普及了,
71+
可是面对宽带用户的老设备,运营商都抱着“没人投诉就不用管”的心态。
72+
73+
<img src="/assets/trueblog/vv.png" height="30%" width="30%">
74+
<p align="center"><strike><em>最近看张维为的视频有点上头</em></strike></p>
75+
76+
## 后日谈
77+
78+
由于我的机场的`vmess+ws`的机器有`alterId`,因此我一直使用v2fly核心,
79+
而没有切换到xray核心。自从edge更新了13x版本后,它在使用QUIC
80+
协议访问网站时会导致v2fly核心在[嗅探时出bug](https://github.com/v2fly/v2ray-core/issues/3303)
81+
换用xray后没有问题。(由于xray不支持`alterId != 0`,因此我只能使用SS协议)
82+
83+
{% note green fa-code-pull-request %}
84+
截至2月15日,这个问题已有PR修复错误,等待Release即可。
85+
{% endnote %}
86+
87+
## 参考
88+
89+
[TUN模式下出现panic: runtime error: slice bounds out of range](https://github.com/v2fly/v2ray-core/issues/3303)

source/assets/trueblog/vv.png

119 KB
Loading

0 commit comments

Comments
 (0)