AAAA记录解析

This commit is contained in:
老九 2021-11-17 23:26:08 +08:00
parent 3212d556ba
commit 21bf7932de
2 changed files with 10 additions and 17 deletions

View File

@ -91,12 +91,7 @@ namespace FastGithub.DomainResolve
foreach (var fallbackDns in this.fastGithubConfig.FallbackDns) foreach (var fallbackDns in this.fastGithubConfig.FallbackDns)
{ {
if (Socket.OSSupportsIPv4 && fallbackDns.AddressFamily == AddressFamily.InterNetwork) if (Socket.OSSupportsIPv6 || fallbackDns.AddressFamily != AddressFamily.InterNetworkV6)
{
yield return fallbackDns;
}
if (Socket.OSSupportsIPv6 && fallbackDns.AddressFamily == AddressFamily.InterNetworkV6)
{ {
yield return fallbackDns; yield return fallbackDns;
} }
@ -161,9 +156,8 @@ namespace FastGithub.DomainResolve
? (IRequestResolver)new TcpRequestResolver(dns) ? (IRequestResolver)new TcpRequestResolver(dns)
: new UdpRequestResolver(dns, new TcpRequestResolver(dns), this.resolveTimeout); : new UdpRequestResolver(dns, new TcpRequestResolver(dns), this.resolveTimeout);
var answerRecords = await GetAnswerRecordsAsync(resolver, endPoint.Host, cancellationToken); var addressRecords = await GetAddressRecordsAsync(resolver, endPoint.Host, cancellationToken);
var addresses = answerRecords var addresses = addressRecords
.OfType<IPAddressResourceRecord>()
.Where(item => IPAddress.IsLoopback(item.IPAddress) == false) .Where(item => IPAddress.IsLoopback(item.IPAddress) == false)
.Select(item => item.IPAddress) .Select(item => item.IPAddress)
.ToArray(); .ToArray();
@ -178,7 +172,7 @@ namespace FastGithub.DomainResolve
addresses = await OrderByConnectAnyAsync(addresses, endPoint.Port, cancellationToken); addresses = await OrderByConnectAnyAsync(addresses, endPoint.Port, cancellationToken);
} }
var timeToLive = answerRecords.First().TimeToLive; var timeToLive = addressRecords.First().TimeToLive;
if (timeToLive <= TimeSpan.Zero) if (timeToLive <= TimeSpan.Zero)
{ {
timeToLive = this.defaultEmptyTtl; timeToLive = this.defaultEmptyTtl;
@ -188,25 +182,25 @@ namespace FastGithub.DomainResolve
} }
/// <summary> /// <summary>
/// 获取答案 /// 获取IP记录
/// </summary> /// </summary>
/// <param name="resolver"></param> /// <param name="resolver"></param>
/// <param name="domain"></param> /// <param name="domain"></param>
/// <param name="cancellationToken"></param> /// <param name="cancellationToken"></param>
/// <returns></returns> /// <returns></returns>
private static async Task<IList<IResourceRecord>> GetAnswerRecordsAsync(IRequestResolver resolver, string domain, CancellationToken cancellationToken) private static async Task<IList<IPAddressResourceRecord>> GetAddressRecordsAsync(IRequestResolver resolver, string domain, CancellationToken cancellationToken)
{ {
var answerRecords = new List<IResourceRecord>(); var answerRecords = new List<IPAddressResourceRecord>();
if (Socket.OSSupportsIPv4 == true) if (Socket.OSSupportsIPv4 == true)
{ {
var records = await GetAnswerAsync(RecordType.A); var records = await GetAnswerAsync(RecordType.A);
answerRecords.AddRange(records); answerRecords.AddRange(records.OfType<IPAddressResourceRecord>());
} }
if (Socket.OSSupportsIPv6 == true) if (Socket.OSSupportsIPv6 == true)
{ {
var records = await GetAnswerAsync(RecordType.AAAA); var records = await GetAnswerAsync(RecordType.AAAA);
answerRecords.AddRange(records); answerRecords.AddRange(records.OfType<IPAddressResourceRecord>());
} }
return answerRecords; return answerRecords;

View File

@ -4,8 +4,7 @@
"HttpProxyPort": 38457, // httplinux/osx使 "HttpProxyPort": 38457, // httplinux/osx使
"FallbackDns": [ // dnstcp "FallbackDns": [ // dnstcp
"114.114.114.114:53", "114.114.114.114:53",
"119.29.29.29:53", "119.29.29.29:53"
"[2400:3200::1]:53"
], ],
"DomainConfigs": { "DomainConfigs": {
"*.fastgithub.com": { // *.0 "*.fastgithub.com": { // *.0