V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tmkook
V2EX  ›  Cloudflare

Cloudflare 获取客户端 IP 的正确姿势是什么

  •  
  •   tmkook · 2023-03-05 16:08:12 +08:00 · 1626 次点击
    这是一个创建于 662 天前的主题,其中的信息可能已经有所发展或是发生改变。
    CF 设置:
    安全等级 低
    DDOS 设置 阻止 中
    WAF 威胁分数小于 1 and 验证客户端证书 允许
    速率限制 / 阻止 10 秒钟 100 次请求
    网络 Pseudo IPv4 覆盖

    Nginx 设置:
    set_real_ip_from 0.0.0.0/0;
    proxy_set_header Host $host;
    real_ip_header CF-Connecting-IP;


    在客户端引用了个外部获取 IP 的链接和服务器获取的 IP 记录日志做对比,
    好多 IP 都不一致。去查 IP 所在地显示的是保留地址。

    例如:

    ```
    183.***.78.238 183.***.78.238 正确
    39.***.59.121 245.***.112.100 不正确
    14.***.210.68 243.120.78.159 不正确
    ```
    4 条回复    2023-03-05 19:30:09 +08:00
    lslqtz
        1
    lslqtz  
       2023-03-05 16:30:20 +08:00
    ```
    if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
    $clientIP = $_SERVER['HTTP_CF_CONNECTING_IP'];
    } else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    // Amazon CloudFront
    #$clientIP = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0];
    // Cloudflare
    /*
    $clientIPList = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); // 临时使用, 其它代理 IP 不应纳入列表.
    $clientIP = $clientIPList[((count($clientIPList) > 1) ? 1 : 0)];
    */
    $clientIP = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0];
    } else if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $clientIP = explode(',', $_SERVER['HTTP_CLIENT_IP'])[0];
    } else {
    $clientIP = $_SERVER['REMOTE_ADDR'];
    }
    ```
    这边自己在程序里直接用的...
    lslqtz
        2
    lslqtz  
       2023-03-05 16:33:51 +08:00   ❤️ 1
    tmkook
        3
    tmkook  
    OP
       2023-03-05 18:21:52 +08:00 via iPhone
    @lslqtz 谢谢,取消 pseudo 然后关闭 ipv6 是吗?我试试
    yumusb
        4
    yumusb  
       2023-03-05 19:30:09 +08:00 via Android
    不要设置 0.0.0.0/0
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1026 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:46 · PVG 04:46 · LAX 12:46 · JFK 15:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.