在 Citrix 机器中运行时,Spring Boot 端口随机打开

问题描述 投票:0回答:2

我有一台 Citrix 机器,我必须在那里运行一个 Web 服务(使用 Spring Boot 开发)。它是 Windows 10 主机。有一个奇怪的行为 - 端口是随机选择的,而不是配置的端口 8090。

我检查了我的application.properties,它清楚地显示了

server.port=8090

代码没有问题,如果我从任何其他机器运行它,它将按预期在端口 8090 启动。

它甚至在 Citrix 计算机中打印出 Tomcat 服务器是使用端口 8090 初始化的。但最终它从随机端口 (22345) 启动,如下面的日志所示。如果我停止并重新启动,它将在另一个端口(可能是 23466)启动。

2021-06-28 13:45:52.490  INFO 31792 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8090 (http)
......
......
2021-06-28 13:45:53.348  INFO 31792 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 22345 (http) with context path ''
2021-06-28 13:45:53.355  INFO 31792 --- [           main] com.sreejesh.MainApplicationClass        : Started MainApplicationClass in 3.701 seconds (JVM running for 4.798)

我什至尝试在命令行中覆盖它:

java -jar MyApp.jar --server.port=8090

结果仍然相同(就好像有人奇怪地覆盖 server.port=0 以在随机端口中启动)。

我想重申,我的本地计算机上一切正常,正如预期的那样。仅在 Citrix 机器中存在这种奇怪的行为。

有什么线索可以解释为什么会发生这种情况吗?谢谢您的宝贵时间。

spring spring-boot spring-mvc citrix citrix-access-gateway
2个回答
0
投票

我们遇到的问题与您问题中的问题完全相同。经过一个多月的研究,我们终于找到了问题的根本原因并解决了问题。在我们的案例中,问题来自于我们公司推出的 Palo Alto Networks 的下一代防火墙。推出后,我们基于 Citrix 的虚拟 PC 上出现了一项名为“PAN 终端服务器代理”的服务。当服务关闭时,没有任何问题。但由于显而易见的原因,这些服务应该启动并运行。因此,我们与 IT 人员进行了交谈,他们能够对防火墙(和/或 PAN 终端服务器代理,我不知道详细信息)进行一些配置更改,现在问题已经消失,尽管“PAN 终端服务器代理”已启动并运行。


0
投票

正如 Mitch 所说:它可能是帕洛阿尔托网络终端服务器代理。我遇到了同样的问题,米奇的回答给我们带来了解决方案:

帕洛阿尔托网络终端服务器代理将请求的源端口更改为特定范围内的另一个端口。目标似乎是能够追踪网络其他部分的流量。

对于本地监听端口,追踪是无意义的。它破坏了很多应用程序。

幸运的是,有一个注册表设置可以更改它:

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Palo Alto Networks\TS Agent\Adv\HonorSrcPortRequest

应设置为 2。

参见 https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA14u000000HCccCAG&lang=en_US%E2%80%A9 其中写着:

当用户应用程序尝试创建套接字时,TSA 关心的是 连接的源端口。有 3 种可能性:这 应用程序可能会请求分配一个特定的源端口 套接字和此源端口可能位于配置的用户内 源端口范围 b.应用程序可能会请求特定的 分配给套接字的源端口,该源端口可能位于 超出配置的用户源端口范围。 C。该应用程序可以 不请求将特定源端口分配给套接字 并让系统(即 TSA)为套接字分配一个源端口

  • 当 HonorSrcPortRequest 设置为 0(默认)时,TSA 将忽略上述所有内容并从用户的端口分配源端口 端口范围。
  • 当 HonorSrcPortRequest 设置为 1 时,TSA 将尊重场景 (b) 中应用程序发出的源端口请求,即当 应用程序请求的源端口位于配置之外 用户源端口范围。
  • 当 HonorSrcPortRequest 设置为 2 时,TSA 将尊重场景 (a) 和 (b) 中应用程序的源端口请求,即 TSA 将尊重 应用程序发出的每个显式源端口请求。
© www.soinside.com 2019 - 2024. All rights reserved.