在 Cloudflare 防火墙规则中屏蔽特定国家 IP,需进入控制台「安全性」>「WAF」创建自定义规则,字段选择「国家/地区」,动作设为「阻止」。此方法适用于云端流量清洗场景,但需注意可能误伤使用该国出口 IP 的正常用户。
先说结论:Cloudflare 支持通过 WAF 自定义规则基于地理位置(国家/地区)拦截流量,无需修改源站服务器配置。
- 适合:希望在全球边缘节点直接拦截流量,减轻源站压力的网站。
- 先准备:确认目标国家的 ISO 3166-1 alpha-2 代码(如 CN、US),并评估业务是否依赖该地区用户。
- 验收:规则部署后,通过该地区网络环境测试访问,确认返回 403 或拦截页面。
快速处理思路
若需立即生效且不影响源站,优先使用 Cloudflare 仪表盘配置 WAF 规则。路径为:登录 Cloudflare 官网 > 选择域名 > 安全性 > WAF > 创建规则。若需在源站二次确认,可配合 Nginx 读取 CF-IPCountry 请求头进行二次过滤。
为什么会这样
Cloudflare 通过 IP 地理位置数据库识别访客国家,并在请求头中传递国家代码。Cloudflare 默认开启 IP Geolocation 选项,会发送访问者的国家代码参数到源站,同时也支持在边缘节点直接根据该数据执行防火墙动作。
分步处理
以下是基于 Cloudflare 控制台配置防火墙规则的具体步骤:
- 进入防火墙设置:登录 Cloudflare 控制台,选择目标域名,点击左侧「安全性」,进入「WAF」页面。
- 创建自定义规则:点击「创建规则」,输入规则名称(如 Block Specific Country)。
- 配置匹配字段:在「字段」下拉菜单中选择「国家/地区」,运算符选择「等于」(屏蔽特定国家)或「不等于」(仅允许特定国家)。
- 设定目标值:在「值」中选择或输入目标国家代码,例如屏蔽加拿大选择 CA,仅允许中国选择 CN。
- 选择动作:在「则采取」选项中选择「阻止」(Block),也可选择「质询」或「重定向」。
- 部署规则:点击右下角「部署」按钮,规则即刻生效。
怎么验证是否生效
验证规则生效需结合日志分析与实地测试。在 Cloudflare 控制台「安全性」>「事件」中查看是否有被阻止的请求记录,筛选条件设为规则名称。若具备条件,使用目标国家的代理网络或服务器发起请求,预期应收到 403 Forbidden 响应或 Cloudflare 拦截页面。
常见坑
- 特殊国家代码:Cloudflare 使用 XX 表示无国家代码数据,T1 表示 Tor 网络,配置时需考虑是否一并屏蔽。
- 误伤风险:屏蔽国家段可能影响该国正常用户或使用该国出口 IP 的跨国业务,建议先观察日志再全量拦截。
- 源站暴露:若源站 IP 已泄露,仅靠 Cloudflare 规则无效,需确保源站防火墙仅允许 Cloudflare IP 段访问。
常见问题
如何仅允许中国访问,屏蔽其他国家?
在 WAF 规则中,字段选择「国家/地区」,运算符选择「不等于」,值选择「China」,动作设为「阻止」。
Cloudflare 免费套餐支持国家屏蔽吗?
支持。Cloudflare 免费套餐包含自定义防火墙规则功能,可用于基于国家的访问控制。
如何在 Nginx 中配合 Cloudflare 进行国家屏蔽?
在 Nginx 配置中读取 $http_cf_ipcountry 变量,若值不符合预期则返回 404 或 403 状态码。
参考来源
- cloudflare 怎样屏蔽某个国家的 IP? - 简介 方法/步骤(2019 年 12 月 8 日的资料)
- cloudflare 配置防火墙 WAF 阻止或允许特定国家或地区访问_clouldfarewaf 设置-CSDN 博客(撰于 2023 年 9 月 19 日)
- Cloudflare + nginx 限制 ip 访问的几种方式 (白嫖 cloudflare 的 ip 数据库)(2025 年 8 月 22 日)
- 网站服务器如何屏蔽所有国外 ip 的用户访问?(资料日期为 2025 年 2 月 25 日)