这是我的问题:
当连接到我的 FIOS ISP(没有路由器,即直接连接到我的 FIOS 调制解调器)时,我获得的A
DNS 记录与连接到其他 ISP/网络时不同。
- 在我的 FIOS ISP 上我运行:
nslookup netflix.com
- 没有指定 DNS,并获得:
Non-authoritative answer:
Name: netflix.com
Addresses: 2a01:578:3::22fa:2993
2a01:578:3::3413:2893
2a01:578:3::341f:91b7
2a01:578:3::34d1:eb8d
2a01:578:3::341e:2dc6
2a01:578:3::36ab:7445
2a01:578:3::34d2:745
2a01:578:3::341f:b664
54.77.143.196
52.208.135.54
34.252.179.162
52.209.79.186
52.17.227.174
52.51.252.111
54.171.187.60
52.30.103.23
- 再次,在我的 FIOS ISP 上,我运行:指定 DNS
nslookup netflix.com 85.203.37.1
解析器85.203.37.1
,我得到与 (1) 完全相同的结果:
Non-authoritative answer:
Name: netflix.com
Addresses: 2a01:578:3::22fa:2993
2a01:578:3::3413:2893
2a01:578:3::341f:91b7
2a01:578:3::34d1:eb8d
2a01:578:3::341e:2dc6
2a01:578:3::36ab:7445
2a01:578:3::34d2:745
2a01:578:3::341f:b664
54.77.143.196
52.208.135.54
34.252.179.162
52.209.79.186
52.17.227.174
52.51.252.111
54.171.187.60
52.30.103.23
- 然而,现在让我完全困惑的是,如果我
nslookup netflix.com 85.203.37.1
使用85.203.37.1
指定的 DNS 解析器运行,任何其他网络,即通过 VPN,或在移动设备等上。我回来
Non-authoritative answer:
Name: netflix.com
Addresses: 198.255.83.3
107.182.237.252
(3)恰好是我期望得到的响应,我不明白的是,当连接到(2)中的 FIOS ISP 时,几乎就像我没有指定 DNS 解析器一样,即使我已经指定了,并且 DNS 记录与A
我的 ISP 的 DNS 返回的记录完全相同。
对我来说,真正奇怪的是,这看起来像是某种 DNS 拦截或劫持。在谷歌上搜索了很多有关 DNS 拦截的信息后,我还是不清楚这是否真的发生了。
令人恼火的是,我找不到一个一致的测试可以始终证明 DNS 请求被拦截,我猜是因为有太多不同的方法来拦截或重定向 DNS 请求。我所做的一些“测试”如下:
- https://padlock.argh.in/2019/04/28/sky-dns-interception.html
- https://superuser.com/a/1348765/450105
- https://labs.ripe.net/Members/babak_farrokhi/is-your-isp-hijacking-your-dns-traffic
在所有这些测试中,我似乎没有得到任何拦截正在发生结果。
我尝试尽可能多地了解 DNS 拦截的具体细节,但它太复杂了,我不能说我理解它。但是,根据我收集的信息,我能想到的唯一解释是我的 FIOS ISP 以某种方式重写了A
DNS 记录。
这是一个合理的结论吗,或者我遗漏了什么?
我已经声明我可能会发疯,因为这个问题正在慢慢地让我发疯。
答案1
您并没有发疯,您的 ISP 也没有篡改您的 DNS 结果。现代互联网只是比您想象的要复杂和虚拟化得多。
高流量网站使用内容分发网络 (CDN)。CDN 的服务器分布在互联网的“边缘”;也就是说,靠近消费者连接到互联网的地方。这样,当您从 Netflix 流式传输某些内容时,它不是来自美国加利福尼亚州洛斯加托斯的 Netflix 总部,而是来自连接到您当地 ISP 网络基础设施的 CDN“边缘节点”服务器。这样,响应时间、带宽和可靠性都比从很远的地方流式传输要好得多。
当您对 CDN 托管的域名执行 DNS 查询时,CDN 的 DNS 服务器会根据您的 DNS 查询所来自的 IP 地址,使用指向距离您最近的边缘节点的 A 和 AAAA 记录来回答您。
好的,但大多数 DNS 解析服务器在为您递归解析 DNS 查询时不会泄露您的客户端 IP 地址。那么为什么您会得到不同的答案来自同一 DNS 服务器当您从不同的网络连接时?
嗯,就您而言,您使用的 DNS 服务器 (85.203.37.1) 似乎是通过“自带 IP”(BYOIP) 安排托管在 IBM 云托管中,因此即使您到 85.203.37.1 的流量实际上也会根据流量来自哪个网络而流向不同的物理服务器。因此,即使该 IP 地址来自分配给 falco-networks.com 的网络块,Falco 似乎已安排 IBM “拥有”到该网络块的路由,因此到该 IP 地址的流量将被路由到 IBM 全球网络的最近入口点,然后 IBM 将其路由到最近的边缘节点。
因此,当我跟踪路由到 85.203.37.1 时,它会终止于我自己在美国的大都市地区,即使该网络块是 RIPE(欧洲区域互联网注册中心)IPv4 分配的一部分,即使 Falco 似乎是一家来自荷兰的公司。如果没有通过 CDN 和云服务进行大量网络虚拟化,我永远不会指望跟踪路由会终止于欧洲以外的任何地方。我怀疑当您跟踪路由到它时,它会终止于荷兰的某个地方(我猜您在荷兰)。
如果您想使用自己的跟踪路由和 whois 查询来再次核实我的说法,请注意,域名“networklayer.com”、“softlayer.net”和“sl-reverse.com”似乎都归 IBM 所有,并用作其云基础设施的一部分。因此,如果您在最后一个或倒数第二个命名跳跃中看到这些名称中的任何一个,则强烈表明您的流量已在此时进入 IBM 的云服务网络。