FQDN
Fully Qualified Domain Name — полное доменное имя узла со всеми уровнями до корня, например server1.msk.example.com.
Что такое FQDN
FQDN (Fully Qualified Domain Name) — полностью определённое доменное имя: имя узла со всеми уровнями домена вплоть до корневой зоны. Оно однозначно определяет узел во всём интернете — двух одинаковых FQDN не бывает.
server1 . msk . example . com .
│ │ │ │ └─ корневая зона (точка)
│ │ │ └──── домен верхнего уровня
│ │ └──────────── домен второго уровня
│ └──────────────────── поддомен
└──────────────────────────── имя хоста
Ключевое отличие от просто «имени» — контекст не нужен. server1 — это где угодно; server1.msk.example.com — конкретная машина. Формально настоящий FQDN заканчивается точкой (example.com.), которая обозначает корень. В DNS-зонах эту точку писать обязательно, в браузере и большинстве утилит её опускают.
Чем FQDN отличается от hostname
| hostname | FQDN | |
|---|---|---|
| Пример | server1 |
server1.msk.example.com |
| Уникальность | внутри своей сети | глобальная |
| Резолвится извне | нет | да |
| Годится для сертификата | нет | да |
$ hostname
server1
$ hostname -f
server1.msk.example.com
$ hostname -d
msk.example.com
Если hostname -f возвращает localhost или ошибку — FQDN не настроен. Это ломает больше вещей, чем кажется: Postfix подставит кривое имя в SMTP-приветствие, и письма начнут отбиваться, а логи в централизованном хранилище станут неразличимы.
Настраивается в двух местах, и оба должны совпадать:
$ sudo hostnamectl set-hostname server1.msk.example.com
# /etc/hosts — первая строка обязана содержать FQDN раньше короткого имени
127.0.1.1 server1.msk.example.com server1
Ограничения формата
Правила заданы стандартом и иногда неожиданно всплывают:
- Метка (часть между точками) — до 63 символов.
- Всё имя целиком — до 253 символов.
- Разрешены буквы, цифры и дефис; дефис не может быть первым или последним символом.
- Регистр не имеет значения:
Example.COMиexample.com— одно и то же. - Кириллица кодируется в punycode:
сервер.рф→xn--h1alffa9f.xn--p1ai.
Где FQDN обязателен
- SSL-сертификаты выпускаются на FQDN. Let's Encrypt не выдаст сертификат на
server1или на IP — только на полное имя, которое он сможет проверить публично. - Виртуальные хосты. nginx выбирает конфиг по имени из заголовка
Host, а SNI передаёт его же при установке TLS-сессии. - Кластеры. Узлы Kubernetes, брокеры Kafka, реплики БД адресуют друг друга по FQDN — при смене IP-адреса имя остаётся прежним, и конфиги не переписывают.
- Почта. PTR-запись должна разворачивать IP сервера в его FQDN, иначе крупные провайдеры отклонят соединение.
Как это работает при резолвинге
Утилиты умеют достраивать короткое имя до полного, подставляя суффикс из /etc/resolv.conf:
search msk.example.com example.com
nameserver 10.0.0.53
С таким конфигом ping server2 последовательно попробует server2.msk.example.com, затем server2.example.com. Удобно, но коварно: результат зависит от того, на какой машине вы запустили команду. Поэтому в конфигах, скриптах и мониторинге всегда пишите FQDN целиком — «у меня работало» слишком часто объясняется именно строкой search.
Связанные термины
- Домен — из его уровней собирается FQDN
- DNS — превращает FQDN в адрес
- IP-адрес — то, во что имя в итоге разрешается
- SSL-сертификат — выпускается строго на FQDN
- Адрес сервера — FQDN как способ адресовать сервер
- SNI — передаёт имя хоста при установке TLS
Готовы запустить GPU-задачу?
Запустить GPU-сервер