Исправить ошибку unable to resolve host в 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 и /etc/hosts
Посмотреть текущее системное имя хоста:
cat /etc/hostnameПроверить, есть ли оно в локальном файле резолвинга:
cat /etc/hostsЕсли вывода с новым именем нет в /etc/hosts, система не сможет локально разрешить собственное имя.
Быстрое исправление — пошаговая инструкция
- Откройте /etc/hosts в редакторе с правами root. Например, используя nano:
sudo nano /etc/hosts- Найдите строку, где перечислены локальные адреса, чаще всего это строки вида:
127.0.0.1 localhost
127.0.1.1 old-hostname- Добавьте или измените строку, чтобы включить новое имя. Для простого локального использования достаточно:
127.0.1.1 your-new-hostnameИли, если хотите, можно добавить алиасы через пробел:
127.0.1.1 your-new-hostname alias-hostnameСохраните файл (Ctrl + O), закройте редактор (Ctrl + X).
Проверьте, что sudo больше не выводит ошибку, выполнив любую команду с sudo:
sudo whoami- При необходимости перезапустите сетевые сервисы или перезагрузите систему.
Важно: в некоторых системах строка с 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)
- Диагностика: выполнить cat /etc/hostname и cat /etc/hosts.
- Исправление: sudo nano /etc/hosts — добавить 127.0.1.1 your-new-hostname.
- Проверка: sudo whoami; hostnamectl status.
- Повторная проверка через журнал: 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. Это предотвращает предупреждения и делает систему более предсказуемой.
Похожие материалы
Изменить фон GRUB — как установить splashimage
Проверка совместимости игр с Steam Deck
Отключить и удалить предложенные приложения — Windows 10
PWA Google Drive: установка и использование
Как найти бесплатный Wi‑Fi в поездке