Appearance
CDN 与 IP 定位详解
本文介绍 CDN 工作原理、CDN IP 特征识别以及 IP 地理位置数据库的使用。
目录
CDN 工作原理
CDN 概念
CDN(Content Delivery Network)内容分发网络,通过全球分布的边缘节点缓存内容,使用户从最近的节点获取数据。
CDN 工作流程
┌────────┐ ┌────────────┐
│ 用户 │ │ 源站 │
│ │ │ (源服务器) │
└───┬────┘ └─────┬──────┘
│ │
│ 1. DNS 智能解析 │
▼ │
┌────────────┐ │
│ DNS 调度系统│ │
└────┬───────┘ │
│ 2. 返回最近边缘节点 IP │
▼ │
┌────────────┐ 4. 缓存未命中 ┌────────────┐
│ 边缘节点 A │◄──────────────────►│ 边缘节点 B │
│ (北京) │ │ (上海) │
└────────────┘ └────────────┘CDN 优势
| 优势 | 说明 |
|---|---|
| 加速访问 | 就近获取,减少延迟 |
| 负载均衡 | 分担源站压力 |
| 抵御 DDoS | 吸收恶意流量 |
| 可用性 | 多节点冗余 |
| 成本优化 | 减少带宽费用 |
CDN 缓存策略
Cache-Control: max-age=3600
ETag: "abc123"
Last-Modified: Mon, 01 Jan 2024 00:00:00 GMTCDN IP 特征识别
全球主要 CDN IP 段
| CDN | IP 特征 | 示例范围 |
|---|---|---|
| Cloudflare | 104.x.x.x - 172.x.x.x | 104.16.0.0/12 |
| CloudFront | 52.x.x.x - 54.x.x.x, 99.x.x.x | 52.84.0.0/15 |
| Akamai | 23.x.x.x, 88.x.x.x, 96.x.x.x | 23.32.0.0/11 |
| Fastly | 151.101.x.x, 199.232.x.x | 151.101.0.0/16 |
| Google Cloud | 34.x.x.x - 35.x.x.x, 74.x.x.x | 34.0.0.0/8 |
中国 CDN IP 段
| CDN | IP 特征 | 示例范围 |
|---|---|---|
| 阿里云 CDN | 39.x.x.x, 47.x.x.x | 39.96.0.0/13 |
| 腾讯云 CDN | 119.x.x.x, 182.x.x.x | 119.28.0.0/15 |
| 百度云加速 | 111.x.x.x, 180.x.x.x | 111.0.0.0/12 |
| 字节跳动 CDN | 49.x.x.x, 111.x.x.x | 49.12.0.0/14 |
识别 CDN IP
bash
# 使用 curl 查看 IP
curl -I https://example.com
# 查看响应头
# Via: 1.1 实际节点
# X-Cache: HIT/MISS
# Server: es-phase1
# 使用 bgpview 查询 IP ASN
curl https://api.bgpview.io/ip/104.21.0.1CDN IP 识别技巧
Cloudflare 的 IP 通常在 104.16.0.0 - 172.20.0.0 范围内,且 AS13335 是 Cloudflare 的 ASN。
IP 地理位置
IP 定位原理
IP 地理位置通过数据库将 IP 地址映射到地理位置信息。
IP 地址 → IP 数据库查询 → 地理位置
├─ 国家
├─ 省份/州
├─ 城市
├─ 经纬度
└─ 运营商定位精度
| 精度 | 说明 | 误差范围 |
|---|---|---|
| 国家 | 确定国家 | ±0km |
| 州/省 | 确定省份 | ±50-200km |
| 城市 | 确定城市 | ±5-50km |
| ISP | 确定运营商 | - |
| 经纬度 | 精确到坐标 | ±1-10km |
IP 定位局限性
- 广播 IP — 大型 ISP 的 IP 可能定位到总部而非用户
- 移动网络 — 无线网络 IP 定位不准确
- VPN/代理 — 定位到出口节点而非真实位置
- 企业网络 — 可能定位到公司注册地
IP 定位数据库
主流 IP 数据库
| 数据库 | 特点 | 免费版 | 付费版 |
|---|---|---|---|
| MaxMind GeoIP2 | 最知名,更新频繁 | 粗略版 | 精确版 |
| IPinfo | 数据丰富,含 ASN | 免费有限 | 商业版 |
| DB-IP | 开源选项 | Lite 版 | Pro 版 |
| IP2Location | 亚洲数据准确 | LITE 版 | 商业版 |
| IPin.io | 国内数据 | 免费下载 | 商业服务 |
数据库格式
json
[
{
"ip_from": "1.0.0.0",
"ip_to": "1.0.0.255",
"country_code": "AU",
"region": "Queensland",
"city": "South Brisbane",
"latitude": -27.47480,
"longitude": 153.01700,
"asn": 13335,
"organization": "Cloudflare, Inc."
}
]csv
ip_from,ip_to,country_code,region,city,latitude,longitude
1.0.0.0,1.0.0.255,AU,Queensland,South Brisbane,-27.47480,153.01700sql
CREATE TABLE geoip (
ip_from VARCHAR(39),
ip_to VARCHAR(39),
country_code CHAR(2),
region VARCHAR(100),
city VARCHAR(100),
latitude DECIMAL(9,5),
longitude DECIMAL(9,5)
);
INSERT INTO geoip VALUES
('1.0.0.0','1.0.0.255','AU','Queensland','South Brisbane',-27.47480,153.01700);自建 IP 数据库
详见:自建 IP 数据库
IP 查询工具
在线查询
| 工具 | 地址 | 功能 |
|---|---|---|
| IPinfo | https://ipinfo.io | IP、ASN、域名、运营商 |
| BGPView | https://bgpview.io | ASN、路由、所属网络 |
| RIPE NCC | https://stat.ripe.net | 欧洲 IP 数据库 |
| IPFingerprints | https://www.ipfingerprints.com | 综合 IP 分析 |
| 查 IP | https://chaip.com | 中文 IP 查询 |
命令行查询
bash
# 使用 curl 查询 IPinfo
curl ipinfo.io/8.8.8.8
# 输出: {"ip": "8.8.8.8", "hostname": "dns.google", "city": "Mountain View", ...}
# 使用 dig 查询
dig +short CHAOS TXT id.server @8.8.8.8
# 使用 whois 查询
whois -h whois.cymru.com 8.8.8.8
# 输出: "15169 | 8.8.8.8 | US | ARIN |GOGL"API 查询
bash
# IPinfo API
curl ipinfo.io/1.1.1.1/json
# BGPView API
curl https://api.bgpview.io/ip/1.1.1.1
# IP-API (支持批量)
curl http://ip-api.com/json/1.1.1.1推荐组合
使用 BGPView 查 ASN + IPinfo 查地理位置 + MaxMind 验证精度。
CDN 绕过技术
寻找真实源站 IP
| 方法 | 说明 |
|---|---|
| DNS 历史记录 | 查看变更前的 DNS 记录 |
| SSL 证书 | 搜索证书中的域名/IP |
| 子域名枚举 | 找未接入 CDN 的子域 |
| 邮件头分析 | 发送邮件查看原始 IP |
| Shodan/Censys | 搜索引擎找资产 |
安全提示
注意
CDN 隐藏源站 IP 是常规安全措施,绕过 CDN 直连源站可能违反服务条款,且会增加安全风险。
总结
CDN 和 IP 定位是互联网基础设施的重要组成部分,了解其工作原理有助于网络分析和安全研究。