Hostname — ім’я сервера в мережі. Воно використовується в запрошенні командного рядка, логах, поштових заголовках та PTR-записах. Правильний hostname — це FQDN виду server.example.com.
Типи hostname у Linux
| Тип | Приклад | Опис |
|---|---|---|
| static | server.example.com | Основний, зберігається в /etc/hostname |
| transient | server | Тимчасовий, встановлюється ядром |
| pretty | My Server | Для UI (може містити пробіли) |
Зміна hostname — сучасний спосіб (systemd)
# Переглянути поточний hostname
hostnamectl status
# Змінити hostname
sudo hostnamectl set-hostname server.example.com
# Перевірити
hostname
hostname --fqdn
Оновлення /etc/hosts
Після зміни hostname обов’язково оновіть /etc/hosts:
sudo nano /etc/hosts
# Додайте або змініть рядок:
127.0.1.1 server.example.com server
# Також переконайтеся, що публічна IP теж вказана:
YOUR.PUBLIC.IP server.example.com server
Зміна на старих системах (без systemd)
# CentOS 6 / Debian 7 та старіші
sudo nano /etc/hostname
# Впишіть: server.example.com
# Застосувати без перезавантаження
sudo hostname server.example.com
Перевірка після зміни
# Поточний hostname
hostname
# FQDN
hostname --fqdn
# Повний статус
hostnamectl status
# Нове запрошення з’явиться після:
exec bash # або відкрити нову SSH-сесію
mail.yourdomain.com.Hostname і SSL-сертифікати
Let's Encrypt під час видачі сертифіката перевіряє, що домен вказує на вашу IP. Якщо hostname сервера — server.example.com, домен server.example.com повинен мати A-запис на IP цього сервера.
localhost або server без домену спричинить проблеми з Postfix, SSL-генерацією та деякими панелями керування. Завжди вказуйте FQDN.Розбір типових помилок
Після зміни hostname команда "sudo" починає скаржитися "unable to resolve host" — sudo під час запуску намагається розв'язати поточний hostname через DNS або /etc/hosts, і якщо нове ім'я там не прописане, отримує помилку.
sudo: unable to resolve host server.example.com: Name or service not known
Команда все одно виконується, але із затримкою і попередженням під час кожного запуску. Виправляється додаванням рядка в /etc/hosts з новим hostname, як описано вище — ця помилка майже завжди означає, що крок з /etc/hosts пропущено.
Postfix перестає приймати пошту з помилкою "mail for example.com loops back to myself" — виникає, якщо myhostname у конфігурації Postfix збігається з доменом, для якого сервер приймає пошту, але не з MX-записом.
postfix/smtpd[1234]: warning: mail for example.com loops back to myself
Hostname поштового сервера має бути піддоменом, а не голим доменом: mail.example.com, а не example.com. Після зміни hostname обов'язково перевірте postconf myhostname і перезапустіть Postfix.
Способи задати hostname: порівняння
| Спосіб | Постійність | Системи | Потребує перезавантаження |
|---|---|---|---|
| hostnamectl set-hostname | Постійно, до наступної зміни | systemd (Ubuntu, Debian, CentOS 7+) | Ні |
| Правка /etc/hostname вручну | Постійно | Будь-який Linux, включно без systemd | Так, або команда hostname |
| hostname (без sudo hostnamectl) | Тимчасово, до перезавантаження | Будь-який Linux | Ні, але скидається |
| DHCP-опція hostname | Залежить від DHCP-сервера | VPS з автоналаштуванням мережі | Може бути перезаписано |
Коли зміну hostname краще не робити вручну
- Сервер вже налаштований для приймання пошти, і старий hostname прописаний у PTR-записі провайдера — спочатку змініть PTR на нове ім'я, інакше пошта почне відхилятися одразу після зміни.
- На сервері випущені SSL-сертифікати Let's Encrypt на старе ім'я — після зміни hostname сертифікати не перевипустяться автоматично, потрібно запускати certbot знову на новий домен.
- Використовуються кластерні конфігурації (Galera, Keepalived) — там hostname часто прив'язаний до конфігурації кластера, і довільна зміна може порушити зв'язок між вузлами.
Перевірка результату
- Переконайтеся, що нове ім'я застосувалося:
hostnamectl statusмає показувати потрібний Static hostname без помилок. - Перевірте узгодженість з /etc/hosts:
getent hosts $(hostname)має повернути коректну IP-адресу, а не помилку. - Перевірте PTR-запис, якщо сервер використовується для пошти:
dig -x ВАША_IP +shortмає повернути нове hostname. - Перезапустіть залежні сервіси (Postfix, панелі керування) і перевірте логи на помилки, пов'язані зі старим іменем:
journalctl -u postfix --since "5 min ago".
Щодо налаштування самого поштового сервера після зміни hostname див. статтю про Postfix, а для випуску сертифіката на новий домен — посібник з SSL і Certbot.
Часті питання
Чи обов'язково перезавантажувати сервер після зміни hostname?
Перезавантаження не потрібне — команда hostnamectl set-hostname застосовує зміну одразу, без рестарту системи. Відкриті термінальні сесії і вже запущені служби здатні і далі використовувати старе ім'я, доки їх не перезапустять, тож варто перезапустити залежні від hostname служби на кшталт Postfix і відкрити нову SSH-сесію для перевірки.
Hostname — це те саме, що доменне ім'я сайту?
Hostname і доменне ім'я сайту — різні речі, хоча часто збігаються за форматом. Hostname ідентифікує саме сервер у мережі і використовується системними службами, а домен сайту вказує на IP через DNS і здатен належати геть іншому серверу чи змінюватися незалежно від hostname. Зміна одного автоматично не перейменовує інше.
Чому в терміналі не одразу видно нове ім'я у запрошенні командного рядка?
Запрошення командного рядка зчитує hostname один раз під час запуску оболонки, тому вже відкрита сесія не оновиться сама після команди hostnamectl. Нове ім'я з'явиться лише у новій сесії або після команди exec bash, яка перезапускає поточний shell із вже зміненими змінними оточення без повторного логіну по SSH.
Чи дозволено у hostname вживати великі літери, підкреслення та цифру на початку імені?
Великі літери і цифри у hostname дозволені, а ось символ підкреслення і цифра на першому місці здатні спричиняти проблеми у частини поштових серверів і старих DNS-резолверів, хоча формально RFC це не завжди прямо забороняє. Безпечніше використовувати малі латинські літери, цифри і дефіс, не ставлячи дефіс чи цифру першим символом.