Ubuntu Ubuntu Linux

Ubuntu Linux: после смены hostname часть служб выдаёт ошибку

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

После hostnamectl set-hostname в Ubuntu компьютер имеет новое имя, но sudo, почта, локальные службы или программы по-прежнему ищут старое. Надо отделить имя самого компьютера от DNS-записей и собственных конфигураций приложений.

В этой статье
  1. Что означает проблема и кому подходит инструкция
  2. Возможные причины и отличительные признаки
  3. Диагностика и пошаговое устранение
  4. Как убедиться, что неисправность устранена
  5. Если результат не получен

#Что означает проблема и кому подходит инструкция

После hostnamectl set-hostname в Ubuntu компьютер имеет новое имя, но sudo, почта, локальные службы или программы по-прежнему ищут старое. Надо отделить имя самого компьютера от DNS-записей и собственных конфигураций приложений.

#Возможные причины и отличительные признаки

Возможная причинаКак узнатьЧто делать
Старое имя осталось в /etc/hostsЛокальное сопоставление имени и адреса не обновилось.sudo пишет unable to resolve host, getent не находит новое имя.Сверить hostname и локальную запись.
Приложение хранит имя отдельноСлужба настроена на старый FQDN или сертификат.В журнале есть ссылка на старый домен.Изменять только её собственную конфигурацию.
DNS ещё не изменёнДругие устройства продолжают искать старое имя.Локально имя новое, с другого устройства DNS показывает прежнюю запись.Изменить учётную запись DNS у её администратора.

#Диагностика и пошаговое устранение

  1. 1. Запишите старое и новое имя без новых правокОткройте Терминал Ubuntu, запустите hostnamectl и hostname -f (последняя команда может сообщить ошибку при отсутствии FQDN). Найдите имя в журнале проблемной службы; не меняйте hostname многократно ради проверки.
    Linux · Терминал (Bash)Команда
    Вывод покажет статическое имя, текущее имя и возможное полное доменное имя.
    hostnamectl
    hostname
    hostname -f
  1. 2. Проверьте разрешение нового имени локальноСопоставьте hostname с /etc/hosts и getent hosts. В установках Ubuntu запись 127.0.1.1 может связывать локальное имя с loopback, но это не обязательная схема для сервера с полноценным DNS. Не стирайте 127.0.0.1 localhost.
  2. getent может не вывести ничего, если локальное имя не разрешается
    Linux · Терминал (Bash)Команда
    getent может не вывести ничего, если локальное имя не разрешается.
    cat /etc/hostname
    cat /etc/hosts
    getent hosts "$(hostname)"
  1. 3. Исправьте только подтверждённую локальную записьЕсли проблема именно в /etc/hosts, сделайте резервную копию и откройте sudoedit /etc/hosts. В существующей строке для локального имени поправьте старое название на новое, не трогая localhost и адреса реальных серверов. На машине с управляемыми cloud-init файлами проверьте, не перепишется ли файл при загрузке.
  2. Изменяется только текст локальной таблицы имён
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Изменяется только текст локальной таблицы имён. Откат — копия файла.
    sudo cp -a /etc/hosts /etc/hosts.backup-whelp
    sudoedit /etc/hosts

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. 4. Проверьте конфигурации служб отдельноДля каждого пострадавшего приложения выполните systemctl status и journalctl -u, записав имя и точный текст ошибки. Домен в SSL-сертификате, поле server_name веб-сервера и идентификатор почты не обязаны автоматически меняться вместе с hostname. Не заменяйте старое имя по всему /etc одной командой.
    Linux · Терминал (Bash)Команда
    Ищите реальные имена, но учитывайте, что ошибки могут иметь другую причину.
    systemctl --failed --no-pager
    journalctl -b -p err --no-pager -n 60
  1. 5. Проверьте имена на другом компьютереЕсли хосту нужен доступ по DNS с других машин, проверьте запись с клиента (nslookup ИМЯ.example или getent hosts на Linux) и сравните IP. DNS-администратор должен изменить A/AAAA и при необходимости PTR; локальный /etc/hosts другого компьютера также может удерживать старую запись. Не публикуйте внутренние имена.
    Linux · Терминал (Bash)Команда
    Проверка имени. Полный домен подставьте самостоятельно.
    getent hosts "$(hostname)"
    getent ahostsv4 ПОЛНОЕ_ИМЯ
  1. 6. Убедитесь в сохранении после перезапускаПосле успешных локальных проверок согласуйте перезагрузку или перезапуск конкретного сервиса; убедитесь, что hostnamectl, getent и реально нужный сервис работают. Если после загрузки имя вернулось, найдите систему управления именем (cloud-init, конфигурация ВМ, DHCP), а не повторяйте ручную правку.
    Linux · Терминал (Bash)Команда
    Не перезагружать удалённый сервер без запасного доступа.
    hostnamectl
    getent hosts "$(hostname)"

#Как убедиться, что неисправность устранена

Результат подтверждён, когда новое имя одинаково определяется локально и там, где оно действительно должно использоваться, а службы не сообщают об ошибке старого имени. DNS, сертификаты и имена приложений проверяются отдельно.

#Если результат не получен

Не повторяйте опасные действия наугад. Сохраните точную формулировку ошибки, вывод диагностики без секретов, версию Ubuntu и данные о затронутом компоненте. Верните лишь собственные изменения из резервной копии; если затронута загрузка, диски или рабочий сервер, воспользуйтесь консолью восстановления либо помощью администратора.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.