Если в журнале событий Битрикс24 или в логах PHP вы видите сообщение php_network_getaddresses: getaddrinfo failed: Name or service not known, это означает, что сервер не может преобразовать доменное имя в IP-адрес. Простыми словами — сломался DNS. В результате Битрикс не может подключиться к внешним сервисам: почтовым серверам, облачным API, службам уведомлений и интеграциям.
Что означает эта ошибка
Функция PHP getaddrinfo() отвечает за DNS-резолвинг — преобразование доменного имени (например, api.bitrix24.com) в IP-адрес. Когда она возвращает ошибку Name or service not known, это означает одно из следующего:
- Сервер не знает, к каким DNS-серверам обращаться
- Файл
/etc/resolv.confпустой, повреждён или содержит неверные данные - DNS-сервер недоступен или не отвечает
- Сетевой интерфейс настроен неправильно
Ошибка чаще всего проявляется после перезагрузки сервера, смены провайдера или при работе на виртуальных машинах (BitrixVM, Docker-контейнерах).
Решение 1: Настройка /etc/resolv.conf
Первое, что нужно проверить — содержимое файла /etc/resolv.conf. Подключитесь к серверу по SSH под пользователем root и выполните:
|
1 |
cat /etc/resolv.conf |
Файл должен содержать хотя бы одну строку nameserver. Если файл пустой или содержит неверные адреса, отредактируйте его:
|
1 |
nano /etc/resolv.conf |
Добавьте следующие строки (публичные DNS Google и Cloudflare):
|
1 2 3 |
nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 1.1.1.1 |
Сохраните файл (Ctrl+O, затем Ctrl+X). Изменения вступают в силу немедленно — перезагрузка не нужна.
Решение 2: Проверка /etc/hosts
Файл /etc/hosts имеет приоритет над DNS. Убедитесь, что в нём нет записей, перекрывающих нужные домены:
|
1 |
cat /etc/hosts |
Стандартное содержимое должно включать только записи для localhost и имени хоста сервера. Если там есть записи для внешних доменов с неверными IP — удалите их.
Решение 3: Перезапуск сетевых служб
На некоторых системах проблема решается перезапуском сетевого стека:
|
1 2 3 4 5 6 7 8 |
# Для систем с systemd (CentOS 7+, Ubuntu 16.04+) systemctl restart network # Для Debian/Ubuntu systemctl restart networking # Для NetworkManager systemctl restart NetworkManager |
Решение 4: Для BitrixVM — проверка настроек сети
BitrixVM (виртуальная машина Битрикс на CentOS) имеет собственный инструмент настройки сети. Зайдите в меню управления BitrixVM и выберите пункт Network settings. Убедитесь, что:
- IP-адрес и маска подсети заданы корректно
- Шлюз по умолчанию прописан
- DNS-серверы указаны (хотя бы один)
После изменения настроек в меню BitrixVM конфигурация записывается в файлы /etc/sysconfig/network-scripts/ifcfg-eth0 (или аналогичный интерфейс) и применяется автоматически. В этом случае не редактируйте /etc/resolv.conf напрямую — при следующей перезагрузке сетевая служба перезапишет файл из своей конфигурации.
Как проверить, что DNS работает
После внесения изменений проверьте резолвинг несколькими способами:
|
1 2 3 4 5 6 7 8 |
# Проверка через nslookup nslookup google.com # Проверка через dig (более подробно) dig google.com # Простая проверка через ping ping -c 3 google.com |
Если nslookup возвращает IP-адрес — DNS работает. Также можно проверить, что именно Битрикс теперь может достучаться до нужного домена:
|
1 |
php -r "var_dump(gethostbyname('api.bitrix24.com'));" |
Если функция вернула IP-адрес (а не исходное доменное имя) — PHP резолвинг работает корректно.
Почему resolv.conf может сбрасываться
На серверах с DHCP файл /etc/resolv.conf перезаписывается при каждом получении сетевых настроек от DHCP-сервера. Чтобы ваши DNS-настройки сохранялись постоянно, используйте один из подходов:
- Зафиксировать статический IP вместо DHCP — тогда resolv.conf не будет перезаписываться
- Указать DNS в конфиге интерфейса — для CentOS в файле
/etc/sysconfig/network-scripts/ifcfg-eth0добавьте строкиDNS1=8.8.8.8иDNS2=8.8.4.4 - Использовать resolvconf или systemd-resolved — эти службы управляют resolv.conf централизованно и не затираются DHCP-клиентом
После устранения проблемы с DNS ошибка php_network_getaddresses: getaddrinfo failed в Битрикс исчезнет, и все интеграции с внешними сервисами заработают в штатном режиме.
