2dust / v2rayN

A GUI client for Windows and Linux, support Xray core and v2fly core and others
https://1.2345345.xyz
GNU General Public License v3.0
69.69k stars 11.53k forks source link

[Bug]: 关于tun模式下tcp协议的VMess无法使用的问题 #4721

Closed villager10115 closed 8 months ago

villager10115 commented 9 months ago

预期情况

换了一台电脑。在旧电脑上TCP协议节点可以正常使用tun模式。

实际情况

在新电脑下 {版本 Windows 11 家庭中文版 版本 23H2 安装日期 ‎2024/‎02/‎14 操作系统版本 22631.2428 体验 Windows Feature Experience Pack 1000.22674.1000.0} 无法正常使用Tun,只有WS协议的节点能开启Tun但无法玩游戏,锁区游戏会显示国码错误 image

复现方法

管理员启动V2rayN,逐步更新各核心和GEO还有V2rayN。 选择节点。 WS协议下TUN有效 TCP协议下TUN后延迟为-1且Sing_Box无法连接网络。

日志信息

[VMess] 日本 04 | tcp(2d737cc6-e491-1d04-5354-5f35a13734b9***moe:80) 启动服务(2024/02/16 10:02:00)... 2024/02/16 10:02:01 系统代理设置改变ForcedChange +0800 2024-02-16 10:02:11 ERROR dns: exchange failed for gateway.discord.gg. IN A: context deadline exceeded +0800 2024-02-16 10:02:11 ERROR dns: exchange failed for gateway.discord.gg. IN A: context canceled +0800 2024-02-16 10:02:11 ERROR dns: exchange failed for gateway.discord.gg. IN A: write tcp 192.168.0.106:57884->223.111.150.103:80: use of closed network connection +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for www.msftconnecttest.com. IN A: context deadline exceeded +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for mtalk.google.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for www.msftconnecttest.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for mtalk.google.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for mtalk.google.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for geo.prod.do.dsp.mp.microsoft.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for alive.github.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for www.msftconnecttest.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for mtalk.google.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for www.msftconnecttest.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for www.google.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for mtalk.google.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for www.google.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for www.google.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for geo.prod.do.dsp.mp.microsoft.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for mtalk.google.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for gateway.discord.gg. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for geo.prod.do.dsp.mp.microsoft.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for www.msftconnecttest.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for geo.prod.do.dsp.mp.microsoft.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for www.google.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for alive.github.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for www.google.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for gateway.discord.gg. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for geo.prod.do.dsp.mp.microsoft.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for www.google.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for www.msftconnecttest.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for gateway.discord.gg. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for alive.github.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for gateway.discord.gg. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for www.google.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for www.msftconnecttest.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for mtalk.google.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for geo.prod.do.dsp.mp.microsoft.com. IN A: context canceled +0800 2024-02-16 10:02:12 ERROR dns: exchange failed for geo.prod.do.dsp.mp.microsoft.com. IN A: write tcp 192.168.0.106:57886->223.111.150.103:80: use of closed network connection 2024/02/16 10:02:13 当前服务的真连接延迟: -1 ms

额外信息

No response

我确认已更新至最新版本

我确认已查询历史issues

Murphy-ZZH commented 9 months ago

同样问题

lingszz commented 9 months ago

修改TUN模式的DNS解析协议,由TCP修改为UDP,修改后的配置如下文所示,修改方式为【设置->DNS设置->sing-box设置->点击导入默认DNS设置->修改TUN模式的DNS协议】

{ "servers": [ { "tag": "remote", "address": "udp://8.8.8.8", "detour": "proxy" }, { "tag": "local", "address": "223.5.5.5", "detour": "direct" }, { "tag": "block", "address": "rcode://success" } ], "rules": [ { "geosite": [ "cn" ], "server": "local", "disable_cache": true }, { "geosite": [ "category-ads-all" ], "server": "block", "disable_cache": true } ], "strategy": "ipv4_only" }

villager10115 commented 8 months ago

修改TUN模式的DNS解析协议,由TCP修改为UDP,修改后的配置如下文所示,修改方式为【设置->DNS设置->sing-box设置->点击导入默认DNS设置->修改TUN模式的DNS协议】

{ "servers": [ { "tag": "remote", "address": "udp://8.8.8.8", "detour": "proxy" }, { "tag": "local", "address": "223.5.5.5", "detour": "direct" }, { "tag": "block", "address": "rcode://success" } ], "rules": [ { "geosite": [ "cn" ], "server": "local", "disable_cache": true }, { "geosite": [ "category-ads-all" ], "server": "block", "disable_cache": true } ], "strategy": "ipv4_only" }

修改后还是没用。日志如下: +0800 2024-02-23 09:13:16 ERROR dns: exchange failed for www.msftconnecttest.com. IN A: write tcp 192.168.12.100:50175->223.111.150.103:80: use of closed network connection +0800 2024-02-23 09:13:16 ERROR dns: exchange failed for www.google.com. IN A: write tcp 192.168.12.100:50175->223.111.150.103:80: use of closed network connection +0800 2024-02-23 09:13:16 ERROR dns: exchange failed for self.events.data.microsoft.com. IN A: write tcp 192.168.12.100:50175->223.111.150.103:80: use of closed network connection +0800 2024-02-23 09:13:16 ERROR dns: exchange failed for self.events.data.microsoft.com. IN A: write tcp 192.168.12.100:50175->223.111.150.103:80: use of closed network connection +0800 2024-02-23 09:13:16 ERROR dns: exchange failed for play.google.com. IN A: write tcp 192.168.12.100:50175->223.111.150.103:80: use of closed network connection +0800 2024-02-23 09:13:16 ERROR dns: exchange failed for www.google.com. IN A: write tcp 192.168.12.100:50175->223.111.150.103:80: use of closed network connection

lingszz commented 8 months ago

可以看一下你的配置文件吗

Murphy-ZZH commented 8 months ago

可以看一下你的配置文件吗

image
villager10115 commented 8 months ago

可以看一下你的配置文件吗

image
lingszz commented 8 months ago
  1. 你可以尝试一下更换节点
  2. 在开启TUN模式后复制v2rayN\guiConfigs\config.json配置文件到v2rayN\bin\sing_box\config.json,修改config.json中log-level由warning修改为info,使用管理员模式执行"sing-box.exe run",查看相关的报错信息
Murphy-ZZH commented 8 months ago
  1. 你可以尝试一下更换节点
  2. 在开启TUN模式后复制v2rayN\guiConfigs\config.json配置文件到v2rayN\bin\sing_box\config.json,修改config.json中log-level由warning修改为info,使用管理员模式执行"sing-box.exe run",查看相关的报错信息 image
Murphy-ZZH commented 8 months ago

当我手动加载geoip.db和geosite.db: image

Murphy-ZZH commented 8 months ago

其他协议使用tun也有报错信息,但并不影响使用

lingszz commented 8 months ago
  1. 目前是有一个不影响使用的报错不清楚是什么问题,可以用就行
  2. 你应该关闭v2rayN的TUN模式后再执行"sing-box.exe run"
Murphy-ZZH commented 8 months ago
  1. 目前是有一个不影响使用的报错不清楚是什么问题,可以用就行
  2. 你应该关闭v2rayN的TUN模式后再执行"sing-box.exe run"

我发现了另一个现象,当config复制到v2rayN-Core\bin\sing_box目录下,再手动运行singbox.exe run -c config.json,tun似乎能工作了,尽管windows显示无法连接到Internet,且网络连接显示sing-box的网络电缆被拔出,但是有数据包流动,且可以上网,sing-box也有准确的日志滚动

Murphy-ZZH commented 8 months ago

image

Murphy-ZZH commented 8 months ago

v2rayN关闭tun情况下手动运行sing-box(sing-box.exe run)也可以

lingszz commented 8 months ago
  1. 目前是有一个不影响使用的报错不清楚是什么问题,可以用就行
  2. 你应该关闭v2rayN的TUN模式后再执行"sing-box.exe run"

我发现了另一个现象,当config复制到v2rayN-Core\bin\sing_box目录下,再手动运行singbox.exe run -c config.json,tun似乎能工作了,尽管windows显示无法连接到Internet,且网络连接显示sing-box的网络电缆被拔出,但是有数据包流动,且可以上网,sing-box也有准确的日志滚动

  1. 你应该修改v2rayN的"自动配置系统代理"为"清除系统代理"
  2. ...听上去问题出在你的v2rayN,把所有文件删除重新下载一个呢
villager10115 commented 8 months ago
  1. 你可以尝试一下更换节点
  2. 在开启TUN模式后复制v2rayN\guiConfigs\config.json配置文件到v2rayN\bin\sing_box\config.json,修改config.json中log-level由warning修改为info,使用管理员模式执行"sing-box.exe run",查看相关的报错信息

我这边的config.json中找不到log-level,也没有sing-box.exe run只有exe,这是命令吧?

Murphy-ZZH commented 8 months ago
  1. 目前是有一个不影响使用的报错不清楚是什么问题,可以用就行
  2. 你应该关闭v2rayN的TUN模式后再执行"sing-box.exe run"

我发现了另一个现象,当config复制到v2rayN-Core\bin\sing_box目录下,再手动运行singbox.exe run -c config.json,tun似乎能工作了,尽管windows显示无法连接到Internet,且网络连接显示sing-box的网络电缆被拔出,但是有数据包流动,且可以上网,sing-box也有准确的日志滚动

  1. 你应该修改v2rayN的"自动配置系统代理"为"清除系统代理"
  2. ...听上去问题出在你的v2rayN,把所有文件删除重新下载一个呢

我重装了V2rayN、Xray和sing-box内核,问题依旧和题主一样,且其他协议没有问题

Murphy-ZZH commented 8 months ago
  1. 你可以尝试一下更换节点
  2. 在开启TUN模式后复制v2rayN\guiConfigs\config.json配置文件到v2rayN\bin\sing_box\config.json,修改config.json中log-level由warning修改为info,使用管理员模式执行"sing-box.exe run",查看相关的报错信息

我这边的config.json中找不到log-level,也没有sing-box.exe run只有exe,这是命令吧?

在v2rayN-Core\guiConfigs\config.json中的第五行代码,命令需要cmd管理员权限运行

Murphy-ZZH commented 8 months ago
  1. 目前是有一个不影响使用的报错不清楚是什么问题,可以用就行
  2. 你应该关闭v2rayN的TUN模式后再执行"sing-box.exe run"

我发现了另一个现象,当config复制到v2rayN-Core\bin\sing_box目录下,再手动运行singbox.exe run -c config.json,tun似乎能工作了,尽管windows显示无法连接到Internet,且网络连接显示sing-box的网络电缆被拔出,但是有数据包流动,且可以上网,sing-box也有准确的日志滚动

  1. 你应该修改v2rayN的"自动配置系统代理"为"清除系统代理"
  2. ...听上去问题出在你的v2rayN,把所有文件删除重新下载一个呢

遗憾,改为清除系统代理之后tun无法正常运行,我之前疏忽了存在http代理 image

2dust commented 8 months ago

有什么确定了的发现吗?

Murphy-ZZH commented 8 months ago

有什么确定了的发现吗?

并没有,tcp协议无法直接建立tun,也许我应该尝试一下更换内核看能不能有所改变

2dust commented 8 months ago

有什么确定了的发现吗?

并没有,tcp协议无法直接建立tun,也许我应该尝试一下更换内核看能不能有所改变

有确定的发现请反馈。 如果用core run config也是不行,那么已经和v2rayN无关了。 如果发现是config产生的问题,这种就可以由v2rayN处理

lingszz commented 8 months ago

有什么确定了的发现吗?

并没有,tcp协议无法直接建立tun,也许我应该尝试一下更换内核看能不能有所改变

复制Config的方法会复制你V2rayN当前使用的代理,如果代理无法使用,也会出现DNS解析问题,你可以尝试配置好代理重新使用Config运行sing-box

Murphy-ZZH commented 8 months ago

我注意到tun时好像国内的网站可以正常解析,国外的会导致dns错误,而且msconnecttest这个域名是走国外导致系统识别成无法上网,config可以设置域名白名单吗,还是说要修改Geoip文件

lingszz commented 8 months ago

我注意到tun时好像国内的网站可以正常解析,国外的会导致dns错误,而且msconnecttest这个域名是走国外导致系统识别成无法上网,config可以设置域名白名单吗,还是说要修改Geoip文件

配置文件写的远程使用谷歌的DNS,本地使用阿里云的DNS,可能是您的代理节点不支持谷歌的DNS,您可以将8.8.8.8更换为223.5.5.5尝试一下

Murphy-ZZH commented 8 months ago

我发现了一个似乎是关键的问题:tun模式的config并没有关于代理节点的tcp协议配置信息,从而导致连接不上代理

Murphy-ZZH commented 8 months ago

有什么确定了的发现吗?

并没有,tcp协议无法直接建立tun,也许我应该尝试一下更换内核看能不能有所改变

有确定的发现请反馈。 如果用core run config也是不行,那么已经和v2rayN无关了。 如果发现是config产生的问题,这种就可以由v2rayN处理

我认为因为config中没有有关streamSettings的配置导致代理失效的可能性比较大,而我手动添加streamSettingyou有关信息,sing-box无法识别该配置

屏幕截图 2024-02-28 113021
lingszz commented 8 months ago

emmm 你遇到的问题是DNS无法正常解析,理论上在代理节点正常可以使用的情况下,修改为DNS协议为UDP就可以了,但是你修改后无效,所以我推测以下几种可能

  1. 你的代理节点无法访问谷歌的DNS
  2. 你的代理节点失效了
  3. 你的代理节点无法使用UDP协议
  4. 你的TUN网卡没有正常启动
  5. 未知问题

你可以尝试一下变更以上条件依次排除问题,或者从以下链接重新安装TUN网卡 https://download.wireguard.com/windows-client/wireguard-amd64-0.5.3.msi

按照你目前的情况,我推测问题的成因与V2rayN无关

2dust commented 8 months ago

@Murphy-ZZH 把你的vmess分享发下,应该是某些属性sing-box不支持

Murphy-ZZH commented 8 months ago

@Murphy-ZZH 把你的vmess分享发下,应该是某些属性sing-box不支持

可以告诉我你的联系方式吗(邮箱之类),telegram我暂时登录不上(国内电话号码无法接收验证码)

2dust commented 8 months ago

captainIronng@protonmail.com

2dust commented 8 months ago

v2rayN_x64_net8.zip @Murphy-ZZH 更新下测试

Murphy-ZZH commented 8 months ago

tun已正常运行,感谢

villager10115 commented 8 months ago

v2rayN_x64_net8.zip @Murphy-ZZH 更新下测试

用新版甚至弹不出sing-box

配置成功 [VMess] 日本 03 | tcp(e69bdf61-f7f9-ead2-6b31-3a33db345d9a***moe:80) Microsoft Windows NT 10.0.22631.0 - 64 启动服务(2024/03/18 10:43:49)... 2024/03/18 10:43:50 系统代理设置改变ForcedChange +0800 2024-03-18 10:44:01 WARN inbound/tun[tun-in]: open tun interface take too much time to finish! 2024/03/18 10:44:02 当前服务的真连接延迟: -1 ms FATAL[0017] start service: initialize inbound/tun[tun-in]: configure tun interface: The system cannot find the file specified.

ovo4096 commented 5 months ago

tun已正常运行,感谢

我也遇到了相同的问题,可以告诉我具体的原因是什么吗?