v2ray错误之close 1000 (normal)以及域名解析问题
侧边栏壁纸
博主昵称
yuc

  • 累计撰写 291 篇文章
  • 累计收到 0 条评论

v2ray错误之close 1000 (normal)以及域名解析问题

yuc
yuc
2024-03-12 / 最后修改: 2024-03-13 00:52 / 0 评论 / 8 阅读 / 正在检测是否收录...
异常错误

在宽带更新后的一段时间内,一直都没有访问 NAS 的 v2ray,不确定好坏,今天终于访问测试了下,避免 emby 无法刮削电影元数据。但通过 curl 在本地测试发现确实无法访问,报错如下:

yuc@ootoo:/volume1/SSD/v2ray$ curl -v --ipv4 --tlsv1.2 --insecure --socks5 127.0.0.1:1086 https://www.google.com
* TLSv1.3 (OUT), TLS handshake, Client hello (1):

* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to google.com:443 
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to google.com:443

虽然没有使用图形化测试浏览器能否访问,但是这个报错基本上可以确定是不行的,于是分别上本地代理和服务器检查了下日志.

本地日志
2024/03/12 07:07:35 [Info] [1293472766] proxy/socks: TCP Connect request to tcp:[2a03:2880:f12d:83:face:b00c:0:25de]:443
2024/03/12 07:07:35 [Info] [1293472766] app/dispatcher: taking detour [68] for [tcp:[2a03:2880:f12d:83:face:b00c:0:25de]:443]
2024/03/12 07:07:35 [Info] [1293472766] transport/internet/websocket: creating connection to tcp:43.154.178.97:443
2024/03/12 07:07:35 [Info] [1293472766] transport/internet: dialing to tcp:43.154.178.97:443 via 0.0.0.0
2024/03/12 07:07:36 [Info] [1293472766] proxy/vmess/outbound: tunneling request to tcp:[2a03:2880:f12d:83:face:b00c:0:25de]:443 via 43.154.178.97:443
2024/03/12 07:07:52 [Info] [1293472766] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: connection ends > websocket: close 1000 (normal)
2024/03/12 07:07:52 [Info] [1293472766] app/proxyman/inbound: connection ends > proxy/socks: connection ends > proxy/socks: failed to transport all TCP response > io: read/write on closed pipe
服务端日志
2024/03/12 13:10:18 [Info] [659351786] app/proxyman/inbound: connection ends > proxy/vmess/inbound: connection ends > proxy/vmess/inbound: failed to transfer request > websocket: close 1006
 (abnormal closure): unexpected EOF

这里因为测试比较多,都基本上是这个错误,只是时间复制的不同。从本地日志和服务端日志基本上没有看到明显的错误,但日志内可以看到时区显示不同,怀疑是时区问题,不过在设置时区后仍然相同错误没有解决

苦闷的排查

接下来分别测试了 baidu.com , facebook.com , x.com , google.com 发现只有 baidu 和 x 是正常的,另外两个存在一样的错误,通过本地日志观察到,当报错的时候整个流程使用的 ipv6 地址,而另外两个则是 ipv4 ,目前基本上可以确定是 ipv6 有影响。结合升级带宽以及设备支持 ipv6 这也是说的通的

那么接下来最重要的是如何解决这个问题。接下来检索了非常多的文档,关于 v2ray 如何关闭 ipv6 的解析,包括在配置中使用 "domainStrategy": "UseIPv4" 以及在 代理端和服务端 使用 net.ipv6.conf.all.disable_ipv6 = 1 禁用 ipv6,但是发现毫无效果,本地日志仍然使用 ipv6

于是我尝试在服务端使用ipv6地址测试能否访问,结果不行,如下:

[root@VM-8-11-centos v2ray]# curl google.com -6
curl: (7) Failed to connect to 2404:6800:4005:808::200e: Network is unreachable

那么基本上可以确定整个流程最终无法访问的现象,代理端拿到了 ipv6 地址(通过解析),然后请求给 服务端,服务端通过此地址去访问,但是服务端本身不支持ipv6,导致根本无法访问,最终出现这个错误

根据现状,解析到了 ipv6 地址,但是服务端不支持,所以双栈同时运行的想法是行不通的,那就只能想办法关闭 解析到 ipv6

last

最后把以前部署过正常的配置文件拿过来使用。问题比较奇怪暂时还没有理解 v2ray 的 dns 是如何解析到 ipv6 地址的。后续再研究新旧配置的区别吧

0

评论

博主关闭了当前页面的评论