【网络基础-05】DNS与CDN

DNS与CDN

DNS 是互联网的「电话簿」,把人类可读的域名翻译成机器能识别的 IP。CDN 则是互联网的「就近快递仓」,把内容缓存到离用户最近的节点。二者结合构成了现代 Web 加速与防护的基础。在网络安全中解析DNS 全流程、记录类型、安全威胁。


一、DNS

1.1 什么是 DNS、为什么需要 DNS

DNS(Domain Name System,域名系统)是互联网的「电话簿」,负责把人类可读的域名(如 www.example.com)翻译成机器能识别的 IP 地址(如 93.184.216.34)。

为什么需要 DNS:人记不住一串数字 IP,但记得住域名;机器只能用 IP 路由,不能用域名。DNS 就是这个翻译官。没有 DNS,你访问任何网站都得背 IP。

DNS 工作在应用层,默认基于 UDP 端口 53(响应小、快;区域传送和超大响应用 TCP)。UDP 适合 DNS------查询报文小,丢了重发即可,建 TCP 连接太亏。

1.2 DNS 域名层次结构

域名呈树状结构

markdown 复制代码
                  根域 (.)
                   │
        ┌──────────┼──────────┐
       com        org         cn         ← 顶级域 TLD
        │          │          │
   example.com  example.org  example.cn  ← 二级域
        │
   www.example.com                       ← 三级域/主机
  • 根域.):通常省略不写,完整域名其实是 www.example.com.(最后那个点);
  • 顶级域 TLD (Top-Level Domain):.com.org.cn.net 等;
  • 二级域example.com,通常是企业注册的域名;
  • 三级域/主机www.example.commail.example.com

1.3 DNS 解析流程详解(递归 + 迭代)

当浏览器请求 www.example.com 时,完整解析流程如下:

css 复制代码
① 浏览器缓存 → 操作系统 hosts 文件 → 本地 DNS 缓存
                          │ 未命中
                          ▼
② 客户端向【本地域名服务器】(递归解析器,通常是 ISP 或 8.8.8.8)发起查询
                          │
                          ▼
③ 本地 DNS → 根域名服务器(迭代查询)
            根返回 .com TLD 服务器的 IP
                          │
                          ▼
④ 本地 DNS → .com 顶级域名服务器
            返回 example.com 权威服务器的 IP
                          │
                          ▼
⑤ 本地 DNS → example.com 权威服务器
            返回 www.example.com 的 A 记录(IP)
                          │
                          ▼
⑥ 本地 DNS 把结果缓存(按 TTL),返回给客户端
⑦ 客户端拿到 IP,发起 TCP 连接

两种查询方式

  • 递归查询:客户端只发一次请求,本地 DNS 负责「查到底」,最终返回最终结果。客户端 → 本地 DNS 就是递归(「我帮你查到底」);
  • 迭代查询:本地 DNS 依次向根、TLD、权威查询,每次得到「下一跳地址」自己去问,直到拿到结果。本地 DNS → 根/TLD/权威就是迭代(「你自己去问」)。

类比:递归像你找客服,客服帮你把所有事办完再回你;迭代像客服告诉你「这事归 A 部门」,你得自己跑去 A 部门,A 部门又说「归 B 部门」,你再跑去 B......

缓存层级 :浏览器缓存 → OS 缓存(hosts 优先)→ 本地 DNS 缓存 → 各级权威。命中缓存只需几毫秒,全量解析可能上百毫秒。每条记录都有 TTL(Time To Live),过期前直接用缓存,过期后重新查。

1.4 DNS 记录类型

