我用 csf 防火墙屏蔽了中国和俄罗斯的用户,现在来自国内的用户无法连接服务器的 ip,但是输入域名却可以访问,为何?

我用 csf 防火墙屏蔽了中国和俄罗斯的用户,现在来自国内的用户无法连接服务器的 ip ,但是输入域名却可以访问,为何?我已经绑定了自己的域名在 cloudflare ,我不想用户来自国内和俄罗斯的用户访问到,怎么会出现,访问 ip 无法打开,直接输入域名却可以打开呢?什么原因?如何让用户输入域名后,也无法访问?

阅读 6.3k
4 个回答

国内用户并没有连接你的服务器 连接你服务器的是 cloudflare

开启防火墙log,和国内用户进行联合调试。

谢邀。原则上防火墙对指定规则的IP屏蔽后,任何在此IP范围内的用户都不能访问网站。而通过域名却能访问网站,只能说明这部分用户通过域名访问的“网站”服务器根本就不是你设置防火墙的那台服务器。

CloudFlare 提供 CDN 加速服务,它的原理是通过反向代理提供网站加速服务,为站长解决了 jpg/JS/CSS 这些静态文件到 CDN 上的问题,并且通过它部署在全球各大洲的缓存结点服务器(详细列表),提供高效的加速服务。这意味着,当你将域名绑定到CloudFlare上时,用户通过域名的访问都被CloudFlare接管了,而不是你设置防火墙策略的那台服务器。CloudFlare会代替用户向你的网站发起请求。此时你的防火墙过滤筛选的IP都是不是用户的,而是 CloudFlare 的IP。

通过以上原理可知,你的防火墙策略对通过域名访问的用户是无效的。要么取消域名与CloudFlare CDN服务的绑定,直接指向网站服务器;要么在CloudFlare端设置,看看他们的管理后台有无相关的防火墙设置参数。还有一种办法,就是将存储静态文件目录单设一个域名 img.yourdomain.com ,把它绑定到 CloudFlare 服务器上,而动态脚本的页面请求域名 www.yourdomain.com 直接指向网站服务器(相关脚本代码做一下修改),这是可行的,也是常见做法。

是用了cdn吧,可能访问的都是镜像站

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进