为什么我会收到来自我访问的网站的未经请求的传入连接?

为什么我会收到来自我访问的网站的未经请求的传入连接?

这只发生在浏览时。我有一个路由器,它甚至不会阻止传入流量,所以我的计算机防火墙必须完成所有工作。在下面的日志中,我使用了 Firefox,但这种情况发生在任何浏览器中。在我的 Firefox 中,HTTP2、Web Worker、Service Worker、WebRTC 和许多其他东西都被禁用/阻止,所以我真的不明白服务器是如何设法向我的计算机请求未经请求的连接。浏览几个网站时都会发生这种情况,但不是全部。

Date    Time  Direction                  Process path                  Protocol    Source IP     Src Port     Dest. IP    Dest.Port  Action                                 Window title
17/04 16:23:59 | Out | C:\program files\mozilla firefox\firefox.exe    | TCP  | 10.0.0.3        | 50755 | 204.79.197.200  | 443   | Allowed | Startpage.com - The world's most private search engine - Mozilla Firefox
17/04 16:23:59 | In  | -                                               | TCP  | 204.79.197.200  | 443   | 10.0.0.3        | 50730 | Blocked | 
17/04 16:23:59 | In  | -                                               | TCP  | 204.79.197.200  | 443   | 10.0.0.3        | 50735 | Blocked | 
17/04 16:23:59 | In  | -                                               | TCP  | 204.79.197.200  | 443   | 10.0.0.3        | 50735 | Blocked | 
17/04 16:25:25 | Out | C:\program files\mozilla firefox\firefox.exe    | TCP  | 10.0.0.3        | 50766 | 37.252.238.25   | 443   | Allowed | unsolicited incoming connections at DuckDuckGo - Mozilla Firefox
17/04 16:25:25 | In  | -                                               | TCP  | 37.252.238.25   | 443   | 10.0.0.3        | 50766 | Blocked | 
17/04 16:29:50 | Out | C:\program files\mozilla firefox\firefox.exe    | TCP  | 10.0.0.3        | 50785 | 201.48.71.43    | 443   | Allowed | Bing - Mozilla Firefox
17/04 16:29:51 | Out | C:\program files\mozilla firefox\firefox.exe    | TCP  | 10.0.0.3        | 50786 | 201.48.71.43    | 443   | Allowed | Bing - Mozilla Firefox
17/04 16:29:51 | Out | C:\program files\mozilla firefox\firefox.exe    | TCP  | 10.0.0.3        | 50787 | 201.48.71.43    | 443   | Allowed | Bing - Mozilla Firefox
17/04 16:29:51 | Out | C:\program files\mozilla firefox\firefox.exe    | TCP  | 10.0.0.3        | 50788 | 201.48.71.43    | 443   | Allowed | Bing - Mozilla Firefox
17/04 16:29:54 | In  | -                                               | TCP  | 201.48.71.43    | 443   | 10.0.0.3        | 50788 | Blocked | 
17/04 17:03:12 | Out | C:\program files\mozilla firefox\firefox.exe    | TCP  | 10.0.0.3        | 50986 | 151.101.1.69    | 443   | Allowed | Super User - Mozilla Firefox
17/04 17:03:12 | Out | C:\program files\mozilla firefox\firefox.exe    | TCP  | 10.0.0.3        | 50987 | 151.101.1.69    | 443   | Allowed | Super User - Mozilla Firefox
17/04 17:03:18 | In  | -                                               | TCP  | 151.101.1.69    | 443   | 10.0.0.3        | 50986 | Blocked | 
17/04 17:03:18 | In  | -                                               | TCP  | 151.101.1.69    | 443   | 10.0.0.3        | 50987 | Blocked | 

还有许多其他示例,但它们都遵循相同的模式:我访问该网站,该网站会创建与特定 IP 的连接,然后来自同一 IP 会发生一个或多个未经请求的传入连接尝试。

谁知道这是怎么发生的、为什么发生以及如何发生?

答案1

不,我认为你的计算机的防火墙在欺骗你。

根据本地和远程端口的选择来判断,它可能看到属于现有出站连接的完全正常的响应数据包,但由于某种原因无法将它们与该连接关联起来。

要知道连接是传入还是传出,防火墙必须是有状态的——它会关注每个 TCP 数据包并记住相应的地址和端口对。例如,它知道所有具有本地地址(10.0.0.3,50766)和远程地址(37.252.238.25,443)的数据包都属于浏览器建立的出站连接。

当回复数据包到达时,防火墙会查看其连接表并发现地址对 (37.252.238.25, 443) 到 (10.0.0.3, 50766) 已经已知 – 该数据包不是新连接,它只是对现有(出站)连接的响应,需要被允许。

但是,如果状态信息由于某种原因而失去同步——例如,主机本身认为连接仍然打开,但防火墙已经忘记了它——那么它将无法轻松确定传入数据包的类型。在这种情况下,防火墙不再知道传入数据包属于最初出站的连接 - 因此最终将其与单独的“入站”条目相关联。

例如,一个可能的原因是您的计算机刚刚发送“连接关闭”FIN 数据包,但远程服务器已还没收到它(因为数据传输不是即时的),并且仍然愉快地向您发送数据包。如果您的防火墙在看到传出的 FIN 后立即忘记连接,那么它当然无法识别那些传入的数据包仍然属于同一连接。(半封闭连接在 TCP 中有效,但我不会让它通过防火墙而无法意识到这一点。)

当防火墙的状态限制非常小时,有时也会发生这种情况,例如,我见过家用路由器无法同时跟踪超过 50 或 100 个状态(不仅包括 TCP 连接,还包括 UDP 流 - 例如,通过 UDP 的每个 DNS 请求都会产生一个新状态,以便允许响应通过)。同样,一些防火墙的状态有效期非常短 - 它们可能会在 TCP 连接空闲一两分钟后就忘记它们,尽管连接保持空闲状态的时间比这长得多是完全正常的。

(有时防火墙过于急于拒绝两台主机都认为正常的事情。例如,当浏览器开始尝试 TCP Fast Open 时,我当时 ISP 提供的家庭路由器阻止了全部TFO 数据包基于其“SYN 数据包不能包含数据”的信念,并每次在其日志中大喊“入侵警报”。我相信这是 QUIC 作为独立于 TCP 的东西进行开发的很大一部分原因。)

相关内容