在客户端服务器应用程序中添加IPv6支持。 在“纯IPv6”生产服务器中,在操作系统级别禁用IPv4堆栈是否很常见?

操作系统在考虑: Windows Server 2008+

我们正在复杂的客户端 – 服务器networking应用程序中添加IPv6支持。 服务器打开许多端口用于侦听,不同types的客户端连接到不同的端口。

我们正在考虑多种情​​况,包括:

  • 纯IPv6上的服务器,纯IPv6上的客户端
  • 纯IPv4上的服务器,纯IPv4上的客户端
  • 服务器在纯双协议栈上,纯IPv6上的客户端
  • 服务器在纯粹的双栈,客户端纯IPv4(隧道我们还没有弄清楚)

与服务器机器相关,我的问题是:是否可以安全地假设,在Pure IPv6生产机器仍然会在操作系统级别的IPv4工作? 换句话说,是Pure IPv6生产机器,在系统中是否还有IPv4环回地址?

关于IPv6我发现这是OS的强制性部分,至less没有办法禁用IPv6环回。 但是对于使用netsh命令的IPv4来说是可能的。

我在这里有两个问题:

  1. 我的服务器应用程序是用Java编写的。 如果我使用netsh interface ipv4 uninstall在操作系统级别禁用IPv4,则大多数Java的networkingAPI将停止工作,因为它们还不支持此configuration。 链接。

  2. 在我的服务器应用程序中,有几个端口在127.0.0.1侦听,因为它们必须从同一台机器上访问。 所以,如果我确保代码只使用127.0.0.1连接到这些套接字而不使用localhost::1那么我应该担心这些吗?

对于任何事情,很less能够“安全”地作出假设。 了解networking和您正在部署的软件。

禁用IPv4到卸载级别是非常罕见的。 这样做很明显,这样做完全打破了各种软件的networking栈,networkingfunction不可能工作。

您仍然可以尝试只使用IPv6的软件查看是否有任何问题。

对于回送监听器,请尝试在支持两者的编程环境中使用常量。 对于Java,这可能是InetAddress.getLoopbackAddress()