AAAA记录解析
This commit is contained in:
parent
3212d556ba
commit
21bf7932de
@ -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;
|
||||||
|
|
||||||
|
|||||||
@ -4,8 +4,7 @@
|
|||||||
"HttpProxyPort": 38457, // http代理端口,linux/osx平台使用
|
"HttpProxyPort": 38457, // http代理端口,linux/osx平台使用
|
||||||
"FallbackDns": [ // 以下dns必须要支持tcp
|
"FallbackDns": [ // 以下dns必须要支持tcp
|
||||||
"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到多个任意字符
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user