![在客户端-服务器应用程序中添加 IPv6 支持。在“纯 IPv6”生产服务器中,在操作系统级别禁用 IPv4 堆栈是否很常见?](https://linux22.com/image/700113/%E5%9C%A8%E5%AE%A2%E6%88%B7%E7%AB%AF-%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%B8%AD%E6%B7%BB%E5%8A%A0%20IPv6%20%E6%94%AF%E6%8C%81%E3%80%82%E5%9C%A8%E2%80%9C%E7%BA%AF%20IPv6%E2%80%9D%E7%94%9F%E4%BA%A7%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%AD%EF%BC%8C%E5%9C%A8%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%BA%A7%E5%88%AB%E7%A6%81%E7%94%A8%20IPv4%20%E5%A0%86%E6%A0%88%E6%98%AF%E5%90%A6%E5%BE%88%E5%B8%B8%E8%A7%81%EF%BC%9F.png)
考虑的操作系统:Windows Server 2008+
我们正在为复杂的客户端-服务器网络应用程序添加 IPv6 支持。服务器打开许多端口进行监听,不同类型的客户端连接到不同的端口。
我们正在考虑多种情况,包括:
- 服务器采用纯 IPv6,客户端采用纯 IPv6
- 服务器采用纯 IPv4,客户端采用纯 IPv4
- 服务器采用纯双栈,客户端采用纯 IPv6
- 服务器采用纯双栈,客户端采用纯 IPv4(隧道技术我们尚未弄清楚)
与服务器机器相关的问题是:是否可以安全地假设生产机器中Pure IPv6
仍将IPv4
在操作系统级别运行?换句话说,生产机器中是否Pure IPv6
仍将IPv4
在系统中运行环回地址?
关于IPv6
我发现这里这是操作系统的强制部分,至少没有办法禁用环回。但使用命令IPv6
是可能的。IPv4
netsh
我有两个担忧:
我的服务器应用程序是用 Java 编写的。如果我使用 在操作系统级别禁用 IPv4
netsh interface ipv4 uninstall
,则大多数 Java 网络 API 将停止工作,因为它们尚不支持此配置。 关联。在我的服务器应用中,监听的端口很少,因为它们必须从同一台机器访问。因此,如果我确保代码仅使用 而不是使用或
127.0.0.1
连接到这些套接字,我应该担心这些吗?127.0.0.1
localhost
::1
答案1
很少能对任何事情做出“安全”的假设。了解网络和您要部署到其中的软件。
禁用 IPv4 到卸载它的程度是非常罕见的。当这样做会完全破坏各种软件的网络堆栈,网络功能无法正常工作时,就会出现这种情况。
您仍然可以尝试使用仅 IPv6 寻址的软件来查看是否会出现任何问题。
对于环回监听器,请尝试在支持两者的编程环境中使用常量。对于 Java,这可能是InetAddress.getLoopbackAddress()