【发布时间】:2023-03-23 10:35:02
【问题描述】:
鉴于 Apple 最近在 6 月份宣布所有新的移动应用程序都需要支持“仅 IPv6”,我正在使用他们的 DNS64/NAT64 设置(描述为here)来尝试测试我的应用程序。
我无法让 DNS64 在此设置下正常工作。特别是,当我尝试使用 getaddrinfo() 对任何地址进行 DNS 查找时,我得到 EAI_NONAME。这是我正在使用的确切代码:
struct addrinfo hints;
memset(&hints, 0, sizeof(struct addrinfo));
hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */
hints.ai_socktype = SOCK_STREAM; /* Stream socket */
hints.ai_flags = 0;
hints.ai_protocol = 0; /* Any protocol */
int result;
struct addrinfo *addrinfo;
NSString *hostString = @"yahoo.com";
result = getaddrinfo([hostString UTF8String], NULL, &hints, &addrinfo);
if (result == 0) {
NSLog(@"worked");
struct sockaddr_storage stor = *( (struct sockaddr_storage *) addrinfo->ai_addr);
NSLog(@" result = %@", [AppDelegate inet_ntoa_r:stor]);
}
else
{
NSLog(@"bad, error = %i (%@)", result, hostString);
}
我知道这段代码是正确的,因为当我切换到本地互联网提供商时,我实际上能够获得为 yahoo.com 返回的 IPv6 地址。但是,我认为这不是 Apple 正在寻找的“仅限 IPv6”的环境,所以我想让事情与他们的 NAT64/DNS64 一起工作。
为了验证,我在 App Store 上使用 IPv6 Toolkit App 进行了测试,并看到了相同的结果。
此时我认为 DNS64 需要一些额外的配置,但我不确定它会涉及什么。
编辑:通过此 DNS64 测试站点 test-ipv6 会出现错误“我们的测试表明您的 IPv6 设置会损坏或配置错误,这将导致网站启用 IPv6 时出现问题”。因此,Apple 的 DNS64 或我的配置肯定有问题。有什么想法吗?
【问题讨论】:
-
它对我有用。您使用的是 iOS 9.2+ 吗?
-
通常我将手机运行到我的 mac 热点并启用 mac 的 6to4 服务。你的设置是什么?