配置服务器以实现IPv6兼容性(适用于被拒绝的iOS应用使用的API)

Mic*_*rne 5 ipv6 xamarin.ios ios xamarin

我意识到已经有很多关于Stack Overflow的问题已经被苹果公司拒绝使用他们的iOS应用程序,因为它们不适用于仅支持IPv6的网络.

我已经检查了我的代码,以确保没有硬编码的IP地址(绝对没有),也没有使用旧的可达性(根本没有)或其他低级网络框架(我们只使用NSURLSession).我已经通过我的机器上的NAT64测试网络,应用程序(似乎)工作正常.

这是一个Xamarin应用程序,它通过HTTPS(而不是其他网络连接)与API通信.

我发现的一些答案表明,此问题的解决方案需要对服务器进行配置更改.

所以我的问题很广泛,需要进行哪些配置更改?更具体地说,您是否需要域名上的AAAA记录?如果是这样,应该如何配置?

作为一名软件开发人员,我更多地解决这个问题,因此没有详细了解IPv6如何工作以及需要哪些服务器更改.

San*_*ann 3

您的服务器不需要更改。NAT64 应负责仅 IPv4 服务器的转换,DNS64 应确保您获得主机名的正确地址。因此,当使用主机名而不是硬编码地址并且使用 IP 版本中立的 API 时,它通常应该可以正常工作。

它可能失败的一种情况是,当人们试图更加遵守 Apple 的政策并在其 DNS 区域中放置一些虚拟/假/错误的 AAAA 记录时。这些实际上会阻止 DNS64 生成正确的记录,因为它认为服务器具有真正的 IPv6 并且不需要翻译服务。

MacOS 中内置的 DNS64 没有“真正的”IPv6 连接到互联网,并且会忽略此类不良的 AAAA 记录,但真正的 DNS64 不会。因此,在这种情况下,您的本地测试似乎有效,但 Apple 会发现它失败。

我构建了一个测试工具,您可以使用它来检查具有真实 DNS64 和 NAT64 服务的网站,网址为https://nat64check.org/。随意使用它。

虽然这不是强制性的,但如果您希望 Web 服务具有最佳的可访问性,那么建议您实际上使您的服务器可通过 IPv6 进行访问并提供 AAAA 记录。这将使您的服务独立于 NAT64 和 DNS64 转换服务,从而提高可靠性和性能。它还将改善其他拥有 IPv6 的用户的情况,因为它允许他们绕过 ISP 目前需要部署的技巧来弥补 IPv4 地址的缺乏(如 CGN、DS-Lite 等)。

它还可以防止 DNSSEC 出现问题:NAT64 需要生成“假”AAAA 才能使服务在 IPv6 上运行,而 DNSSEC 旨在防止任何人对 DNS 记录撒谎。如果您提供真实的 AAAA 记录,则 NAT64 不需要撒谎,并且 DNSSEC 不会受到影响。

总而言之:最好的办法是让您的服务器可通过 IPv6 访问,并在 DNS 中使用 AAAA 记录发布其地址。这将使每个人受益。但请勿发布虚假的 AAAA 记录(例如以 、 、 或 开头::ffff:2001:db8:记录64:ff9b:)。这些都会伤害到所有拥有 IPv6 的人,而如今拥有 IPv6 的人数相当多。当您通过 IPv6 提供服务时,请将其视为生产服务并正确执行。fcfd