Как изменить hostname в Linux без перезагрузки

Быстрые ссылки
- Изменение имени хоста
Изменение имени хоста
Если вы администрируете сервер и не можете допустить простоя, то можно сменить hostname без полной перезагрузки системы. Процесс состоит из трёх частей: изменение конфигурации для постоянного эффекта, изменение локного /etc/hosts, и временная смена текущего имени в памяти ядра/демонов.
- Сначала измените конфигурационный файл, который отвечает за имя хоста. Точный файл зависит от дистрибутива:
- Red Hat-подобные (RHEL, CentOS, Fedora): отредактируйте /etc/sysconfig/network и найдите строку HOSTNAME=
- SuSE: отредактируйте /etc/HOSTNAME
- Debian/Ubuntu: отредактируйте /etc/hostname
Пример: в RHEL-подобных замените строку вида
HOSTNAME=oldhostnameна
HOSTNAME=mdmvr14s9db
- Обновите локальный файл /etc/hosts, чтобы перекрестные ссылки на старое имя указывали на новое. Это важно для локальных соединений и для некоторых сервисов, которые читают /etc/hosts до запроса DNS.
Найдите строку с вашим старым именем, например:

Замените её на новую запись:

- Теперь временно установите новое имя в текущей сессии ядра/демонов. Есть два подхода:
- Портабельный, старый способ:
# hostname mdmvr14s9db- Современный systemd-путь (рекомендуется на системах с systemd):
# hostnamectl set-hostname mdmvr14s9dbПосле этого проверьте текущий hostname:
$ hostname
mdmvr14s9db- Перезапустите сетевые службы, чтобы все сетевые интерфейсы и демоны подхватили новое имя. На RHEL-подобных системах с init.d/Сервисами:
# service network restartИли универсальный путь (если у вас /etc/init.d):
#/etc/init.d/network restartНа systemd-системах можно перезапустить NetworkManager или соответствующий сетевой сервис:
# systemctl restart NetworkManager
# или
# systemctl restart network- После всех шагов протестируйте:
- Выполните
hostnameиhostnamectl. - Проверьте локальные соединения и сервисы, которые используют имя хоста.
- Обновите DNS: измените A-запись в вашей зоне и перезапустите/обновите демона DNS, если вы управляете им самостоятельно.
Важно: смена имени хоста локально не распространяет его по сети. DNS-пропагация и кэширование по-прежнему влияют на доступность для внешних клиентов.
Частые проблемы и когда это не сработает
- Сервисы с жёстко прописанными (hard-coded) именами в конфигурации продолжат обращаться по старому имени — их нужно обновить вручную.
- Системы с кластерными конфигурациями или специальными лицензиями (где имя хоста используется в лицензионных ключах) могут потребовать дополнительных действий.
- Если система использует внешнюю систему управления конфигурациями (Puppet, Chef, Ansible), предварительно обновите соответствующие манифесты/рецепты, чтобы изменения не были перезаписаны.
- DNS-кэш у клиентов и прокси может задержать доступ до сервиса после смены A-записи.
Альтернативные подходы
- Использовать hostnamectl для систем с systemd (встроенный, атомарный метод).
- Если невозможно быстро менять DNS, настройте дополнительный A-запись или CNAME на старое имя, указывающий на новый IP/хост, до завершения пропагации.
- В контейнерных средах (Docker, Kubernetes) обычно изменяют отображаемое имя в orchestrator/конфигурации контейнера вместо изменения внутри контейнера.
Чек‑лист перед и после смены hostname (роль: системный администратор)
Перед сменой:
- Сделать резервную копию /etc/hosts, /etc/hostname, /etc/sysconfig/network.
- Проверить конфигурации приложений на жёсткие ссылки по имени хоста.
- Сообщить заинтересованным сторонам (мониторинг, CI/CD, поддержка).
Выполнение:
- Обновить конфигурационный файл для дистрибутива.
- Обновить /etc/hosts.
- Выполнить
hostnamectl set-hostnameилиhostname. - Перезапустить сетевые сервисы.
- Обновить запись в DNS (A-запись).
После смены:
- Проверить, что мониторинг и бэкапы видят хост под новым именем.
- Проверить логи на ошибки, связанные с именем хоста.
- Обновить документацию и CMDB.
Шпаргалка команд
# Просмотреть текущее имя
hostname
hostnamectl status
# Временно задать имя
hostname new-name
# Постоянно задать имя на systemd-системах
hostnamectl set-hostname new-name
# Перезапустить сетевые сервисы
service network restart
/etc/init.d/network restart
systemctl restart NetworkManager
# Проверить /etc/hosts
cat /etc/hosts
# Проверить DNS из клиента
dig +short your-host.example.com
nslookup your-host.example.comРиски и рекомендации по снижению последствий
- Риск: потеря связи мониторинга и пользователей. Смягчение: уведомить команды и задать переходную DNS-запись.
- Риск: служба использует старое имя в конфигурации. Смягчение: провести аудит конфигов и применить пошаговое переключение.
- Риск: автоматизированные системы перезаписывают имя. Смягчение: синхронизировать изменения с системой управления конфигурацией.
Критерии приёмки
- Команда
hostnameиhostnamectlвозвращают новое имя. - Запись в /etc/hosts обновлена и содержит новое имя.
- Сервисы запускаются без ошибок, связанных с именем хоста.
- Мониторинг и бэкапы видят машину под новым именем.
- DNS A-запись обновлена и пропагация завершена (по возможности).
Однострочный глоссарий
- hostname — имя хоста, которое ОС использует для идентификации машины в сети.
- DNS A-запись — привязка доменного имени к IPv4-адресу.
- hostnamectl — инструмент systemd для управления именем хоста.
Итог
Изменение hostname без перезагрузки — стандартная задача администрирования: поменяйте конфигурацию для постоянного эффекта, обновите /etc/hosts, временно установите имя в памяти и перезапустите сетевые сервисы. Не забудьте про DNS, конфигурации приложений и системы управления конфигурациями. Планирование и проверка минимизируют риск простоя.
ВАЖНО: всегда сохраняйте резервные копии конфигураций и согласуйте смену с командами, которые зависят от имени хоста.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента