Apache IPv4 拒绝指令阻止 IPv6 地址

Apache IPv4 拒绝指令阻止 IPv6 地址

编辑 我认为过多的“拒绝”行会使 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 个 IP 阻止合并在一起,以减少规则数量和文件大小。这仍然没有帮助。但是,当我将规则截断为 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/

我怎样才能列出大量的“拒绝”指令?我无法控制机器的防火墙,所以这是不可能的。

答案1

直接进入细节,让我们将和都转换42.1.0.02a01:1e8二进制(您马上就会明白为什么我只选择了初始部分。)

0010 1010 . 0000 0001 . 000 |
   42     .     1     . 0   |

0010 1010   0000 0001 : 000 | 0 0001 1110 1000
         2a01         :     |  1e8
                            |
                            ^ cut here

CIDR 符号的工作方式是匹配前/X几位。在您的例子中,它将匹配第一个19,这2a01:1e8:...也匹配。

这让我相信这是一个错误,因为这正是他们的文档

相关内容