接 CDN 后,源站看到的是节点 IP;同时,源站若对裸 IP 返回业务证书,等于自己把源站指认出去。
------------------------------------------------
一、为什么 access.log 全是节点 IP
------------------------------------------------
用户 -> 边缘节点 -> 源站。
源站 TCP 连接对端必然是节点,不是访客。要拿访客 IP,必须读 CDN 传入的头,例如:
- X-Forwarded-For
- X-Real-IP
(以节点实际注入为准,并只信任来自节点网段的请求,防止伪造。)
Web 应用、WAF、限流、封禁、统计分析,全部要改成“真实 IP 字段”,否则你封的是自己节点。
------------------------------------------------
二、源站侧配置要点
------------------------------------------------
Nginx 示例思路:
set_real_ip_from 节点IP段;
real_ip_header X-Forwarded-For;
真实业务里按发行版/面板选择对应模块。
PHP/应用:
不要只用 $_SERVER['REMOTE_ADDR'] 做风控;在已确认请求来自 CDN 时解析 X-Forwarded-For 最左/最右策略(按平台约定)。
------------------------------------------------
三、SSL 证书如何泄露源 IP
------------------------------------------------
攻击者扫到候选 IP 后直接 https://IP,若源站返回的证书 SAN/CN 就是你的业务域名,即可确认“这是源站”。
这与 CNAME 是否隐藏 DNS 无关——是源站对“非 CDN 来路”仍裸露业务证。
处理:
1. 源站只接受节点 IP 回源(防火墙白名单),公网直接访问 443/80 拒绝或丢弃。
2. 裸 IP / 默认 server 使用占位证书,绝不挂业务正式证。
3. 不要把源站 IP 写进公开 DNS、邮件头、第三方监控、截图、工单。
4. 历史泄露过的 IP 被打时,换源或严格只允许节点回源。
------------------------------------------------
四、和“CDN 是否保证隐藏源站”的关系
------------------------------------------------
CDN 负责把公网流量接到边缘;源站暴露多半是配置与运维问题:
历史 A 记录、子域未接入、邮件服务器同 IP、证书泄露、源站端口对外、被攻破的同源资产。
把源站当内网服务来 hardening,比迷信“接入即隐身”有用得多。