跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • CloudFlare 把所有访客的 IP 全都变成了他们自己的 IP,这怎么解决?很郁闷啊。
未分類
30 9 月 2020

CloudFlare 把所有访客的 IP 全都变成了他们自己的 IP,这怎么解决?很郁闷啊。

CloudFlare 把所有访客的 IP 全都变成了他们自己的 IP,这怎么解决?很郁闷啊。

資深大佬 : WesleyNZ 5

https://support.cloudflare.com/hc/zh-cn/articles/200168236-Cloudflare-IP-地理位置有什么作用-

我是小白,只懂一些网站皮毛

请问 cloudflare 到底把这些访客的真实 IP 数据放在哪里了? 在我网站数据库的哪个地方? 如何查看? 我用的是 CPanel 。

然后他也有提供修复方案 给了我个 Github 地址我完全不会安装这个东西啊 太复杂了,完全看不懂 谁能帮忙解释一下?

https://support.cloudflare.com/hc/en-us/articles/200170786-Restoring-original-visitor-IPs-Logging-visitor-IP-addresses-with-mod-cloudflare-

大佬有話說 (74)

  • 資深大佬 : presoul

    x-real-ip

  • 主 資深大佬 : WesleyNZ

    @presoul 这是什么意思? 我想问的是,那些数据的 log,存放在我网站的哪个物理文件里面,我现在就需要那个真实 Ip 数据

  • 主 資深大佬 : WesleyNZ

    并以 ISO 3166-1 Alpha 2 格式将国家 /地区代码传递给您的源站。

    请问????这个数据在源站的哪里?
    如果是数据库是哪个数据库?
    是存在哪个表里呢?

  • 資深大佬 : wjhjd163

    一正解

  • 主 資深大佬 : WesleyNZ

    @wjhjd163 请问如何访问这个值?

  • 主 資深大佬 : WesleyNZ

    @wjhjd163 这个值在哪个数据库的哪个地方?我找不到。

  • 資深大佬 : shansing

    HTTP header: x-real-ip

  • 資深大佬 : zhangshine

    真实数据在 header 里面,你需要自己把这个值取出来,可以用程序来做也可以修改 nginx/apache 对应的配置文件来做。

  • 主 資深大佬 : WesleyNZ

    @zhangshine 请问如何提取数据 我网上找不到教程…..

  • 主 資深大佬 : WesleyNZ

    @zhangshine header 的数据又在哪里? phpadmin 还是 MySQL?
    我去 cpanel 分别搜索,都搜不到这个 x-real-ip

  • 資深大佬 : zhangshine

    @WesleyNZ 百度 /google: cloudflare 访客 ip

  • 資深大佬 : xionger

    有吗?不是透明的传递吗?不需要 header 吧

  • 主 資深大佬 : WesleyNZ

    @zhangshine 我搜过了 大哥 大哥

  • 資深大佬 : coolcfan

    Cloudflare 怎么会有能力往你的网站数据库里存东西呢,大家说的也很清楚了是在 HTTP Header 里,感到茫然的话先从 HTTP 协议的基本知识了解一下

  • 資深大佬 : reechangs

    如果你用的是 nginx,直接在 conf 中直接增加配置文件即可。
    具体方法可参考 https://wzfou.com/cdn-real-ip/

  • 資深大佬 : codingadog

    http headers 了解一下

  • 主 資深大佬 : WesleyNZ

    @coolcfan 说的也对,那请问如何提取这一部分数据呢?

  • 主 資深大佬 : WesleyNZ

    @reechangs 我用的是 CPanel

  • 主 資深大佬 : WesleyNZ

    @coolcfan 我 end user 不想了解那么多 而且这么简单的一个功能 脚本设置难度也太高了

  • 資深大佬 : krixaar

    用 CPanel 的话直接给服务商发 ticket 问啊,你啥都操作不了的,或者去服务商的知识库里搜一下有没有。

  • 主 資深大佬 : WesleyNZ

    @krixaar 人家怎么会管你的 Cloudflare 啊?
    这是 cloudflare 不给我设置,关他们什么事?

  • 資深大佬 : mschultz

    cPanel 貌似是一个管理面板的名字?不是 Web Server 的名字。Web Server 有比如 Nginx, Apache, EasyApache (其实你主题里那个 「修复方案」 列出了很多)。你看看你具体用的是哪个。

    cPanel 的常见 log 文件的位置,我查到大概是 https://docs.cpanel.net/knowledge-base/cpanel-product/the-cpanel-log-files/
    不过声明我没用过 cPanel,只是随手一搜,你需要的话自己 Google 一下。

    —-
    然后,访客访问网站的时候会给你的 Web Server 发送请求,里面 HTTP Header 里包括一些字段,如果你用了 Cloudflare 的 CDN,那么 Cf-Connecting-Ip 这个字段的值就是访客的真实 IP. 这些 HTTP 请求 Header 一般都会留在 Web Server 的 log 里

    另外不清楚为什么上几个同学说 X-Real-Ip 是正解,我个人了解的是,如果用了 Cloudflare CDN,X-Real-Ip 无法获取访客真实 IP,它依然是 Cloudflare 节点的 IP.

  • 資深大佬 : mschultz

    另外就是你要确认一下你的网站具体是什么?你可以考虑一下你是不是有必要从 log 那么基础的文件里获取访客 IP.
    搞不好你的网站应用里就有办法抓取到访客的真实 IP.

    举个例子:
    WordPress,它本身就有统计访客来源的功能,但是这个访客 IP 也是根据 HTTP Header 里的我忘了是 Remote-addr 还是 x-real-ip 了,总之如果用了 Cloudflare,这俩都不是访客真实的 IP. 但是,有一个插件 WP Statistics,里面可以指定「将哪个字段认为是访客 IP 」,这里我指定把 「 Cf-Connecting-Ip 」作为访客真实 IP 就可以了

  • 資深大佬 : also24

    @WesleyNZ #21
    如果你希望了解这件事的完整原因,建议你学习一下网络协议,了解一下三层转发的细节,以及 CloudFlare 的基础原理。

    如果你不想知道细节,只是想解决这个问题,那么你只需要记以下结论:
    1 、这件事确实是因为你加了 CloudFlare 引起的。
    2 、解决方式就是 X-Forwarded-For 或 X-Real-IP 字段。
    3 、要读取这两个字段,需要靠服务商或你自己的程序来解决。
    4 、如果你自己不知道如何在自己的程序上解决,那你只能求助于服务商。
    5 、服务商如果不愿意解决也是正常的,看具体沟通情况。
    6 、如果想彻底解决,建议学习相关知识,买完整的 VPS 自己配置,而不是 CPanel 虚拟主机。

    服务商的解决方式参考:
    https://support.cpanel.net/hc/en-us/articles/360051107513-Restoring-visitors-IP-with-mod-remoteip

  • 資深大佬 : krixaar

    @WesleyNZ 统计 cf 的源 ip 需要给服务端设置记录 cf 的 header,也就是上说的那些,例如 Apache 需要装 mod_cloudflare 并启用,你作为 cPanel 用户一般是不可能有这种权限的,你必须找服务提供商,所以上这些回答你一个也搞不明白。cf 因为太常用,服务商兴许已经设置过需要你去开启,那么你就得去找他们的知识库,没有就发 ticket 。
    所以说虚拟空间到处都是坑……

  • 資深大佬 : mschultz

    @also24 #24 用了 Cloudflare 之后 X-Forwarded-For 或 X-Real-IP 都是 Cloudflare 节点的 IP 啊?
    应该用 Cf-Connecting-Ip 吧

  • 資深大佬 : windyskr

    没用过,但是从你发的链接点进去

    ![看到]( https://i.loli.net/2020/10/04/7lTtFxMHBsPkIQV.png)

  • 資深大佬 : also24

    @mschultz #26
    CF 确实没有带 X-Real-IP,但是 X-Forwarded-For 是按照规范实现的。
    我这里没有提 CF-Connecting-IP,主要还是因为 X-Forwarded-For 相对来说更常用一些。

    http://support.cloudflare.com/hc/en-us/articles/200170986

  • 資深大佬 : mschultz

    @also24 #28 哦哦,谢谢,我好像刚才也想发这个链接来着(不过这个链接里也是推荐用 Cf-Connecting-Ip )。

    我这里有个 Traefik + whoami 的 docker 镜像搭的 demo,我打开的时候,X-Forwarded-For 显示的依然是 Cloudflare 节点的 IP. 这里面只有 Cf-Connecting-Ip 是真实 IP.

    demo 地址: https://www.f-c.xyz

    可能是因为隔了一层 Docker 的原因?

    你可以试一下

    (搭建的文档其实就是 Traefik 的 Hello World: https://doc.traefik.io/traefik/getting-started/quick-start/ )

  • 資深大佬 : also24

    @mschultz #29
    可能是因为你没有配置对这个字段的信任吧:
    https://doc.traefik.io/traefik/routing/entrypoints/#forwarded-headers

    此类字段,一般都需要配置 Trust IP 的,不然会有伪造 IP 的漏洞。

  • 資深大佬 : dototototo

    cf 是个中介,你委托人家卖东西,人家也告诉你买家是谁了,你听不懂,质问中介怎么还要你来告诉我买家是谁啊,让他自己来买不就行了吗?

  • 資深大佬 : mschultz

    @also24 是的

  • 資深大佬 : Actrace

    CF 现在已经不提供 ipv4 的访客 IP 地址了。虽然它会提供一个转换后的 ipv4 地址,但是那个地址并不是客户的 IP 地址。

    目前 CF 只在 http header 提供 ipv6 的地址。

  • 資深大佬 : presoul

    trust ip: https://www.cloudflare.com/ips-v4

  • 資深大佬 : SingeeKing

    为什么我记得 CF 告知真实 IP 是一个付费功能

  • 資深大佬 : SingeeKing

    https://support.cloudflare.com/hc/en-us/articles/200170986-How-does-Cloudflare-handle-HTTP-Request-headers-

    官方文档写的很详细了

  • 主 資深大佬 : WesleyNZ

    @Actrace 你这个从哪里的得知的?
    并没有这个说法啊

  • 資深大佬 : datou

    在 header 里面找

  • 資深大佬 : Yourshell

    https://support.cloudflare.com/hc/zh-cn/articles/200170786-%E6%81%A2%E5%A4%8D%E5%8E%9F%E5%A7%8B%E8%AE%BF%E9%97%AE%E8%80%85-IP-%E4%BD%BF%E7%94%A8-mod-cloudflare-%E8%AE%B0%E5%BD%95%E8%AE%BF%E9%97%AE%E8%80%85-IP-%E5%9C%B0%E5%9D%80-

  • 主 資深大佬 : WesleyNZ

    @krixaar

    服务商 5 分钟回复内给解决了,从现在以后都是显示真实 IP 地址,谢谢。

    但是昨天的访客数据都是 cloudfare 的,我特别想知道这个恶意评论的人是谁,我知道 162.1xx.XXX.XXX 这个地址是转换后的地址,但是在我 header 里面,原地址是有的吧?请问去哪里找?

  • 主 資深大佬 : WesleyNZ

    @Yourshell

    这个文档我看过了 我不知所云,我没有这个权限,服务商帮我开通了真实 IP,但是!
    我昨天记录的数据还是没有恢复真实 IP

  • 主 資深大佬 : WesleyNZ

    @datou HEADER 在哪里

  • 資深大佬 : icyalala

    所以说,其实主最直接的目的是找到昨天发恶意评论的人是谁。。

  • 資深大佬 : Kaiyuan

    我记得是有两个 IP,前面的是 CF,后面的是访客 IP 。

  • 主 資深大佬 : WesleyNZ

    @icyalala 对,一堆人不知道我什么意思 乱评论
    这件事情已经解决了 ,以后都会显示真正 IP

  • 資深大佬 : skylancer

    自己语文水平堪忧兼是个小白还说人乱评论… 蜜汁操作

  • 資深大佬 : tanghongkai

    @skylancer 白嫖惯了是这样的,已 block 免得影响心情

  • 資深大佬 : diaosi

    @skylancer 感觉应该针对这种情况做出一些措施

  • 資深大佬 : DeutschXP

    浓浓的甲方气息,不过也是一个小锻炼,如果上觉得不舒服的,那么可能还是适合默默写程序,就不要想着转行搞销售搞业务啥的了,会有更多不适应,现实中,甲方态度要恶劣多了

  • 資深大佬 : diaosi

    @DeutschXP 我觉得不适合这样类比。
    与甲方交流存在利益关系,而在论坛划水没必要忍受什么。

  • 資深大佬 : also24

    @diaosi
    调整心态就好,不要因为『主』这个词,就默认发帖人对帖子拥有所有权。

    回帖并不只是发给主看的,是给整个社区的新老成员看的。

  • 主 資深大佬 : WesleyNZ

    你不回答可以走的,一些半吊子进来回答一半还当圣母是最骚的。

  • 主 資深大佬 : WesleyNZ

    @tanghongkai 您凉快去吧

  • 資深大佬 : codespots

    看主的态度,我直接来一句主烧饼不为过吧!

  • 資深大佬 : imdong

    @DeutschXP #49 类比不合适,如果主花钱找我解决问题,我会当爸爸供起来(钱给够就行)

    ====

    问题解决很简单,但是主(发帖者)确实没有将自己的目的说清楚,问题不复杂。

    一早就看到这个贴子,典型的憨憨菜鸟的求助帖(无贬义),比伸手党稍微好一些,但是沟通起来巨费劲,按照《提问的智慧》来说也确实证实自己是有自己尝试通过搜索解决过问题(当然不排除是通过其他渠道伸手得到的一些解决方案),可是由于能力有限无法找到重点且无法理解现有的解决方案(但依然没能通过发帖表达清楚自己的意图,这个确实是发帖者的问题,此处为批评)。

    回帖的人中愿意给出解决方案的(不管正确与否)都应该被鼓励、感谢才对,主描述不清楚自己的问题,不要怪大家说,提问就要做好被喷的准备,这年头冲个浪,谁还没被喷过。

    最后,为了防止我也被喷,给个不是个好的但好使的解决方案:

    对于 PHP 来说,在入口文件里(如 index.php ),加入下面的代码,即可(不提供技术支持,使用后果自行承担)

    $_SERVER[‘REMOTE_ADDR’] = $_SERVER[‘REAL_IP’] = $_SERVER[‘CF-Connecting-IP’];

    代码很傻,但是对新手来说,很好使。

    另外,如果之前没有配置过保存,拿你这个恶意评论的 IP 九成九是拿不到的,已经消失了(除非 CF 有提供日志,我不清楚)

    就算你拿到 IP 又怎样?顺着网线去打人不成,先不管你能不能顺着网线找到人,找到又能打得过?毕竟客场作战,打赢了又怎样?弄不好因为寻衅滋事就进去了。

    网络上喷子这么多,何必放在心上,删掉就好了,斤斤计较,对自己一点好处都没有。

  • 資深大佬 : datou

    @WesleyNZ 在程序里记录 request header 的 x-forwarded-for

    套了 cf 的话 x-forwarded-for 会有两个 ip,前面的是访客真实 ip,后面的是 cf 节点 ip

  • 資深大佬 : kn007

    @Livid 、 @Kai 、 @GordianZ 、 @sparanoid 、 @Olivia

  • 資深大佬 : msg7086

    如果觉得自己是小白,那就谦虚点。态度好点,大家都愿意教,愿意帮忙。
    人就是这样一种生物,如果你很懂,大家都愿意和你说话,如果你很谦虚,虽然不懂,大家也愿意教。
    但是你又不懂,还要一脸傲慢的样子,怕不是在讨打。
    当然了,论坛上也没法打你,最多也就是喷你几句完事,懂的人都 block 了,以后你问的问题不再会有人答。
    但如果这态度放到现实中,就好好挨社会的毒打吧。

    既然你说了「不回答可以走的」,那我也说一句,不想谦虚地讨论问题,您也可以走的。

    最后,回答一下你的问题,既然之前的真实 IP 没有被你记录下来,那么他们就永远丢失了。
    至于拿 IP,也没什么意义,现在 IP 大多都是共享的,你拿一个 IP 等于拿一个区或者一个市,有什么用呢。
    就说你在帖子里那么多恶意回复,我找站长拿了你 IP,难道我还能跑到你们区的电信局一个一个家庭地址找吗。
    真心的,不懂,就多学学,没坏处。

  • 資深大佬 : Showfom

    @msg7086 可能有人在他网站上骂他 他想查一下这人是哪里的吧

  • 資深大佬 : WhoMercy

    @DeutschXP #49 乙方做多了,起不来了吗。

    @WesleyNZ #45 #52 #53 真当自己是甲方,白嫖有理,真行。

  • 資深大佬 : learningman

    @DeutschXP 甲方给钱,多恶劣都能忍,这个 XX,凭啥呢?

  • 資深大佬 : xgQikk

    怎么这个脑瘫这么久了还在这里发帖

  • 資深大佬 : evilStart

    v2ex 的很多帖子让我觉得这是一个少儿编程论坛。

  • 主 資深大佬 : WesleyNZ

    @imdong
    谢谢,host 方已经给我改回来,然后把日志文件给我了,日志文件里面 并没有这个数据,只保存了一个 Cloudflare 的 IP 。

    我生气的是,有的回一个字,叫我自己去领悟
    我看了网站中文英文解决方案都 2 个小时了我才来发帖的。

    还有一群不帮忙来 BB 当圣母的。

    我只是想拿回来这个特定的 IP 仅此而已,不过根据你的描述 应该是没办法了,谢谢!

    有提供日

  • 主 資深大佬 : WesleyNZ

    @imdong 还有,很感谢最后一句话 我也是打算算了(这个人现实生活里可能认识,所以想知道他是谁,不知道就算了)

  • 主 資深大佬 : WesleyNZ

    @datou 你这个解释非常清楚,谢谢你。
    但是我不太清楚我 server 的 request header 存在哪里?一般的花 wordpress 的 request header 存在哪个地方呢?

  • 主 資深大佬 : WesleyNZ

    @xgQikk 您的脑子真好,‘地沟油’补得不错吧?

  • 主 資深大佬 : WesleyNZ

    @msg7086 你看清楚我回复的是谁,再做判断好吗?我只回了某些人,对于其他人,有任何帮助不捣乱的人,我是感谢的

  • 主 資深大佬 : WesleyNZ

    @DeutschXP 我对,提供帮助的人 都是感谢,态度挺好的啊,那些莫名其妙回答一半的 我都说了我没有基础,你给我个
    x-real-ip 我能知道是什么意思?
    我昨天已经花了 1 个小时读完了 https 的流程 我还是不懂我才来问的啊

  • 主 資深大佬 : WesleyNZ

    @evilStart 这是编程论坛?

  • 資深大佬 : lvjiefly

    不回答可以走是什么意思?这是你家?

  • 資深大佬 : julyclyde

    你这个学习能力,建议不要用 cloudflare 之类的高级东西
    比较简洁的环境更适合

  • 主 資深大佬 : WesleyNZ

    @julyclyde 就是说的你这种人啊 不回答可以走 别占用空间发泄情绪

  • 主 資深大佬 : WesleyNZ

    更新答案:

    所有的虚拟服务空间都不会保存 request header 到 log 里.
    结论:
    如果你没一开始付费 Cloudflare 的付费功能,或者是你一开始没有按照教程去显示真实 IP, 这些数据就永远拿不回来了。
    你后面开通这两个功能也毫无作用,这些数据就是永久丢失了。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具