编辑我曾经想过,过多的“拒绝”行会把apache混淆成阻塞未列出的IPv4地址。但对@Ladadadada的评论让我准确地指出了这个问题。你可以在下面读我的老问题。问题是,下面一行:
deny from 42.1.0.0/19阻塞IPv6地址
2a01:4f8:120:8201::2
2a01:1e8:e100:ce::2这怎麽可能?
我有一个非常长的阻止IP地址列表,它是由Include指令在Directory块中激活的。
这个文件只包含IPv4地址,但是我的服务器也阻塞了有限数量的IPv6地址。它并没有阻塞所有的IPv6流量。如果删除这些块,这些IPv6地址可以很好地访问服务器。
最初,块文件将每个IP块放在单独的“拒绝”行上。为了减少规则数量和文件大小,我尝试将其中的每40条合并起来。但还是没起作用。但是,当我将规则截断到4-5拒绝行时,它正常工作,并且没有阻塞IPv6地址。
这些是访问日志中的示例日志。
2a01:4f8:120:8201::2 - - [03/Mar/2013:15:01:07 +0200] "GET /tdf/ HTTP/1.1" 403 387 "-" "MirrorBrain Probe (see http://mirrorbrain.org/probe_info)"和错误日志
[Sun Mar 03 15:01:07 2013] [error] [client 2a01:4f8:120:8201::2] client denied by server configuration: /mirror/pub/tdf/我如何列出大量的“拒绝”指令?我无法控制机器的防火墙,所以这是不可能的。
发布于 2013-03-03 14:23:11
直接进入细节,让我们将42.1.0.0和2a01:1e8转换为二进制(您将看到为什么我现在只选择最初的部分)。
0010 1010 . 0000 0001 . 000 |
42 . 1 . 0 |
0010 1010 0000 0001 : 000 | 0 0001 1110 1000
2a01 : | 1e8
|
^ cut hereCIDR通知的工作方式是它将匹配第一个/X位。在您的例子中,它将匹配第一个19,2a01:1e8:...也匹配它。
这让我相信这是一个bug,因为这正是他们的文档中演示的用法。
https://serverfault.com/questions/484239
复制相似问题