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

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

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

我们正在为复杂的客户端-服务器网络应用程序添加 IPv6 支持。服务器打开许多端口进行监听,不同类型的客户端连接到不同的端口。

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

  • 服务器采用纯 IPv6,客户端采用纯 IPv6
  • 服务器采用纯 IPv4,客户端采用纯 IPv4
  • 服务器采用纯双栈,客户端采用纯 IPv6
  • 服务器采用纯双栈,客户端采用纯 IPv4(隧道技术我们尚未弄清楚)

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

关于IPv6我发现这里这是操作系统的强制部分,至少没有办法禁用环回。但使用命令IPv6是可能的。IPv4netsh

我有两个担忧:

  1. 我的服务器应用程序是用 Java 编写的。如果我使用 在操作系统级别禁用 IPv4 netsh interface ipv4 uninstall,则大多数 Java 网络 API 将停止工作,因为它们尚不支持此配置。 关联。

  2. 在我的服务器应用中,监听的端口很少,因为它们必须从同一台机器访问。因此,如果我确保代码仅使用 而不是使用或127.0.0.1连接到这些套接字,我应该担心这些吗?127.0.0.1localhost::1

答案1

很少能对任何事情做出“安全”的假设。了解网络和您要部署到其中的软件。

禁用 IPv4 到卸载它的程度是非常罕见的。当这样做会完全破坏各种软件的网络堆栈,网络功能无法正常工作时,就会出现这种情况。

您仍然可以尝试使用仅 IPv6 寻址的软件来查看是否会出现任何问题。

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

相关内容