IT

Cloudflare CDN 加速网站并隐藏真实 IP 的配置指南

AI智能摘要

用 Cloudflare 免费版给网站加速,同时把真实 IP 藏起来,其实不难。关键就三步:域名 NS 改到 Cloudflare,DNS 记录开小黄云,再用防火墙只放行 Cloudflare 的 IP 段。SSL 模式选“完全(严格)”最稳,别用“灵活”省事。最后记得查一下历史 DNS 记录,别让旧解析暴露了源站。

想给网站加速,又不想暴露服务器真实 IP,Cloudflare 免费套餐就能做到。核心操作是把域名 NS 记录改到 Cloudflare,开启代理(小黄云),再配合防火墙规则堵住源站 IP 泄露的漏洞。下面按步骤来。

一、接入 Cloudflare 并开启代理

登录 Cloudflare,添加你的域名,选择 Free 计划。然后到你的域名注册商后台,把 NS 记录改成 Cloudflare 分配的两个地址,例如:

dana.ns.cloudflare.com
rob.ns.cloudflare.com

等生效后,进入 DNS 管理页面,添加一条 A 记录指向你服务器的真实 IP。关键一步:点击记录旁边的橙色云朵图标,让它变成已代理状态(小黄云)。这样流量才会先经过 Cloudflare,源站 IP 不会出现在 DNS 查询结果里。

如果网站有子域名,比如 blog.example.com,也建议同样开启代理。但邮件、FTP 等非 HTTP 服务不要开代理,否则会断连。

二、配置 SSL 与强制 HTTPS

Cloudflare 提供免费 SSL 证书,但模式选错会导致回源错误。进入 SSL/TLS 设置:

  • 源站有有效证书:选“完全(严格)”,最安全。
  • 源站只有自签名证书:选“完全”,但建议尽快换成 Let’s Encrypt 证书。
  • 源站没证书:选“灵活”,但这样 Cloudflare 到源站是明文,有被中间人窃听风险,不推荐。

然后在“边缘证书”里开启“始终使用 HTTPS”和“自动 HTTPS 重写”,把 HTTP 请求强制跳转到 HTTPS。

如果源站是 Nginx,记得在配置里放行 Cloudflare 的 IP 段,否则获取不到真实访客 IP。可以用 Cloudflare 官方提供的脚本更新:

# 下载并自动更新 Cloudflare IP 列表
curl -s https://api.cloudflare.com/client/v4/ips | jq -r '.result.ipv4_cidrs[]' > /etc/nginx/cloudflare_ipv4.conf

然后在 Nginx 的 http 块中引入这个文件,并用 real_ip_header 还原客户端 IP。

三、防止源站 IP 泄露

开了小黄云不代表真实 IP 就绝对安全。攻击者可以通过扫描全网 IP、查看历史 DNS 记录、直接访问源站 IP 来找到你。所以必须做几件事:

  • 防火墙只放行 Cloudflare IP: 在服务器防火墙(如 ufw、iptables)里,只允许 Cloudflare 的 IP 段访问 80 和 443 端口,其他 IP 一律拒绝。这样即使别人知道你的 IP,也无法直接访问。
  • 关闭不必要的端口: 只开 80、443 和 SSH 管理端口,SSH 建议改端口并限制来源 IP。
  • 检查历史 DNS 记录: 用 securitytrails 等工具查一下域名过去是否解析过真实 IP,如果有,考虑换 IP 或联系服务商。
  • 避免在邮件头、SSL 证书里暴露: 源站 SSL 证书不要包含真实 IP 的 SAN,发信服务器不要用同一台机器。

以 ufw 为例,只允许 Cloudflare 的 IPv4 段访问 443:

for ip in $(curl -s https://api.cloudflare.com/client/v4/ips | jq -r '.result.ipv4_cidrs[]'); do
  ufw allow from $ip to any port 443 proto tcp
done
ufw deny 443/tcp

注意顺序:先 allow 再 deny,否则会把自己也挡在外面。IPv6 段同理,用 ipv6_cidrs 字段。

四、验证与常见问题

配置完成后,用以下命令验证是否生效:

dig +short example.com
# 应返回 Cloudflare 的 IP,而不是你的服务器 IP

curl -I https://example.com
# 响应头应包含 cf-ray 和 server: cloudflare

如果发现返回的还是源站 IP,检查 DNS 记录是否开启了代理,或者本地 DNS 缓存未刷新。如果网站打不开,先临时把 SSL 模式改成“灵活”测试,确认回源是否正常,再逐步切回严格模式。

最后提醒:Cloudflare 免费版不提供中国内地节点,国内访问速度可能不如预期,但隐藏 IP 和基础防护完全够用。付费的 Argo 或企业版可以进一步优化线路。

发表评论