近期我们发现Apache日志中2a06:98c0:3600::103这个IPv6地址出现非常多,User Agent一般都是显示的googlebot,我们刚开始以为是Google爬虫使用了IPv6地址,但有些User Agent又不是googlebot,所以有点迷惑,因为这是来自Cloudflare的访问,所以我们想可能是一个反向代理IP,想获取其背后真实访问者的IP地址。🤔️
查看以前博文《Apache安装mod_remoteip获取CDN背后访问者真实IP》,我们的httpd.conf中设置了:
RemoteIPHeader CF-Connecting-IP RemoteIPTrustedProxy 2a06:98c0::/29
而2a06:98c0:3600::103这个IPv6地址是属于2a06:98c0::/29范围内的,应该是可以转换出来背后的真实地址,但无论我们怎么调试(例如RemoteIPHeader CF-Connecting-IP改为CF-Connecting-IPv6或者X-Forwarded-For等)都没有让2a06:98c0:3600::103改变。
同事昨天给Cloudflare的客服发了工单,今天就接到回复:
Hi there,
Thanks for contacting Cloudflare support. My name is Weronika and I will be looking into this ticket for you.
We're sorry to read that you're experiencing difficulties.You are seeing the IPv6 request in your logs not because the cloudflare_mod isn't working but because it's worker request.
In cross-zone subrequests from one Cloudflare customer zone to another Cloudflare customer zone, the CF-Connecting-IP value will be set to the Worker client IP address '2a06:98c0:3600::103' for security reasons.
You can read more here: https://developers.cloudflare.com/workers/runtime-apis/headers/
Hope this sheds some light on the situation.
Kind regards,
Weronika | Cloudflare Support Engineer
Login to join the Cloudflare Community for instant advice & insight.
原来cloudflare_mod或者mod_remoteip都是没有错的,显示2a06:98c0:3600::103的原因是这些访问来自Cloudflare的Workers,这些其它域名的Worker访问我们网站的时候,因为安全原因其IP地址都显示2a06:98c0:3600::103。
我们此前自己也尝试过CloudFlare的Workers,知道可以用做采集访问或者代理服务,那么其他人也可以用Workers来采集我们网站数据。在网上搜索到一些帖子,别人也遇到过类似问题,都是说被这个IP大量采集,还有AbuseIPDB » 2a06:98c0:3600::103的投诉众多。
知道这些访问者多是伪装User Agent冒充Googlebot来访问的,那么也就可以大胆屏蔽了。在网上搜到别人说可以在Cloudflare的WAF规则中使用cf.worker.upstream_zone进行屏蔽,但我们尝试了下面几种规则都无法真正屏蔽:
(not cf.worker.upstream_zone in {"" "yourdomain.tld"}) (cf.worker.upstream_zone ne "") (ip.src eq 2a06:98c0:3600::103)
只好在apache的htaccess中来屏蔽,如下:
# 2022-7-7 Cloudflare Workers IPv6 RewriteCond %{REMOTE_ADDR} ^2a06:98c0:3600::103$ RewriteCond %{HTTP_REFERER} ^$ RewriteRule .* - [F,L]
这个屏蔽是有效的,马上从日志中看到这些访问都变成403被拒绝了。❌
结合上周我们“关于Cloudflare的253.102.157.193这个Pseudo IPv4”采取的行动,7月1号把Cloudflare中设置Pseudo IPv4为“覆盖标头”的都改为了“关”以后,253.102.157.193这个保留的IPv4地址都变成了2a06:98c0:3600::103这个IPv6地址,依然每天在各台服务器上访问几十万页,这两天又仔细查看,这个IPv6地址是Cloudflare的Workers的统一IP地址,依然不是真实的访问IP地址。这种利用Workers来采集的办法应该去年甚至更久前都存在了,我们没有留意、也没有找到真实原因,现在终于被封堵了。✌️
2022年7月28日补充:经过一段时间的观察,发现这个IPv6地址过来的并不都是利用Cloudflare的Workers过来采集的,甚至绝大多数都不是采集的,而是正规的Google爬虫,但Googlebot通过这个IPv6地址被屏蔽后会马上又用正常的66.249.xxx.xxx这种IPv4地址来爬一次。这究竟是怎么搞的,我们还在与Cloudflare的客服联系。今天先把.htaccess中屏蔽这个IPv6地址的几行代码注释取消了。
评论2
看了你的文章,写了一篇百分百屏蔽cf反代的方法,可以转载
看了你的文章,写了一篇百分百屏蔽cf反代的方法,可以转载,不强求注明但是尽量保留出处 Cloudflare cf使用workers搭建一个简单的免费页面反代系统 https://bbs.itzmx.com/thread-100054-1-1.html 网站屏蔽Cloudflare cf使用workers搭建的反代爬虫bot,REMOTE_ADDR header头部禁止 2a06:98c0:3600::103 ipv6地址,非真实浏览器禁止访问 https://bbs.itzmx.com/thread-101376-1-1.html写得不错啊
写得不错啊,看得出对Cloudflare研究很深入👍我就不复制转账了,你在这里留下的链接别人就可以访问