v2rayNG icon indicating copy to clipboard operation
v2rayNG copied to clipboard

DNS hosts无法作用于节点服务器地址

Open dianxin623 opened this issue 6 months ago • 24 comments

预期行为

在dns hosts中填写节点服务器的域名-ip对,应该正常解析

实际行为

总是没有解析成功,另外用于解析节点服务器的dns地址是在境内DNS里填写吗,没有同v2rayN一样的outbound 地址解析设置。 Screenshot_20250617_063948_com_v2ray_ang_SettingsActivity.png

复现方法

安卓14,软件版本1.10.4

dianxin623 avatar Jun 16 '25 22:06 dianxin623

截图中没有看到你填写。 你填写后点击到处完整配置文件,然后看配置文件是否有你填写的值?

2dust avatar Jun 17 '25 02:06 2dust

解析节点服务器是用设备默认解析的,不会用这里设置的 dns

2dust avatar Jun 17 '25 02:06 2dust

截图中没有看到你填写。 你填写后点击到处完整配置文件,然后看配置文件是否有你填写的值?

配置文件有填写的值(填写的是节点服务器域名-ip对),但似乎解析节点服务器的时候不会匹配填写的hosts列表

dianxin623 avatar Jun 17 '25 02:06 dianxin623

解析节点服务器是用设备默认解析的,不会用这里设置的 dns

是否可以像v2rayN一样增加自定义解析节点服务器的dns,由于我的网络环境,需要设置指定的dns才能正常解析节点域名

dianxin623 avatar Jun 17 '25 02:06 dianxin623

从技术上可以用设置的 dns 来解析一次。 你说你的设备无法解析成功,在启动的时候会失败吗?

2dust avatar Jun 17 '25 02:06 2dust

截图中没有看到你填写。 你填写后点击到处完整配置文件,然后看配置文件是否有你填写的值?

配置文件有填写的值(填写的是节点服务器域名-ip对),但似乎解析节点服务器的时候不会匹配填写的hosts列表

应该会使用填写的 hosts 列表,我专门写了这部分逻辑的代码

https://github.com/2dust/v2rayNG/blob/72194252583b863aa17d4079704c9fb779167b2e/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt#L831

DHR60 avatar Jun 17 '25 03:06 DHR60

实测也确实使用了

Image

DHR60 avatar Jun 17 '25 03:06 DHR60

从技术上可以用设置的 dns 来解析一次。 你说你的设备无法解析成功,在启动的时候会失败吗?

是的,根本无法连接上节点服务器,提示io:read/write on closed pipe

dianxin623 avatar Jun 17 '25 03:06 dianxin623

实测也确实使用了

Image

我这里填写的hosts是节点服务器的域名-ip,连接不上节点服务器

dianxin623 avatar Jun 17 '25 03:06 dianxin623

截图中没有看到你填写。 你填写后点击到处完整配置文件,然后看配置文件是否有你填写的值?

配置文件有填写的值(填写的是节点服务器域名-ip对),但似乎解析节点服务器的时候不会匹配填写的hosts列表

应该会使用填写的 hosts 列表,我专门写了这部分逻辑的代码

v2rayNG/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt

Line 831 in 7219425

if (newHosts.containsKey(domain)) continue

看了一下这里的逻辑,应该是判断我现有的hosts如果有对应域名的记录,就不做额外解析,这么看应该没问题,但我实际上还是无法连接上节点服务器,提示“失败:io:read/write on closed pipe ”

dianxin623 avatar Jun 17 '25 03:06 dianxin623

你先不要用域名,直接用 IP 填地址,然后测试下是否能正常用否? 另外自己看下 log

2dust avatar Jun 17 '25 03:06 2dust

另外如果用域名的情况下,一般会有 dns 的日志的,比如

[Info] app/dns: returning 1 IP(s) for domain 域名 -> [你的 ip ]

2dust avatar Jun 17 '25 03:06 2dust

实测也确实使用了 Image

我这里填写的hosts是节点服务器的域名-ip,连接不上节点服务器

填写 域名:ip

DHR60 avatar Jun 17 '25 03:06 DHR60

实测也确实使用了 Image

我这里填写的hosts是节点服务器的域名-ip,连接不上节点服务器

填写 域名:ip

是这个格式 无误,域名:ip

dianxin623 avatar Jun 17 '25 03:06 dianxin623

节点协议和传输层是?

DHR60 avatar Jun 17 '25 03:06 DHR60

节点协议和传输层是?

shadowsocks , tcp

dianxin623 avatar Jun 17 '25 03:06 dianxin623

如果可以增加 自定义节点地址解析的DNS,那问题就解决了,就不知道技术上好不好实现,(我用 flclash 测试了一下,覆写节点解析dns 地址就可以正常工作)

dianxin623 avatar Jun 17 '25 03:06 dianxin623

你可以用自定义配置自己先测试下。 你导出完整配置,然后再导入,编辑中,在 dns 中增加类似下面的配置,注意逗号什么的

      {
        "address": "223.5.5.5",
        "domains": [
          "你的域名"
        ],
        "skipFallback": true
      }

2dust avatar Jun 17 '25 04:06 2dust

确实有问题,没生成 sockopt.domainStrategy

DHR60 avatar Jun 17 '25 04:06 DHR60

哦哦,if (newHosts.containsKey(domain)) continueitem.ensureSockopt().domainStrategy = if (preferIpv6) "UseIPv6v4" else "UseIPv4v6" 前面

DHR60 avatar Jun 17 '25 04:06 DHR60

https://github.com/2dust/v2rayNG/actions/runs/15699163548 试一试?

2dust avatar Jun 17 '25 05:06 2dust

https://github.com/2dust/v2rayNG/actions/runs/15699163548 试一试?

修复后,我测试可以正常连接,应该没问题。

另外自定义节点服务器解析DNS这点考虑吗

dianxin623 avatar Jun 17 '25 06:06 dianxin623

暂时不考虑自定义

2dust avatar Jun 17 '25 09:06 2dust

@dianxin623 你好,能否试下,使用旧版本的v2rayNG,服务器地址处填写服务器的IP,最底下http host/SNI处填写你的服务器域名(清空DNS hosts)能否连接你的服务器,谢谢!

Image

CharlesWou avatar Jun 21 '25 17:06 CharlesWou

@dianxin623 你好,能否试下,使用旧版本的v2rayNG,服务器地址处填写服务器的IP,最底下http host/SNI处填写你的服务器域名(清空DNS hosts)能否连接你的服务器,谢谢!

Image

可以连接,服务器地址处填写ip就可以连接了,不需要在http host填写域名(清空了DNS hosts)

dianxin623 avatar Jun 21 '25 23:06 dianxin623