2016-12-22 22 views
4

我意识到,已经有许多用户因Apple不支持Apple网络而拒绝其iOS应用程序的Stack Overflow问题。为IPv6兼容性配置服务器(用于被拒绝的iOS应用程序使用的API)

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

这是一个Xamarin应用程序,它通过HTTPS与API进行通信(并且没有其他网络连接)。

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

所以我的问题是广泛的,需要什么配置更改?更具体地说,你是否需要域上的AAAA记录?如果是这样,它应该如何配置?

我在这个问题更多的软件开发人员来了,所以没有IPv6的工作原理,以及需要什么样的服务器更改的详细的了解。

+0

据我有限的知识,你将需要一个AAAA DNS记录的域名,将其映射到您的API服务器的IPv6地址。如果没有AAAA记录,则会记录到A记录或CNAME记录,这两个记录都具有IPv4地址。 –

+0

如果你使你的服务器只支持IPv4,它将工作。 – user102008

回答

3

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

一种情况它可能会失败是当人们试图与苹果的政策更加兼容,并把一些假/假的/错误的AAAA记录在他们的DNS区域。这些实际上会阻止DNS64生成正确的记录,因为它认为服务器具有真正的IPv6并且不需要翻译服务。

内置的MacOS的DNS64不必互联网“真正的” IPv6连接,并会忽略这样的坏AAAA记录,而是实实在在的DNS64不会。因此,在这种情况下,您的本地测试似乎可行,但Apple会发现它失败。

我建立了一个测试工具,你可以用它来检查网站与https://nat64check.org/真正DNS64和NAT64服务。随意使用它。

虽然它不是强制性的,如果你想为将您的网络服务最好的可达性,两者均建议实际上使你的服务器通过IPv6访问,并提供AAAA记录。这将使您的服务独立于NAT64和DNS64翻译服务,从而提高可靠性和性能。它还可以改善其他拥有IPv6的用户的功能,因为它允许他们绕过现在ISP需要部署以弥补IPv4地址(如CGN,DS-Lite等)缺乏的技巧。

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

总结:最好的办法是让您的服务器可以通过IPv6访问,并使用AAAA记录在DNS中发布其地址。这对每个人都有好处。但不要发布伪造的AAAA记录(例如那些以::ffff:2001:db8:64:ff9b:,fcfd开头的记录)。这些将伤害拥有IPv6的每个人,这些人现在已经是相当多的人。当您通过IPv6提供服务时,请将其视为制作服务并正确执行。

+1

哇,感谢这个超级全面的答案,证实了我一直在阅读的东西(仍然不确定为什么我的iOS应用程序被拒绝,但仍然有帮助) –

相关问题