防火墙阻止 websocket

防火墙阻止 websocket

当我使用 websocket 服务器(节点上的 socket.io)时,防火墙 kaspersky/avast 会阻止消息。

我们能做什么?

答案1

我可以 100% 地告诉你,例如 Avast 不仅会阻止 websockets,而且从我的 Socket.IO 应用程序中看到,它还会阻止 xhr-polling 和其他东西。

这简直令人无法接受,我甚至在 80 端口上测试过,但还是不行。真是个糟糕的软件。

编辑这是防病毒软件阻止的端口列表(逝世于 2017-07-20)

答案2

防火墙的第一条规则是:它无法阻止它无法感知到的东西。

防火墙是否允许 TLS?如果是,则通过 WSS 而不是 WS 提供内容。

  • 通常,WSS 客户端会向您打开 TLS 连接(来源)并向您发送此内容:

    GET /demo HTTP/1.1
    Upgrade: WebSocket
    Connection: Upgrade
    Host: example.com
    Origin: http://example.com
    WebSocket-Protocol: sample 
    

    防火墙无法检测到它,因为它是通过 TLS 进行的。

  • HTTP-CONNECT-WSS 客户端将向您发送以下信息:

    CONNECT example.com:443 HTTP/1.1
    Host: example.com 
    

    防火墙将其视为另一个 HTTP-CONNECT-TLS 连接。(来源


附注:由于无法识别 websocket 的中间代理,websocket 可能会失败缓冲连接即使防火墙没有阻止它。HTTP“彗星”流也是如此。

答案3

如果可能的话,您可以尝试使用端口 443(用于 https)。

答案4

许多 ISP 公司封锁 80 端口,以阻止其客户在家用电脑上托管网络服务器。

解除 ISP 对 80 端口的封锁可能超出了你的能力范围。

此外,就我而言,Avast 不是防火墙。

相关内容