Learn

284 篇文章分类:全部
网络

什么是 CDN

打开网站时,数据并不总是只从运营方的服务器送达。

图片、CSS、JavaScript、视频、字体、下载文件等,有时会通过称为 CDN 的机制分发。

CDN 是 Content Delivery Network 的缩写。

简单来说,它是把网站数据放在多个地点,并从靠近使用者或不容易拥塞的地点分发的机制。

理解 CDN 后就会知道,即使说“访问网站”,实际也可能涉及网站运营者的服务器、CDN、DNS、TLS 终止、日志、缓存等多个要素。

这在思考匿名性时也很重要。

因为 CDN 可能作为网站侧的一部分接收通信,并处理访问源 IP 地址、请求、、User-Agent、访问时刻等。

本文将整理 CDN 的基本、什么会变快、日志会留在哪里,以及匿名性中应该看什么。

什么是 CDN

CDN 是用于高效分发 Web 内容的网络。

网站原本的服务器有时称为源服务器。使用 CDN 的结构中,浏览器不一定每次都直接访问源服务器,而是可能经由 CDN 的服务器接收数据。

要素作用说明
使用者的浏览器发送请求请求页面、图片、CSS、JavaScript 等
CDN中继分发从靠近使用者的地点返回数据
源服务器持有原始数据网站运营者侧的原始服务器
缓存临时保存把常用数据保存在 CDN 侧
DNS决定连接目标有时会把访问导向 CDN 侧服务器

CDN 不只是“加速装置”。

在现代 Web 中,它可能承担分发、负载均衡、DDoS 防护、TLS 终止、WAF、图片优化、Bot 对策、日志分析等多个角色。

为什么使用 CDN

使用 CDN 的主要理由是速度、稳定性、负载分散和攻击防护。

如果使用者在日本,而源服务器在遥远的国家,每次都去远处的服务器取数据就会变慢。CDN 会把数据放在世界各地的多个节点,从靠近使用者的节点返回。

目的CDN 中发生的事使用者看到的效果
加速从近处节点返回页面显示变快
负载分散由多个节点处理更能承受访问集中
缓存保存相同图片或文件减少源服务器负载
DDoS 防护在 CDN 侧承接攻击流量网站更不容易宕机
TLS 终止在 CDN 侧处理 HTTPS 连接证书管理和分发更高效

大型网站、新闻网站、视频网站、电商网站、SaaS、应用 API 中,使用 CDN 很常见。

从使用者看来,只是在普通地访问网站。

但是在背后,有时作出响应的不是源服务器,而是 CDN 的节点。

CDN 和缓存

CDN 的核心机制之一是缓存。

缓存是指把取得过一次的数据临时保存起来,以后返回保存数据的机制。

例如同一个 logo 图片、CSS、JavaScript、字体、公开图片等,会向许多使用者返回相同内容。这类数据比较容易保存在 CDN 侧。

数据容易被缓存的程度注意点
图片旧图片可能暂时残留
CSS更新反映可能出现时间差
JavaScript版本管理很重要
视频分发量大,因此 CDN 效果明显
登录后页面需要谨慎处理个人化内容
API 响应取决于设计含认证信息或个人信息时要注意

从匿名性和隐私的角度看,缓存很方便,但也有注意点。

旧图片或页面可能残留在 CDN 侧。即使网站侧删除了内容,在 CDN 缓存更新之前也可能仍然可见。

另外,如果网站设计出错,也存在把本来不该缓存的个人化数据保存到 CDN 的危险。

CDN 和 DNS

使用 CDN 的网站中,DNS 的结果可能指向 CDN 侧。

当使用者访问某个域名时,DNS 有时不会返回源服务器,而是返回用于前往 CDN 边缘服务器的信息。

边缘服务器是 CDN 侧在靠近使用者的位置接收请求的服务器。

阶段发生的事
1使用者访问域名
2DNS 返回 CDN 侧的连接目标
3浏览器连接 CDN 的边缘服务器
4CDN 检查缓存
5如果有缓存,CDN 返回数据
6如果没有缓存,CDN 去源服务器取得数据

因此,即使是同一个域名,不同地区或不同网络也可能返回不同的 IP 地址。

这并不是异常。

在 CDN 和负载均衡中,连接目标会根据使用者位置、拥塞状况、故障状况而变化。

CDN 和 TLS 终止

HTTPS 通信会使用 TLS。

在使用 CDN 的结构中,从浏览器看,HTTPS 的连接目标有时会是 CDN。

这时,经过 TLS 加密的通信会在 CDN 处先被解密,CDN 处理请求。之后,CDN 再通过另一段通信转发到源服务器。

区间通信注意点
浏览器到 CDN受 HTTPS 保护从使用者看,连接目标是 CDN 侧
CDN 内部CDN 服务商的管理范围CDN 侧处理请求
CDN 到源服务器取决于配置,可能是 HTTPS网站运营者的设置很重要
源服务器处理原始数据有时看起来是来自 CDN 的连接

这不是说 HTTPS 没有意义。

