From 46cd118f4ebbed11ce54b54b8b582c93fcee0d1d Mon Sep 17 00:00:00 2001 From: "shixin.ruan" Date: Wed, 27 May 2026 18:51:51 +0900 Subject: [PATCH] [console]: listen on IPv6 proxy host Console proxy returned the MN IPv6 address to clients but selected the listen address from agentIp, which is 127.0.0.1 for the management-node agent. Use the client-facing proxy hostname to choose the wildcard listen address so IPv6 console URLs are reachable. Resolves: ZSTAC-85595 Change-Id: Ief18c9b847f0e0c050ce993a50244533614fd2b8 --- .../src/main/java/org/zstack/console/ConsoleProxyBase.java | 6 +++--- .../test/integration/core/ManagementNetworkIpv6Case.groovy | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/console/src/main/java/org/zstack/console/ConsoleProxyBase.java b/console/src/main/java/org/zstack/console/ConsoleProxyBase.java index 92f3a77b036..bf742b34ec5 100755 --- a/console/src/main/java/org/zstack/console/ConsoleProxyBase.java +++ b/console/src/main/java/org/zstack/console/ConsoleProxyBase.java @@ -82,7 +82,7 @@ private void doEstablishConsoleProxyConnection(ConsoleUrl consoleUrl, final Retu cmd.setTargetSchema(targetSchema); cmd.setTargetHostname(targetHostname); cmd.setTargetPort(targetPort); - cmd.setProxyHostname(selectProxyListenHostname(self.getAgentIp())); + cmd.setProxyHostname(selectProxyListenHostname(self.getProxyHostname())); if (ConsoleConstants.HTTP_SCHEMA.equals(targetSchema)) { cmd.setProxyPort(CoreGlobalProperty.HTTP_CONSOLE_PROXY_PORT); } else { @@ -128,8 +128,8 @@ public Class getReturnClass() { }); } - public static String selectProxyListenHostname(String agentIp) { - return IPv6NetworkUtils.isIpv6Address(agentIp) ? ANY_IPV6_ADDRESS : ANY_IPV4_ADDRESS; + public static String selectProxyListenHostname(String proxyHostname) { + return IPv6NetworkUtils.isIpv6Address(proxyHostname) ? ANY_IPV6_ADDRESS : ANY_IPV4_ADDRESS; } void doEstablishDirectConsoleConnection(ConsoleUrl consoleUrl, final ReturnValueCompletion completion) { diff --git a/test/src/test/groovy/org/zstack/test/integration/core/ManagementNetworkIpv6Case.groovy b/test/src/test/groovy/org/zstack/test/integration/core/ManagementNetworkIpv6Case.groovy index fb640bddb9e..d8ecd0f741a 100644 --- a/test/src/test/groovy/org/zstack/test/integration/core/ManagementNetworkIpv6Case.groovy +++ b/test/src/test/groovy/org/zstack/test/integration/core/ManagementNetworkIpv6Case.groovy @@ -83,7 +83,7 @@ class ManagementNetworkIpv6Case extends SubCase { testBuildUrlIpv6() testLegacyUrlBuilderIpv6() testConsoleVncUriIpv6() - testConsoleProxyListenHostByAgentIpVersion() + testConsoleProxyListenHostByProxyIpVersion() testCoreManagementUrlsIpv6() testRestFacadeIpv6Urls() testSshTargetUsesBracketedIpv6Host() @@ -186,7 +186,7 @@ class ManagementNetworkIpv6Case extends SubCase { assert uri.port == REST_PORT } - void testConsoleProxyListenHostByAgentIpVersion() { + void testConsoleProxyListenHostByProxyIpVersion() { assert ConsoleProxyBase.selectProxyListenHostname(IPV6) == "::" assert ConsoleProxyBase.selectProxyListenHostname(IPV4) == "0.0.0.0" assert ConsoleProxyBase.selectProxyListenHostname("mn.example.com") == "0.0.0.0"