Как правильно настроить имя хоста сервера и FQDN
Уровень: Начальный
Примерное время: ≈ 15 минут
Цель: Настроить постоянное имя хоста сервера и задать Fully Qualified Domain Name (FQDN) для корректной идентификации системы и локального DNS-резолвинга.
Введение
Hostname – это метка, назначенная устройству в сети, а Fully Qualified Domain Name (FQDN) включает и hostname, и домен, к которому он относится (например, web-server-01.example.com). Правильная настройка критична для сервисов вроде почтовых серверов (Postfix, Exim), внутренней сетевой координации и идентификации серверов в приглашении терминала в большом парке.
В этом руководстве вы зададите постоянный hostname с помощью инструментов systemd и настроите локальное переопределение FQDN.
Насчёт типов FQDN:
- Public FQDN: задаётся через публичный DNS (например, Cloudflare, Route53). Так мир находит ваш сервер.
- Local FQDN: то, как сервер идентифицирует себя и резолвит собственное имя внутри. В идеале они должны совпадать, но именно локальная конфигурация обеспечивает стабильность системы.
Предварительные требования
Перед началом убедитесь, что у вас есть:
- Операционная система: Ubuntu 20.04/22.04/24.04 LTS, Debian 11/12 или RHEL/CentOS/AlmaLinux 8/9.
- Доступ: пользователь с правами
sudo. - Необходимые знания: базовое использование терминала Linux и текстовых редакторов (например,
nanoилиvim).
Шаг 1: Проверьте текущую конфигурацию
Сначала проверьте, каким именем сейчас считает себя ваш сервер.
Выполните команду статуса:
hostnamectl status
Ожидаемый вывод (или похожий):
Static hostname: localhost.localdomain Icon name: computer-vm Chassis: vm Machine ID: abc123def456 Boot ID: 123abc456def Virtualization: kvm Operating System: Ubuntu 24.04 LTS Kernel: Linux 6.8.0-31-generic Architecture: x86-64
Далее проверьте, корректно ли резолвится FQDN:
hostname -f
Если система возвращает пустую строку, ровно localhost или ошибку о невозможности резолвинга хоста, ваш FQDN настроен неправильно.
Шаг 2: Установите новый hostname
Используйте утилиту hostnamectl, чтобы безопасно и постоянно установить статический hostname. Избегайте ручного редактирования /etc/hostname, так как hostnamectl управляет им корректно для вашей системы.
Выполните команду ниже, заменив <YOUR_HOSTNAME> на желаемое короткое имя (например, web-01):
sudo hostnamectl set-hostname <YOUR_HOSTNAME>
Хотя Linux технически допускает точки в hostname, рекомендуется использовать только строчные буквы, цифры и дефисы. Точки в коротком hostname (например, web.01) могут вызвать путаницу с FQDN, поэтому их обычно избегают.
Команда применяет изменения сразу. Вы можете заметить, что текущее приглашение терминала (обычно user@old-hostname:~$) не изменилось мгновенно. Выйдите и войдите снова или откройте новую сессию bash, набрав bash, чтобы увидеть обновлённое имя.
Шаг 3: Обновите /etc/hosts для резолвинга FQDN
Локальный FQDN системы определяется порядком поиска резолвера, заданным в /etc/nsswitch.conf (обычно строка hosts: files dns). Это означает, что система проверяет /etc/hosts до обращения к внешнему DNS.
Самый безопасный шаблон для production (особенно на Debian/Ubuntu) – привязать FQDN к loopback-адресу 127.0.1.1. Это гарантирует резолвинг имени даже при недоступной сети или изменении публичного IP.
Откройте файл hosts:
sudo nano /etc/hosts
Вы увидите существующее содержимое, похожее на это:
127.0.0.1 localhost 127.0.1.1 old-hostname
Не удаляйте строку 127.0.0.1 localhost. Вместо этого обновите строку 127.0.1.1 (или добавьте её), указав сначала FQDN, а затем короткий hostname.
Обновите файл по следующему шаблону:
127.0.0.1 localhost 127.0.1.1 <YOUR_FQDN> <YOUR_HOSTNAME>
Пример: если ваш FQDN – web-01.example.com, а hostname – web-01:
127.0.0.1 localhost 127.0.1.1 web-01.example.com web-01
Избегайте использования публичных IP-адресов в /etc/hosts, если это не требуется специально. Если IP-адрес изменится (что часто бывает в облачных средах), а вы забудете обновить этот файл, резолвинг имени перестанет работать.
Сохраните и закройте файл (в nano нажмите Ctrl+O, Enter, затем Ctrl+X).
Шаг 4: Проверьте изменения
Теперь убедитесь, что система корректно регистрирует FQDN.
Проверьте активный FQDN:
hostname -f
Ожидаемый вывод:
web-01.example.com
Проверьте активный короткий hostname:
hostname -s
Ожидаемый вывод:
web-01
Наконец, пропингуйте FQDN, чтобы убедиться, что он успешно резолвится обратно в IP-адрес, указанный в hosts-файле:
ping -c 3 <YOUR_FQDN>
Выполнив эти шаги, сервер сможет корректно идентифицировать и резолвить собственное сетевое имя.
Шаг 5: Примечание о cloud-init для настройки Hostname на VPS
При настройке Hostname на VPS в AWS EC2, Google Cloud Compute Engine или DigitalOcean важно учитывать работу cloud-init. Этот механизм повторно применяет часть системной конфигурации при загрузке и нередко перезаписывает изменения Hostname после перезапуска, поэтому даже корректная конфигурация Hostname в Linux и заданный Domain Name могут выглядеть как несохранённые.
Если hostname откатывается именно после перезагрузки, настройте cloud-init так, чтобы он сохранял hostname.
Откройте конфигурацию cloud-init:
sudo nano /etc/cloud/cloud.cfg
Найдите параметр preserve_hostname: false и измените его на true:
preserve_hostname: true
Если строки нет, добавьте её в конец конфигурационного файла. Сохраните и закройте.
Если Hostname не сохраняется после перезагрузки, сначала проверьте вывод hostnamectl status и убедитесь, что статическое имя задано правильно, а затем проверьте, не возвращает ли cloud-init прежнее значение. Если hostname -f не показывает ожидаемый FQDN, проверьте запись 127.0.1.1 в /etc/hosts и убедитесь, что после FQDN указан короткий Hostname. Если приложения и дальше сообщают старое имя, сопоставьте Domain Name сервера, порядок резолвинга в /etc/nsswitch.conf и метаданные облачного провайдера.
Откат (Rollback)
Если вы ошиблись в настройках и нужно вернуть сервер к состоянию по умолчанию:
Сбросьте короткий hostname:
sudo hostnamectl set-hostname localhost
Восстановите файл /etc/hosts, удалив вашу строку с кастомным IP. Убедитесь, что loopback выглядит так:
sudo nano /etc/hosts
127.0.0.1 localhost 127.0.1.1 localhost
Заключение
Вы успешно задали постоянный hostname и настроили локальное сопоставление, чтобы получить корректный FQDN. Правильная конфигурация создаёт базовый уровень «идентичности» для веб-сервисов, почтовых конфигураций и инструментов удалённой оркестрации.
Версия документа: 1.0
Последнее обновление: Апрель 2026
Ответственный: Команда технической документации