Для того, чтобы установить имя хоста делать использование hostnamectl, но только с именем хоста, как это:
hostnamectl set-hostname nodename
Чтобы установить (DNS)/etc/hosts файл для редактирования имени домена и убедиться, что:
- Существует линия
<machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>есть
- НЕТ других строк с
<some IP> <hostname>, и это включает строки с адресами 127.0.0.1и ::1(IPv6).
Обратите внимание, что если вы не используете NIS, (none)это правильный вывод при запуске domainnameкоманды.
Чтобы проверить, правильно ли задано ваше DNS-имя домена, используйте dnsdomainnameкоманду и проверьте вывод hostnamevs hostname -f(FQDN).
NIS против DNS домена
Эта проблема смутила меня, когда я впервые столкнулся с ней. Похоже, domainnameкоманда предшествовала популярности интернета. Вместо имени домена DNS он отображает или задает системное доменное имя NIS (информационная сеть), известное как YP (желтые страницы) (группа компьютеров, услуги которых предоставляются главным сервером NIS). Эта команда просто отображает имя, возвращаемое getdomainname(2)стандартной библиотечной функцией. ( nisdomainnameи ypdomainnameявляются альтернативными именами для этой команды.)
Показать полное доменное имя или DNS-имя домена
Чтобы проверить доменное имя DNS (Интернет), вы должны запустить dnsdomainnameкоманду или hostnameс -d, --domainопциями. (Обратите внимание, что dnsdomainnameкоманду нельзя использовать для установки имени домена DNS - она используется только для его отображения.)
Чтобы отобразить полное доменное имя (полное доменное имя) системы, запустите hostnameс -f, --fqdn, --longпараметрами (аналогично, эту команду нельзя использовать для установки части имени домена).
Приведенные выше команды используют системный распознаватель (реализованный gethostbyname(3)функцией из стандартной библиотеки, как указано в POSIX) для определения доменного имени DNS и полного доменного имени.
Разрешение имени
В современных операционных системах, таких как RHEL 7, hostsзапись /etc/nsswitch.confиспользуется для разрешения имен хостов. На вашем компьютере с CentOS 7 эта строка настроена как (по умолчанию для CentOS 7):
hosts: files dns
Это означает, что когда функции распознавателя ищут имена хостов или IP-адрес, они сначала проверяют наличие записи в /etc/hosts файле, а затем пробуют DNS-сервер (ы), которые перечислены в /etc/resolv.conf.
При запуске hostname -fдля получения полного доменного имени хоста функции распознавателя пытаются получить полное доменное имя для имени хоста системы. Если хост не указан в /etc/hostsфайле или на соответствующем DNS-сервере, попытка завершается неудачно и hostnameсообщает об этом Name or service not known.
Когда hostname -dвыполняется получение доменного имени, выполняются те же операции, и часть имени домена определяется путем удаления части имени хоста и первой точки из полного доменного имени.
Настройте доменное имя
1. Обновите соответствующий DNS-сервер
В моем случае я уже добавил запись для моей новой машины CentOS 7 на DNS-сервере для моей локальной сети, поэтому, когда в /etc/hostsфайле не было найдено полное доменное имя при запуске hostnameс параметром -dили -f, локальные службы DNS могли полностью разрешите полное доменное имя моего нового имени хоста.
2. Используйте /etc/hostsфайл
Если DNS-сервер не был настроен, в /etc/hostsфайле можно указать полное доменное имя . Наиболее распространенный способ сделать это - указать основной IP-адрес системы, затем полное доменное имя и его короткое имя хоста. Например,
172.22.0.9 nodename.domainname nodename
Выдержка из hostnameсправочной страницы
Вы не можете изменить полное доменное имя с помощью hostnameили dnsdomainname.
Рекомендуемый метод установки полного доменного имени - сделать имя хоста псевдонимом для полного имени, используя /etc/hosts,DNS или NIS. Например, если имя хоста было «ursula», можно было бы написать строку /etc/hosts:
27.0.1.1 ursula.example.com ursula
Технически: полное доменное имя - это имя, которое getaddrinfo (3) возвращает для имени хоста, возвращаемого gethostname (2). DNS-имя домена является частью после первой точки.
Поэтому от конфигурации преобразователя (обычно в /etc/host.conf) зависит,
как вы можете его изменить. Обычно файл hosts анализируется перед DNS или NIS, поэтому чаще всего менять полное доменное имя в
/etc/hosts.
hostname -fкоманда не работает на моем CentOS vm.