V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kmdd33
V2EX  ›  问与答

我用 csf 防火墙屏蔽了中国和俄罗斯的用户,现在来自国内的用户无法连接服务器的 ip,但是输入域名却可以访问,为何?

  •  
  •   kmdd33 · 2017-03-07 23:19:19 +08:00 · 2458 次点击
    这是一个创建于 2825 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用 csf 防火墙屏蔽了中国和俄罗斯的用户,现在来自国内的用户无法连接服务器的 ip ,但是输入域名却可以访问,为何?我已经绑定了自己的域名在 cloudflare ,我不想用户来自国内和俄罗斯的用户访问到,怎么会出现,访问 ip 无法打开,直接输入域名却可以打开呢?什么原因?如何让用户输入域名后,也无法访问?

    12 条回复    2017-04-02 22:52:35 +08:00
    langmoe
        1
    langmoe  
       2017-03-07 23:24:34 +08:00
    有 cdn 的话估计防火墙看到的是 cdn 的 ip 吧
    kmdd33
        2
    kmdd33  
    OP
       2017-03-07 23:52:42 +08:00
    @langmoe 如何解决呢?
    lyragosa
        3
    lyragosa  
       2017-03-07 23:55:35 +08:00
    X-Forward-IP
    huangtao728
        4
    huangtao728  
       2017-03-08 00:20:16 +08:00 via Android
    在 Cloudflare 设置屏蔽
    kmdd33
        5
    kmdd33  
    OP
       2017-03-08 00:44:35 +08:00 via iPad
    @huangtao728 要花钱的现在
    notgod
        6
    notgod  
       2017-03-08 08:14:34 +08:00
    载入的第一个文件 顶部加
    CF 会直接发当前访客的国家代码
    比如中国 就是 CN


    使用 $_SERVER["HTTP_CF_IPCOUNTRY"]; 获得


    如果需要封禁中国和俄罗斯
    if (isset($_SERVER["HTTP_CF_IPCOUNTRY"]) && $_SERVER["HTTP_CF_IPCOUNTRY"] == ’ CN ‘ && $_SERVER["HTTP_CF_IPCOUNTRY"] == ’ RU ‘ ) {
    die('not allow current country');
    }


    额外会添加的 header
    $_SERVER["HTTP_CF_CONNECTING_IP"] 访问的真实 IP

    $_SERVER["HTTP_CF_IPCOUNTRY"] 访问者国家代码

    $_SERVER["HTTP_CF_RAY"] CF 的日志 ID

    $_SERVER["HTTP_CF_VISITOR"] http 和 ssl
    notgod
        7
    notgod  
       2017-03-08 08:17:37 +08:00
    这样简单些

    $baned = array("CN","RU"); //禁止国家
    if (in_array($baned, $_SERVER["HTTP_CF_IPCOUNTRY"] ))
    {
    die('not allow current country');
    }


    最好把 $_SERVER["HTTP_CF_IPCOUNTRY"] 使用 isset 检测下
    不然 CLI 会抛错
    notgod
        8
    notgod  
       2017-03-08 08:18:49 +08:00
    没注意 写反了....
    这样
    if (in_array($_SERVER["HTTP_CF_IPCOUNTRY"],$baned))
    dodaddy
        9
    dodaddy  
       2017-03-08 11:21:00 +08:00
    不使用 cdn 就可以了
    kmdd33
        10
    kmdd33  
    OP
       2017-03-08 17:39:43 +08:00 via iPad
    @notgod ,你说的这些代码要加到 index.html 里面吗?
    doufenger
        11
    doufenger  
       2017-04-02 22:52:16 +08:00
    @notgod 请问是这样加吗? 但是我加了之后整个网页空白了

    <?php
    $baned = array("JP"); //禁止国家
    if (in_array($_SERVER["HTTP_CF_IPCOUNTRY"],$baned))

    {
    die('not allow current country');
    }
    ?>
    doufenger
        12
    doufenger  
       2017-04-02 22:52:35 +08:00
    @notgod 我也是用 cloudflare 的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   890 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 21:30 · PVG 05:30 · LAX 13:30 · JFK 16:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.