类型 作用 示例
A 域名 → IPv4 地址 www IN A 1.2.3.4
AAAA 域名 → IPv6 地址 www IN AAAA 2001:db8::1
CNAME 域名别名,指向另一个域名 cdn IN CNAME cdn.cloudflare.net
MX 邮件服务器 IN MX 10 mail.example.com
TXT 任意文本,常用于 SPF、DKIM、域名所有权验证 IN TXT "v=spf1 include:_spf.google.com ~all"
NS 该域名由哪些权威 NS 解析 IN NS ns1.example.com
SOA 区域授权起始,含管理信息 含主 NS、管理员邮箱、序列号、刷新间隔
PTR IP → 域名(反向解析) 4.3.2.1.in-addr.arpa IN PTR www.example.com
SRV 服务记录,指明服务端口 _sip._tcp IN SRV 10 60 5060 sip.example.com
CAA 指定允许哪些 CA 给此域名签证书 IN CAA 0 issue "letsencrypt.org"

安全常用

  • 查 A 记录看 IP(nslookupdig);
  • 查 CNAME 链判断是否接入 CDN;
  • 查 TXT 记录找 SPF/DKIM,或发现域名所有权验证痕迹;
  • 查 PTR 反查域名(IP 反查)。

1.5 DNS 安全威胁

  1. DNS 劫持 :篡改 DNS 响应(路由器、ISP、恶意软件、注册商账号被盗),把用户引到假站点。例如把 bank.com 解析到攻击者 IP;
  2. DNS 污染(DNS 投毒) :在用户请求 DNS 时,攻击者抢先注入伪造响应,让缓存服务器记下错误记录(GFW 的原理之一)。著名的「519 断网事件」就是 DNSPod 遭 DDoS 后引发的连锁故障,导致全国大量网站无法解析;
  3. DNS 隧道 :把数据编码进 DNS 查询子域名,绕过防火墙(如 data.evil.com),常被 C2 通信、数据外发利用。特征:异常长的子域名、高频查询;
  4. DNS 放大攻击 :利用开放 DNS 解析器反射 UDP 大响应,做 DDoS 放大。攻击者伪造源 IP(受害者)向开放解析器查 ANY 记录,解析器返回大响应打到受害者;
  5. DNS 重绑定攻击(DNS Rebinding) :攻击者控制的域名先解析到攻击者 IP(同源策略放行 JS),短 TTL 过期后重新解析到内网 IP(如 127.0.0.1、192.168.x.x),浏览器认为还是同源,JS 就能访问内网服务------绕过同源策略实现内网穿透。

防御

  • DNSSEC:对 DNS 记录做数字签名,防篡改、防伪造(但不加密查询内容);
  • DoH/DoT(DNS over HTTPS/TLS):加密 DNS 查询,防窃听和污染;
  • 内网 DNS 限制递归来源(不开放给公网);
  • 监控异常长子域名(隧道特征)、高频查询;
  • 浏览器对短 TTL 域名做 pinning,防重绑定。

二、CDN

2.1 什么是 CDN

CDN(Content Delivery Network,内容分发网络)是一组分布在全球的边缘节点服务器,把源站内容缓存到离用户最近的节点,让用户从就近节点取数据,从而加速访问、减轻源站压力。

类比:你在全国连锁奶茶店买奶茶,不用每次从总部发货,就近门店就有。CDN 节点就是这些「就近门店」,源站是「总部」。

2.2 CDN 工作原理

objectivec 复制代码
① 网站管理员把域名(如 cdn.example.com)CNAME 到 CDN 厂商域名
   cdn.example.com → CNAME → xxx.cloudcdn.net

② 用户访问 cdn.example.com 时,DNS 解析根据用户 IP 返回【最近的边缘节点 IP】(智能调度)

③ 边缘节点检查缓存:
   命中 → 直接返回缓存内容
   未命中 → 回源取数据,缓存后返回

④ 后续相同请求都从边缘节点响应

CDN 的好处:

  • 加速:就近访问,降低延迟;
  • 抗 DDoS:流量打到 CDN 节点,源站受保护;
  • 隐藏源站 IP:用户只能看到 CDN 节点 IP,看不到真实服务器 IP;
  • 节省带宽:缓存命中不回源,源站带宽压力小。

2.3 CDN 如何隐藏真实 IP

