Гид по технологиям

Исправить ошибку unable to resolve host в Linux

4 min read Linux Обновлено 22 Dec 2025
Исправить unable to resolve host в Linux
Исправить unable to resolve host в Linux

Терминал Linux с командами

Что такое hostname и зачем его менять

Hostname — это метка компьютера в сети и в локальной системе. Она нужна, чтобы быстрее понять, к какому устройству вы подключены, особенно при работе с несколькими серверами. Например, «кухонный-pc» или «db-master» дают смысл, в отличие от случайных имён провайдера.

Изменение hostname в современных дистрибутивах Debian/Ubuntu обычно выполняют через утилиту hostnamectl.

Откройте терминал (Ctrl + Alt + T) и выполните команду:

sudo hostnamectl set-hostname your-new-hostname

После выполнения команды выйдите из сессии и зайдите снова — приглашение оболочки (prompt) отобразит новое имя.

Почему появляется ошибка «unable to resolve host» и что она означает

Если после смены hostname при выполнении команд с sudo появляется сообщение вроде «unable to resolve host MUOVPS: Name or service not known», это означает, что новое имя хоста не сопоставлено с локальным адресом в /etc/hosts. Система пытается разрешить собственное имя хоста до IP-адреса и не находит соответствующей записи.

Это не блокирует работу, но приводит к предупреждениям при использовании sudo и может мешать скриптам или сервисам, которые рассчитывают на корректную локальную резолюцию.

Команда для изменения hostname в терминале

Как проверить текущие значения hostname и /etc/hosts

Посмотреть текущее системное имя хоста:

cat /etc/hostname

Проверить, есть ли оно в локальном файле резолвинга:

cat /etc/hosts

Если вывода с новым именем нет в /etc/hosts, система не сможет локально разрешить собственное имя.

Вывод команд в терминале, показывающий содержимое /etc/hostname и /etc/hosts

Быстрое исправление — пошаговая инструкция

  1. Откройте /etc/hosts в редакторе с правами root. Например, используя nano:
sudo nano /etc/hosts
  1. Найдите строку, где перечислены локальные адреса, чаще всего это строки вида:
127.0.0.1   localhost
127.0.1.1   old-hostname
  1. Добавьте или измените строку, чтобы включить новое имя. Для простого локального использования достаточно:
127.0.1.1   your-new-hostname

Или, если хотите, можно добавить алиасы через пробел:

127.0.1.1   your-new-hostname   alias-hostname
  1. Сохраните файл (Ctrl + O), закройте редактор (Ctrl + X).

  2. Проверьте, что sudo больше не выводит ошибку, выполнив любую команду с sudo:

sudo whoami
  1. При необходимости перезапустите сетевые сервисы или перезагрузите систему.

Файл /etc/hosts открыт в nano с новой записью MUOVPS

Важно: в некоторых системах строка с 127.0.1.1 отсутствует — тогда можно добавить новое имя рядом с 127.0.0.1, но обычно рекомендуется использовать 127.0.1.1 для корректного разделения localhost и имени хоста.

Примеры корректных записей /etc/hosts

Минимальный корректный набор записей для рабочего сервера:

127.0.0.1   localhost
127.0.1.1   your-new-hostname
::1 localhost ip6-localhost ip6-loopback

Для сервера с фиксированным публичным IP можно добавить:

203.0.113.42    your-new-hostname.example.com   your-new-hostname

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

Когда этот способ может не сработать

  • Если хост имеет динамический DHCP-контролируемый hostname, служба сети может перезаписать локальные записи при переподключении.
  • Если система использует нестандартный механизм разрешения имён (например, systemd-resolved с конфигурацией, перенаправляющей резолвинг), правки в /etc/hosts могут требовать перезапуска systemd-resolved.
  • Если в конфигурации сети прописан другой файл hosts или используется LDAP/AD для резолвинга — локальная запись может игнорироваться.

Альтернативные подходы

  • Использовать hostnamectl для установки постоянного имени и затем вручную добавить запись в /etc/hosts.
  • Настроить локальный DNS-сервер (например, dnsmasq) для централизованной резолюции на инфраструктуре с множеством машин.
  • Для кратковременных задач использовать временную запись в /etc/hosts через скрипт при старте сервиса.

Быстрый чеклист для администратора

  • Проверить /etc/hostname и убедиться в корректности имени.
  • Открыть /etc/hosts и найти/добавить запись с новым именем.
  • Проверить sudo и системные журналы на предмет других ошибок.
  • Перезапустить network/systemd-resolved при необходимости.

Критерии приёмки

  • sudo не показывает сообщений «unable to resolve host».
  • Команда hostnamectl и /etc/hostname возвращают ожидаемое имя.
  • В /etc/hosts присутствует строка с вашим именем хоста.

Мини-методология быстрого ремонта (SOP)

  1. Диагностика: выполнить cat /etc/hostname и cat /etc/hosts.
  2. Исправление: sudo nano /etc/hosts — добавить 127.0.1.1 your-new-hostname.
  3. Проверка: sudo whoami; hostnamectl status.
  4. Повторная проверка через журнал: journalctl -xe (при наличии проблем).

Диагностическое дерево

flowchart TD
  A[Возникла ошибка при sudo] --> B{Появляется «unable to resolve host»}
  B -- Да --> C[cat /etc/hostname]
  C --> D[cat /etc/hosts]
  D --> E{Есть ли имя в /etc/hosts?}
  E -- Нет --> F[Добавить 127.0.1.1 your-new-hostname]
  F --> G[Проверить sudo]
  E -- Да --> H[Проверить systemd-resolved и DNS]
  H --> I[Перезапустить службу или исправить DNS]
  G --> J[Готово]
  I --> J

Короткий словарь терминов

  • hostname — системное имя компьютера.
  • /etc/hosts — локальный файл сопоставления имён и IP.
  • hostnamectl — утилита для управления именем хоста.
  • sudo — выполнение команд от имени администратора.

Часто задаваемые вопросы

Почему нельзя просто оставить предупреждение и не править файл?

Предупреждение может мешать автоматизированным скриптам и создавать ложные срабатывания в логах. Кроме того, корректная настройка упрощает обслуживание серверов.

Можно ли добавить несколько имён в одну строку /etc/hosts?

Да, через пробел можно указать основное имя и алиасы: 127.0.1.1 your-new-hostname alias1 alias2.

Нужно ли перезагружать систему после изменений?

Обычно нет — изменения вступают в силу сразу. Если используется systemd-resolved или другой кэширующий резолвер, может потребоваться его перезапуск.

Резюме

Исправление ошибки «unable to resolve host» обычно занимает минуту: установите корректное имя через hostnamectl и добавьте соответствующую запись в /etc/hosts. Это предотвращает предупреждения и делает систему более предсказуемой.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Изменить фон GRUB — как установить splashimage
Linux

Изменить фон GRUB — как установить splashimage

Проверка совместимости игр с Steam Deck
Игры

Проверка совместимости игр с Steam Deck

Отключить и удалить предложенные приложения — Windows 10
Windows 10

Отключить и удалить предложенные приложения — Windows 10

PWA Google Drive: установка и использование
Облако

PWA Google Drive: установка и использование

Как найти бесплатный Wi‑Fi в поездке
Путешествия

Как найти бесплатный Wi‑Fi в поездке

Почему письма попадают в спам Gmail и как их вернуть
Электронная почта

Почему письма попадают в спам Gmail и как их вернуть