WebSocket-Sharp 不响应 public IP 地址

WebSocket-Sharp doesn't respond to public IP address

我在 public 互联网 IP 上托管 WebSocket-Sharp 时遇到问题。在本地它工作正常。 此问题发生在 Windows 和 Linux 上。 我没有收到超时或 HTTP 状态代码,页面立即阻塞。 我 99% 确定我的端口转发设置正确;我试过 Android 调制解调器、VPN 和常规 NAT 路由器设置。

我试过以下组合:

192.168.1.2:80 8080 5000 39393

0.0.0.0:....

public IP: ....

好的,假设您的服务器 public IP 地址是 Linux:

  1. 检查正在侦听的端口以及正在侦听的程序
netstat -tulpn
  1. 检查提供商和服务器中的防火墙规则
sudo ufw status
  1. 查看连接是否到达您的服务器
sudo tcpdump

您可以过滤原始 Ip 的端口(如果您使用不同 Ip 的代理)。

sudo tcpdump | grep "80\|123.45.67.89"

这是查看数据包是否进入服务器的唯一方法。

如果您使用 Docker,请告诉我,因为我认为工作有点不同。

  1. 你可以创建一个隧道,如果它是本地的就试试
ssh -L 80:123.45.67.89:80 ubuntu@yourserver.com

干杯

问题出在随 WebsScketSharp 提供的 HttpServer 中。纯 websocket 变体 (WebSocketServer.cs),而不是具有 Get 功能的 HttpServer 选项,具有将 AllowForwardedRequest 设置为 true 的选项,因此可以从非本地主机地址访问。 HttpServer class 不支持这个。 这在一定程度上是一种解决方案,因为我放弃了常规的 GET 功能,但这对我来说很好。