HTTPS 会保护浏览器与连接目标之间的通信。不过,如果 CDN 成为 TLS 终止点,CDN 就处在处理通信的位置。

在匿名性中,需要把 CDN 也看作“网站侧包含的观察点”。

CDN 能看到什么

CDN 有时被放在网站的前段。

这种情况下,CDN 会接收来自使用者的请求。也就是说,CDN 可能处理连接源 IP 地址、访问时刻、User-Agent、请求目标、Cookie、HTTP 头等。

信息CDN 可能处理匿名性上的意义
访问源 IP 地址成为连接源网络的线索
访问时刻成为与其他日志按时间照合的轴
URL 路径可以知道请求了哪个页面或 API
User-Agent成为浏览器和 OS 的线索
Cookie取决于设计与登录状态和标识符有关
通信量可能看出文件发送或视频观看倾向

这并不表示 CDN 服务商一定会长期保存所有信息。

日志的保存范围、保存期间、访问权限、使用目的,会因 CDN 服务商和网站运营者的设置而变化。

重要的是,CDN 并不是通信路径上一团透明的空气。

CDN 是作为网站侧基础设施接收通信的存在。

Web 服务器看到的 IP 会改变

使用 CDN 后,源服务器看到的连接源 IP 地址可能会改变。

从源服务器看,直接连接来源不是使用者,而是 CDN 的 IP 地址。因此,网站侧可能通过 X-Forwarded-ForCF-Connecting-IP 这样的头,或通过 CDN 侧日志来处理原始客户端 IP。

观察位置看到的 IP说明
CDN使用者的访问源 IP直接接收来自使用者的请求
源服务器CDN 的 IP直接连接来源是 CDN
应用取决于设置有时通过头处理原始 IP
访问日志取决于设计可能同时留在 CDN 侧和源服务器侧

查看日志时,需要确认“这是哪个位置的日志”。

CDN 侧日志、负载均衡器日志、源服务器日志、应用日志中,可见的信息并不相同。

CDN 不是匿名化技术

CDN 是让网站分发更快、更稳定、更容易防御的机制。

它不是为了让使用者匿名的机制。

从使用者角度看,CDN 可能让连接目标 IP 地址变成 CDN,而不是源服务器。但是,这并不保证使用者的匿名性。

CDN 是网站侧的基础设施。

如果连接目标网站、CDN、应用、访问分析、广告标签、认证基础设施组合在一起,使用者的访问会在各种位置被处理。

误解实际情况
经过 CDN 就会匿名CDN 是网站侧分发基础设施,不是匿名化技术
看不到源服务器 IP 就安全使用者的信息仍会在 CDN 或网站侧被处理
HTTPS 下 CDN 也看不到如果 TLS 终止在 CDN,CDN 会处理请求
缓存就没有日志CDN 侧可能保留访问日志

思考匿名性时,应把 CDN 作为“连接目标侧的一部分”来处理。

查看 CDN 的官方信息

学习 CDN 时,CDN 服务商的官方说明也可以作为参考。

Cloudflare 是提供 CDN、DDoS 防护、WAF、DNS 等服务的代表性服务商之一。可以通过官方学习页面确认 CDN 是做什么的机制。

URL : https://www.cloudflare.com/learning/cdn/what-is-a-cdn/

不过,这并不是说使用特定 CDN 服务商就安全。

CDN 是网站运营者侧的基础设施,不是完成使用者匿名性的工具。官方信息适合作为理解机制的参考来阅读。

思考匿名性时的确认点

访问使用 CDN 的网站时,使用者侧无法完全了解细节 CDN 结构。

但是,可以整理应当思考的视角。

视角确认内容
连接目标不只是网站,CDN 也可能参与
日志分开考虑 CDN 侧、源服务器侧、应用侧的日志
IP 地址连接目标 IP 是 CDN 也不等于匿名化
Cookie即使经过 CDN,Cookie 和登录状态仍会存在
TLS注意 TLS 在哪里终止
删除CDN 缓存中可能残留旧数据

CDN 是支撑现代 Web 的重要机制。

同时,在匿名性中,它也是思考“通信在哪里被处理”的重要观察点。

总结

CDN 是把网站数据放在多个地点,并从靠近使用者的地点高效分发的机制。

使用 CDN 后,页面显示会变快,更能承受访问集中和攻击,并能减少源服务器负载。

另一方面,CDN 会作为网站侧基础设施接收请求。

它可能处理访问源 IP 地址、访问时刻、URL、User-Agent、Cookie、通信量等。

CDN 不是匿名化技术。

思考匿名性时,需要把 CDN 理解为“网站侧的中继和处理地点”,并分开考虑连接目标、日志、TLS 终止、缓存和 Cookie。

相关工具

WebRTC Leak Test

BrowserLeaks WebRTC

与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。

列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。

URL : https://browserleaks.com/webrtc

打开外部网站
Search result removal

Google Search removal tools

与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。

列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。

URL : https://support.google.com/websearch/answer/3143948

打开外部网站

相关文章