В системе Debian hostname возвращает неполное имя хоста системы, в то время как имя domainname возвращает имя домена (LAN). Например:

$ hostname
nas
$ domainname
lan

Я знаю, что имя хоста хранится в /etc/hostname . Все в порядке. Поэтому я могу временно изменить его, вызвав hostname othernas , или навсегда отредактировав /etc/hostname .

Но как мне изменить доменное имя? Я могу сделать это временно, вызвав domainname otherlan , но как это изменить навсегда?

Все мои попытки решить эту проблему в Google указывали на /etc/hostname , /etc/hosts , /etc/networks и /etc/network/interfaces ; но я проверил все это и не нашел ссылки на lan . Мой libc.so запрос также вызвал вызовы getdomainname и uname , но опять-таки они не говорят мне, где на самом деле хранится информация на диске.

В других ответах на этом и других форумах указывается, что /etc/hostname должен содержать полное имя хоста, а доменное имя извлекается из него. Это неправда! Если я ставлю полное имя хоста в /etc/hostname и т.д. / имя хоста, я в конечном итоге с именем хоста nas.lan и доменного имени ничего - которое не вызывает никакого конца проблем.

1 ответ1

1

Форумы правильны; DNS- имя домена берется из имени хоста, если оно есть (хотя я считаю, что все работает лучше, если оно выводится через /etc /hosts). Там нет явных настроек для этого.
(Я попытался записать свои угаданные правила о том, как Linux это определяет.)

  • Если hostname сообщает пустое имя, то hostname -f сначала использует /etc /hosts для его разрешения, затем попытается указать его для каждого домена в /etc/resolv.conf, пока не найдет полное доменное имя, существующее в DNS. Таким образом, и /etc/hosts и DNS+/etc/resolv.conf являются альтернативными способами установки «DNS-имени домена». Например, следующая запись хостов (а также запись для ::1):

    127.0.0.1  nas.lan  nas  localhost
    

    приведет к тому, что hostname -f сообщит "nas.lan".


Однако доменное имя NIS не связано ни с чем из этого. Это не имя домена локальной сети. Он не используется вместе с именем хоста ни в каком виде или форме. Он только читается клиентским программным обеспечением NIS/YP (ypbind), чтобы определить, к какому серверу подключаться, если их несколько.

Самым прямым способом настройки домена NIS является использование sysctl для kernel.domainname , обычно в /etc/sysctl.conf или /etc/sysctl.d/99-local.conf . В отличие от имени хоста (которое также имеет аналогичный sysctl), после поиска сценариев инициализации Debian кажется, что в /etc нет выделенного файла.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .