From 602a41a94eb7502fdde3ea497249d1eed3ae968f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=81=E4=B9=9D?= <366193849@qq.com> Date: Wed, 17 Nov 2021 19:26:15 +0800 Subject: [PATCH] =?UTF-8?q?ipv6=20only=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FastGithub.DomainResolve/DnsClient.cs | 23 ++++++++++++++++------- FastGithub/appsettings.json | 5 +++-- 2 files changed, 19 insertions(+), 9 deletions(-) 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" } }