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

Почему необходимо перезагрузить Linux-сервер, чтобы правильно обработать изменение в resolv.conf?

Я знаю, что это просто недостаток моего понимания, но вот в чем проблема.

Недавно мы изменили DNS-серверы с 192.168.1.1 на .2, поэтому я обошел все 8 своих серверов Linux и изменил /etc/resolv.conf, чтобы отразить это изменение. Обратите внимание, что все они статичны, DHCP не задействован.

После внесения изменений я могу сразу проверить результаты с помощью nslookup и копать, и все выглядит хорошо. Я выполнил /etc/init.d/networking restart - чтобы перезапустить сетевую подсистему - и перезапустил apache и postfix на каждом из серверов, чтобы быть уверенным.

Через несколько дней я получаю отчет о том, что один из наших веб-сайтов больше не отправляет электронные письма. Просматривая журналы, я обнаружил, что процесс mod_php не может разрешать записи DNS для отправки почты. После 30 минут ударов головой я перезагрузил сервер, и все вернулось в норму.

На следующий день на другом сервере (использующем CentOS, а не нашу обычную Ubuntu) я получаю отчет о том, что электронные письма не проходят, и, конечно же, просмотр журналов показывает, что Postfix не может разрешать имена. Перезагрузился, и он почти мгновенно доставляет всю почту в очереди.

Так что же мне здесь не хватает? Какую часть этого процесса я не понял правильно?

Вероятно, вас укусил nscd: http://linux.die.net/man/8/nscd

Ура

Большинство приложений инициализируют распознаватель один раз при запуске (с res_init), и больше никогда этого не делать. Это не проблема для приложений с коротким сроком службы, таких как ping, но более серьезная проблема для долго работающих демонов.

Вероятно, в этом случае был процесс Apache (который запускает mod_php). Достаточно перезапустить Apache.

resolv.conf указывает преобразователям, где искать имена. В большинстве случаев это будет преобразователь libc, но могут быть и другие случаи, например vPostMaster, который использует библиотеку преобразователя DNS Python для поиска SPF.

Так что МОГ Дело в том, что преобразователь кэширует информацию resolv.conf для длительных процессов, но это звучало так, как будто вы перезапустили postfix, что должно было заставить его начать использовать новый файл resolv.conf.

Проверьте ваш /etc/nsswitch.conf, чтобы узнать, не указано ли в нем что-нибудь особенное, происходящее с "хостами". Например, строка Fedora 11 по умолчанию на моем ноутбуке:

хосты: файлы mdns4_minimal [NOTFOUND = return] dns

В этом случае он использует mdns, а также / etc / hosts и DNS. В этом случае, если бы изменения DNS не принимались, я бы задался вопросом, не были ли это вызваны mdns.

Шон

Возможно какое-то кеширование. У нас была аналогичная проблема с sendmail и просто перезапуск службы исправил это.

Иногда проще просто перезагрузить сервер и очистить все эти кеши в любом месте системы, чем тратить все это время на определение того, какая служба кэширует слишком долго. С другой стороны, это может обернуться вложением средств, когда это произойдет снова, и вы знаете, какую службу перезапустить.