diff --git a/v2rayN/ServiceLib/Models/CoreConfigs/V2rayConfig.cs b/v2rayN/ServiceLib/Models/CoreConfigs/V2rayConfig.cs index 6a8411c4..e4299ec6 100644 --- a/v2rayN/ServiceLib/Models/CoreConfigs/V2rayConfig.cs +++ b/v2rayN/ServiceLib/Models/CoreConfigs/V2rayConfig.cs @@ -214,6 +214,7 @@ public class DnsServer4Ray public List? domains { get; set; } public bool? skipFallback { get; set; } public List? expectedIPs { get; set; } + public bool? finalQuery { get; set; } public string? tag { get; set; } } diff --git a/v2rayN/ServiceLib/Services/CoreConfig/V2ray/V2rayDnsService.cs b/v2rayN/ServiceLib/Services/CoreConfig/V2ray/V2rayDnsService.cs index 830096bc..836d75f0 100644 --- a/v2rayN/ServiceLib/Services/CoreConfig/V2ray/V2rayDnsService.cs +++ b/v2rayN/ServiceLib/Services/CoreConfig/V2ray/V2rayDnsService.cs @@ -374,13 +374,20 @@ public partial class CoreConfigV2rayService { return; } - foreach (var dnsAddress in dnsAddresses) + //foreach (var dnsAddress in dnsAddresses) + for (var i = 0; i < dnsAddresses.Count; i++) { + var dnsAddress = dnsAddresses[i]; var dnsServer = CreateDnsServer(dnsAddress, domains, expectedIPs); if (isDirectDns) { dnsServer.tag = $"{Global.DirectDnsTag}-{directDnsTagIndex++}"; } + if (expectedIPs is not null + && i == expectedIPs.Count - 1) + { + dnsServer.finalQuery = true; + } var dnsServerNode = JsonUtils.SerializeToNode(dnsServer); dnsItem.servers.Add(dnsServerNode); }