我用 csf 防火墙屏蔽了中国和俄罗斯的用户,现在来自国内的用户无法连接服务器的 ip ,但是输入域名却可以访问,为何?我已经绑定了自己的域名在 cloudflare ,我不想用户来自国内和俄罗斯的用户访问到,怎么会出现,访问 ip 无法打开,直接输入域名却可以打开呢?什么原因?如何让用户输入域名后,也无法访问?
我用 csf 防火墙屏蔽了中国和俄罗斯的用户,现在来自国内的用户无法连接服务器的 ip ,但是输入域名却可以访问,为何?我已经绑定了自己的域名在 cloudflare ,我不想用户来自国内和俄罗斯的用户访问到,怎么会出现,访问 ip 无法打开,直接输入域名却可以打开呢?什么原因?如何让用户输入域名后,也无法访问?
谢邀。原则上防火墙对指定规则的IP屏蔽后,任何在此IP范围内的用户都不能访问网站。而通过域名却能访问网站,只能说明这部分用户通过域名访问的“网站”服务器根本就不是你设置防火墙的那台服务器。
CloudFlare 提供 CDN 加速服务,它的原理是通过反向代理提供网站加速服务,为站长解决了 jpg/JS/CSS 这些静态文件到 CDN 上的问题,并且通过它部署在全球各大洲的缓存结点服务器(详细列表),提供高效的加速服务。这意味着,当你将域名绑定到CloudFlare上时,用户通过域名的访问都被CloudFlare接管了,而不是你设置防火墙策略的那台服务器。CloudFlare会代替用户向你的网站发起请求。此时你的防火墙过滤筛选的IP都是不是用户的,而是 CloudFlare 的IP。
通过以上原理可知,你的防火墙策略对通过域名访问的用户是无效的。要么取消域名与CloudFlare CDN服务的绑定,直接指向网站服务器;要么在CloudFlare端设置,看看他们的管理后台有无相关的防火墙设置参数。还有一种办法,就是将存储静态文件目录单设一个域名 img.yourdomain.com ,把它绑定到 CloudFlare 服务器上,而动态脚本的页面请求域名 www.yourdomain.com 直接指向网站服务器(相关脚本代码做一下修改),这是可行的,也是常见做法。
国内用户并没有连接你的服务器 连接你服务器的是 cloudflare