diff --git a/FastGithub.DomainResolve/DnsClient.cs b/FastGithub.DomainResolve/DnsClient.cs index 4c736a6..9323a63 100644 --- a/FastGithub.DomainResolve/DnsClient.cs +++ b/FastGithub.DomainResolve/DnsClient.cs @@ -91,7 +91,12 @@ namespace FastGithub.DomainResolve foreach (var fallbackDns in this.fastGithubConfig.FallbackDns) { - if (Socket.OSSupportsIPv6 || fallbackDns.AddressFamily != AddressFamily.InterNetworkV6) + if (Socket.OSSupportsIPv4 && fallbackDns.AddressFamily == AddressFamily.InterNetwork) + { + yield return fallbackDns; + } + + if (Socket.OSSupportsIPv6 && fallbackDns.AddressFamily == AddressFamily.InterNetworkV6) { yield return fallbackDns; } @@ -191,17 +196,21 @@ namespace FastGithub.DomainResolve /// private static async Task> GetAnswerRecordsAsync(IRequestResolver resolver, string domain, CancellationToken cancellationToken) { - var answerRecords = await GetAnswerAsync(RecordType.A); + var answerRecords = new List(); + if (Socket.OSSupportsIPv4 == true) + { + var records = await GetAnswerAsync(RecordType.A); + answerRecords.AddRange(records); + } + if (Socket.OSSupportsIPv6 == true) { - var ipv6Records = await GetAnswerAsync(RecordType.AAAA); - foreach (var record in ipv6Records) - { - answerRecords.Add(record); - } + var records = await GetAnswerAsync(RecordType.AAAA); + answerRecords.AddRange(records); } return answerRecords; + async Task> GetAnswerAsync(RecordType recordType) { var request = new Request diff --git a/FastGithub/appsettings.json b/FastGithub/appsettings.json index 09711b5..4daec4e 100644 --- a/FastGithub/appsettings.json +++ b/FastGithub/appsettings.json @@ -4,7 +4,8 @@ "HttpProxyPort": 38457, // http代理端口,linux/osx平台使用 "FallbackDns": [ // 以下dns必须要支持tcp "114.114.114.114:53", - "119.29.29.29:53" + "119.29.29.29:53", + "[2400:3200::1]:53" ], "DomainConfigs": { "*.fastgithub.com": { // 域名的*表示除.之外0到多个任意字符 @@ -28,7 +29,7 @@ "Override": { "Yarp": "Warning", "System": "Warning", - "Microsoft": "Warning", + "Microsoft": "Warning", "Microsoft.AspNetCore.Server.Kestrel": "Error" } }