首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache IPv4拒绝指令阻止IPv6地址。

Apache IPv4拒绝指令阻止IPv6地址。
EN

Server Fault用户
提问于 2013-03-03 13:05:43
回答 1查看 2.2K关注 0票数 4

编辑我曾经想过,过多的“拒绝”行会把apache混淆成阻塞未列出的IPv4地址。但对@Ladadadada的评论让我准确地指出了这个问题。你可以在下面读我的老问题。问题是,下面一行:

代码语言:javascript
复制
deny from 42.1.0.0/19

阻塞IPv6地址

代码语言:javascript
复制
2a01:4f8:120:8201::2
2a01:1e8:e100:ce::2

这怎麽可能?

我有一个非常长的阻止IP地址列表,它是由Include指令在Directory块中激活的。

这个文件只包含IPv4地址,但是我的服务器也阻塞了有限数量的IPv6地址。它并没有阻塞所有的IPv6流量。如果删除这些块,这些IPv6地址可以很好地访问服务器。

最初,块文件将每个IP块放在单独的“拒绝”行上。为了减少规则数量和文件大小,我尝试将其中的每40条合并起来。但还是没起作用。但是,当我将规则截断到4-5拒绝行时,它正常工作,并且没有阻塞IPv6地址。

这些是访问日志中的示例日志。

代码语言:javascript
复制
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)"

和错误日志

代码语言:javascript
复制
[Sun Mar 03 15:01:07 2013] [error] [client 2a01:4f8:120:8201::2] client denied by server configuration: /mirror/pub/tdf/

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

EN

回答 1

Server Fault用户

回答已采纳

发布于 2013-03-03 14:23:11

直接进入细节,让我们将42.1.0.02a01:1e8转换为二进制(您将看到为什么我现在只选择最初的部分)。

代码语言:javascript
复制
0010 1010 . 0000 0001 . 000 |
   42     .     1     . 0   |

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

CIDR通知的工作方式是它将匹配第一个/X位。在您的例子中,它将匹配第一个192a01:1e8:...也匹配它。

这让我相信这是一个bug,因为这正是他们的文档中演示的用法。

票数 8
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/484239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档