用户访问域名时,DNS 返回的是 CDN 边缘节点 IP,而非源站 IP。所有流量先到 CDN,CDN 再回源。攻击者直接 ping 域名只能看到 CDN 节点,无法直接拿到源站 IP。这就是 CDN 的「隐藏源站」效果------但也并非无懈可击。


三、绕过CDN 暴露真实 IP 的风险点

历史 DNS 记录暴露:早期网站可能直接把 A 记录指向源站,后来才上 CDN。历史解析记录会暴露曾经的源站 IP。

子域名解析暴露 :主站上了 CDN,但子站(如 mail.example.comtest.example.comadmin.example.comapi.example.com)可能没上,直接解析到源站。

邮件服务器暴露 :让网站发一封邮件(注册、找回密码、订阅),查看邮件原始头中的 Received 字段,里面的 IP 往往就是源站(邮件服务器常和 Web 同机或同网段)。

SSL 证书查询暴露:源站若部署了 SSL 证书,证书里会绑定域名。通过反查某 IP 上有哪些证书,证书包含的域名能定位源站。

被动 DNS(Passive DNS)暴露:被动收集全球 DNS 解析历史,找出该域名曾经解析过的所有 IP。即使现在上了 CDN,历史记录里仍有源站 IP。

网站漏洞泄露:利用网站自身的漏洞或信息泄露页面,让服务器主动暴露自己的 IP。

  • SSRF:让服务器请求攻击者控制的地址,攻击者收到请求看源 IP;
  • phpinfo() :PHP 信息页暴露 SERVER_ADDR(源站内网/真实 IP);
  • probe 文件php探针tz.phpprobe.php 等环境检测脚本;
  • 配置文件泄露.envconfig.json 等含数据库/服务器 IP;
  • 错误页:某些报错页会暴露服务器内网 IP。

F5 LTM 解码暴露 :F5 BIG-IP 负载均衡器会在 Cookie 里编码客户端真实 IP(或内网 IP)。F5 的 BIGipServer Cookie 用一种简单的 XOR+轮转编码,可解码出内网 IP。

APP网络请求暴露:网站上了 CDN,但 APP 可能直连真实 IP(开发者图省事或 CDN 配置遗漏)。抓 APP 的网络请求,可能直接看到源站 IP。

国外节点访问暴露:部分 CDN 只对国内加速,国外访问可能回源或解析到真实 IP。

HTTP访问暴露 :某些 CDN 只代理 HTTPS,用 http:// 直接访问可能拿到源站。

favicon hash暴露:用 favicon 图标的 hash 在 fofa 等搜索引擎反查同图标站点,可能找到未上 CDN 的同源站。


相关推荐
小新讲网安1 天前
PowerShell安全攻防实战:从渗透利用到检测防御全攻略
安全·web安全·网络安全·黑客·自动化·sqlmap·网安
小新讲网安3 天前
漏洞复现实战大全:CVE漏洞环境搭建与利用全流程详解
安全·黑客·漏洞·nmap·漏洞复现·漏洞检测·虚拟机靶场
网络研究院14 天前
LastPass 发布紧急安全预警:针对主密码的活跃网络钓鱼攻击正在进行中
网络·安全·黑客·攻击·漏洞·风险·钓鱼
小小小小钰儿1 个月前
网络安全名词术语!
安全·web安全·计算机·网络安全·黑客·编程
星期一研究室1 个月前
你的飞书,终于长出了手脚 —— Codex × 飞书Cli实战指南
人工智能·黑客·openai
星期一研究室1 个月前
创作分发这件事,来看看Codex是怎么做的
人工智能·黑客·微信
Lugas1 个月前
浏览器为什么要如此严格地限制跨域请求?
前端·黑客·浏览器
网络研究院2 个月前
黑客利用人工智能的5种方式(以及如何防御)
人工智能·黑客·攻击·恶意软件·钓鱼邮件
牛奶2 个月前
黑客是怎么看到你数据的?
前端·安全·黑客