Как машина определяет имя своего хоста?

282
Kent Pawar

Ниже приведен вывод hostnameкоманды.

bash-3.2$ hostname server1 

Как hostnameкоманда определяет имя хоста server1? Я предполагаю, что он проверяет DNS-сервер, так как это то, что DNS должен делать .. или он получает эту информацию из /etc/hosts/файла или другого локального файла?

bash-3.2$ cat /etc/hosts # # Internet host table # 127.0.0.1 localhost 123.123.9.133 server1 loghost 123.123.9.134 load-balancer.tsg.ge.com load-balancer bash-3.2$ uname SunOS 
0
@mpy - плохо ... я не хотел использовать настоящие IP-адреса и имена серверов, с которыми я работаю. Я пропустил, чтобы замаскировать имя сервера. Я исправил это выше. Не могли бы вы удалить вышеуказанный комментарий по той же причине. Ждем ваших отзывов. Спасибо! Kent Pawar 11 лет назад 0
Конечно, я удалил свой комментарий. Но имейте в виду, что ваше реальное имя сервера все еще находится в (общедоступной) истории изменений вашего вопроса! mpy 11 лет назад 1

1 ответ на вопрос

2
mveroone

Во-первых, способ разрешения имен настраивается обычно в /etc/nsswitch.conf. У вас будет такая строка:

хосты: файлы днс

Это означает, что он сначала прочитает файл / etc / hosts и, если не решит, спросит DNS.

Теперь, как указано в man hostnameназвании, машина настроена в системе и опрошена с помощью системного вызова gethostname(). Это то же самое, unameчто дает имя ядра без аргумента и имя узла, с uname -nкоторым, вероятно, gethostname()тоже получает информацию .

Таким образом, ответ на эту команду не имеет ничего общего ни с DNS, ни с / etc / hosts, за исключением того, что, вероятно, это установлено ядром во время загрузки, но это зависит от используемой вами версии дистрибутива / UNIX.

Спасибо, Квайо. Я смотрю в `gethostname ()` сейчас. Это довольно информативно и именно в этом направлении я надеялся, что это обсуждение пойдет. Kent Pawar 11 лет назад 0

Похожие вопросы