Вопрос или проблема
Процесс named
выдает такую ошибку весь день:
Jun 17 12:50:43 s named[24479]: socket.c:5274: неожиданная ошибка:
Jun 17 12:50:43 s named[24479]: connect(198.41.0.4#53) 22/Неверный аргумент
Что это за ошибка?
Named
(BIND 9.8.4-rpz2+rl005.12-P1) работает на Debian GNU/Linux squeeze/sid x32. С машины я могу выполнить telnet к этому адресу (a.root-servers.net.), также я могу разрешить IP-адрес в имя с помощью nslookup.
Я бы предположил, что это временная ошибка, однако если инструментальные команды работают, а вы получаете эту ошибку, значит что-то не так. Возможно, это ошибка BIND, возможно, конфигурация фаервола (инспекторы).
Ваша операционная система и BIND довольно стары и вышли из поддержки (с 2013 года, так как это ветка тестирования).
Я бы срочно обновил их оба; если у вас нет ядра и BIND, скомпилированных вручную, у них уже есть пара неприятных ошибок, которые можно исследовать удаленно.
Если проблема продолжит существовать, я бы углубился в отладку проблемы.
Ответ или решение
Ошибка socket.c в BIND9: Анализ и Рекомендации
Ошибка, которую вы наблюдаете в процессе работы BIND (named), выглядит следующим образом:
Jun 17 12:50:43 s named[24479]: socket.c:5274: unexpected error:
Jun 17 12:50:43 s named[24479]: connect(198.41.0.4#53) 22/Invalid argument
Что это за ошибка?
Данная ошибка указывает на неожиданное поведение в части кода, ответственной за создание и использование сокетов. В частности, проблема может заключаться в том, что BIND не смог установить соединение с указанным DNS-сервером по IP-адресу 198.41.0.4
, что соответствует корневому DNS-серверу (a.root-servers.net). Код ошибки 22/Invalid argument
может указывать на некорректный аргумент, переданный в системный вызов connect()
.
Возможные причины
-
Транзиторная ошибка: Действительно, подобные ошибки могут возникать из-за временных сбоев в сети или проблем с DNS-сервером. Если вы можете успешно выполнять команды, такие как
telnet
иnslookup
, это может указывать на кратковременные сбои. -
Версия ПО: Вы используете устаревшую версию BIND (9.8.4-rpz2+rl005.12-P1), которая была выпущена в 2013 году. В этой версии могут присутствовать уязвимости и ошибки, исправленные в более новых релизах. Устаревшее ПО также может подвергать вашу систему риску.
-
Конфигурация брандмауэра: Возможно, вы сталкиваетесь с проблемами, связанными с конфигурацией сетевых фильтров или брандмауэров, которые могут блокировать определенные соединения. Проверьте правила и настройки вашего брандмауэра на наличие ограничений для входящих и исходящих соединений на порт 53.
-
Сетевые проблемы: Не исключены также проблемы на уровне сети, такие как ограничения от провайдеров или проблемы с маршрутизацией.
Рекомендации
-
Обновление системы: Настоятельно рекомендуем обновить как ОС, так и BIND до последних стабильных версий. Новые версии содержат исправления для известных ошибок и уязвимостей.
-
Проверка конфигурации:
- Убедитесь, что конфигурация BIND корректна и не содержит ошибок.
- Проверьте настройки вашего брандмауэра, чтобы удостовериться, что порты, необходимые для работы DNS, открыты.
-
Мониторинг: Настраивайте логирование BIND для более детального отслеживания возникающих ошибок. Это поможет детализации проблемы при повторении ситуации.
-
Тестирование: Используйте команды диагностики, такие как
dig
иnslookup
, для проверки доступности других DNS-серверов и для тестирования конфигурации вашего DNS. -
Изучение документации: Ознакомьтесь с официальной документацией BIND и рассмотрите вопросы, касающиеся известных ошибок в версиях, которые вы используете.
Заключение
Ошибка socket.c:5274: unexpected error
в BIND требует внимательного анализа. Рассматривая указанные аспекты и следуя вышеуказанным рекомендациям, вы сможете устранить проблему и повысить надежность работы вашего DNS-сервера. Не забывайте следить за обновлениями ПО, чтобы гарантировать защиту от уязвимостей и обеспечить стабильность работы.