我的 ISP 使用什么技术来审查网络流量?

网络工程 tcp 网络服务商
2022-02-22 05:56:41

BBC 新闻在我居住的国家受到审查。出于兴趣,我决定简要介绍一下这是如何完成的。

首先,他们显然是 MITM DNS - 如果我在 Google 上查找 BBC 域,8.8.8.8我会得到:

block. 900 IN SOA <removed>. please_set_email.absolutely.nowhere. 164 10800 3600 2419200 900

(我有<removed>部分记录,因为它明确命名了我所在的国家)。

无论如何,我只需切换到 Cloudflare 就可以解决这个问题1.1.1.1那么让我们看看当我们尝试连接时会发生什么(tcpdump 输出):

14:06:58.458843 IP my-hostname.54110 > 151.101.76.81.https: Flags [S], seq 1689507390, win 29200, options [mss 1460,sackOK,TS val 3566331804 ecr 0,nop,wscale 7], length 0
14:06:58.510201 IP 151.101.76.81.https > my-hostname.54110: Flags [S.], seq 1058793439, ack 1689507391, win 27800, options [mss 1402,sackOK,TS val 1280682927 ecr 3566331804,nop,wscale 9], length 0
14:06:58.510300 IP my-hostname.54110 > 151.101.76.81.https: Flags [.], ack 1, win 229, options [nop,nop,TS val 3566331855 ecr 1280682927], length 0
14:06:58.514567 IP my-hostname.54110 > 151.101.76.81.https: Flags [P.], seq 1:518, ack 1, win 229, options [nop,nop,TS val 3566331860 ecr 1280682927], length 517
14:06:58.767916 IP my-hostname.54110 > 151.101.76.81.https: Flags [P.], seq 1:518, ack 1, win 229, options [nop,nop,TS val 3566332113 ecr 1280682927], length 517
14:06:59.023960 IP my-hostname.54110 > 151.101.76.81.https: Flags [P.], seq 1:518, ack 1, win 229, options [nop,nop,TS val 3566332369 ecr 1280682927], length 517
14:06:59.533120 IP 151.101.76.81.https > my-hostname.54110: Flags [S.], seq 1058793439, ack 1689507391, win 27800, options [mss 1402,sackOK,TS val 1280683184 ecr 3566331855,nop,wscale 9], length 0

在我相对不专业的眼中,内容如下:

  1. 我发送 SYN
  2. BBC 发送 SYN,ACK
  3. 我发送 ACK
  4. 我开始尝试设置 TLS,没有得到响应
  5. BBC 重新传输其 SYN、ACK
  6. (我没有再包括任何痕迹,但 3-5 然后重复一段时间)

所以,显然我在第 3 部分中的 ACK 没有通过。

所以我只是好奇——为什么 ISP 会允许 SYN 数据包通过,但不允许其他数据包通过?为什么不直接阻止所有 IP 流量到给定地址?他们是否有可能只是专门阻止了我在第 3 部分中的 ACK(我无法知道我在第 4 部分中的 TLS hello 是否通过了,对吗?)?我们还能从中学到什么吗?

1个回答

通常,您的 ISP 将使用 DPI(深度数据包检测)技术、检查 HTTP.Host 参数、检查目标 IP、检查 SSL.Server 名称等等。