Websocket 服务器 - 适用于本地连接但不适用于远程连接?

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

我正在 Ubuntu (22.04.3) 上运行嵌入式 Jetty 服务器,监听端口 8734(任意号),并使用 wscat 进行测试。

如果在同一台机器上运行以下命令,则可以正常连接:

wscat -c wss://myserver.com:8734/myservlet/

但是如果我尝试远程连接,则无法连接(这是网络技术的要点)。它只是挂起直到超时。

服务器日志没有显示任何内容。

会不会是防火墙的原因?我不这么认为。防火墙是

ufw
——报告:

Status: active
To                         Action      From
--                         ------      ----
8734                       ALLOW       Anywhere                  
8734 (v6)                  ALLOW       Anywhere (v6)        

我短暂尝试了

sudo ufw disable
,wscat 工作/失败行为没有改变。

可能出了什么问题?
我该如何调试这个?
谢谢您的帮助!

ubuntu websocket server jetty wss
1个回答
0
投票

听起来问题可能确实与网络配置有关,而不是与防火墙有关,因为您已经检查过这一点。您可以采取以下几个步骤来调试连接问题:

检查服务器配置:

  • 确保您的嵌入式 Jetty 服务器配置为接受 来自远程主机的连接。
  • 有时,服务器配置可能设置为仅接受 默认情况下来自本地主机的连接。

检查网络配置:

  • 通过检查确保可以从远程主机访问您的服务器 网络配置,例如 NAT 设置、路由器/防火墙 配置以及任何其他可能的网络级限制 防止外部连接。

查看绑定地址:

  • 验证您的 Jetty 服务器是否绑定到正确的网络 接口。
  • 它可能被配置为仅在本地主机(127.0.0.1)上侦听 而不是监听所有可用的网络接口
    (0.0.0.0).
  • 确保其配置为侦听 0.0.0.0 或特定 IP 您要用于外部的网络接口的地址 连接。

检查端口转发:

  • 如果您的服务器位于路由器或防火墙后面,请确保该端口 转发已正确设置以转发传入连接 端口 8734 到您服务器的内部 IP 地址。

检查服务器日志中的错误:

  • 仔细检查服务器日志中是否有任何可能导致错误或警告的错误或警告 指出连接失败的原因。
  • 即使您之前没有看到任何内容,也值得重新检查 任何新条目。

尝试不同的 WebSocket 客户端:

  • 使用不同的 WebSocket 客户端工具测试连接或 库以查看问题是否特定于 wscat。

检查 SSL/TLS 问题:

  • 如果您正在使用 SSL/TLS(这似乎是这种情况,因为您 连接到 wss://),确保您的服务器的 SSL/TLS 配置正确。
  • 此处的错误配置可能会导致连接失败,尤其是 从远程主机连接时。

检查 DNS 解析问题:

  • 确保主机名 myserver.com 解析为正确的 IP 来自远程客户端的地址。
  • DNS 解析问题可能会阻止客户端访问 服务器。
© www.soinside.com 2019 - 2024. All rights reserved.