Назад | Перейти на главную страницу

Apache httpd не перестанет выполнять обратные DNS-запросы для IP-адресов клиентов

Очевидно, мой экземпляр Apache httpd выполняет обратный поиск DNS (RDNS, дайте мне имя хоста для этого IP-адреса) для каждого IP-адреса входящего клиентского соединения. Это плохо. Тем более, что иногда разрешение не удается с отсутствующей записью PTR - через 28 секунд.

Диагностика: добавил %D к моему «комбинированному» стилю ведения журнала и смотрел на время отклика следующим образом: очевидно, <1 с для всех тех, которые зарегистрированы с их именем хоста и 20 + с для тех, которые регистрируют свой IP.

Вот что я пробовал:

Что я пропустил?

Кажется, что стандартная установка Ubuntu 8.04 Apache httpd поставляется с LogFormat что начинается с %h и это выполняет поиск RDNS IP-адреса клиента. Почему ну почему ?? Заменив его на %a (удаленный IP-адрес, см. настраиваемые форматы журналов) уменьшает эту проблему на ок. 90%. Некоторые остаются ...

Вы проверили HostnameLookups не установлен ни в одной другой директиве? Вы активировали модуль mod_authz_host?

Я наткнулся на ту же проблему и обнаружил еще один источник обратного поиска: сами приложения! PHP имеет gethostbyaddr() функция:

http://php.net/manual/en/function.gethostbyaddr.php

Интересно, что я столкнулся с аналогичной проблемой на одном из моих серверов. Проблема началась примерно в то время, когда я запустил PHP-скрипт командной строки, который сканировал файлы журналов на предмет основных IP-адресов. Затем я попросил PHP выполнить обратный поиск DNS для каждого IP-адреса. Примерно в то время, когда я это сделал, я заметил, что Apache внезапно начал сбрасывать имена хостов в журналы вместо IP-адресов. Переключение на% a с% h и перезапуск Apache, похоже, устранили проблему. HostnameLookups отключен. Я предполагаю, что Apache просто использует локально кэшированные результаты, если происходит обратный поиск IP в кеше. Может быть? Либо это, либо это ошибка на сервере.