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 из них, чтобы уменьшить количество правил и размер файла. Это все равно не помогло. Но когда я урезал правила до 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.0 а также 2a01: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:... также совпадает.

Это наводит меня на мысль, что это ошибка, так как это именно то, что показано в их документации.

Другие вопросы по тегам