近期我們發現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研究很深入👍我就不複制轉賬了,你在這裡留下的鍊接别人就可以訪問