hostname
используется для отображения DNS-имени системы, а также для отображения или установки ее имени хоста или имени домена NIS.
Есть ли у компьютерной системы (Linux) только одно имя хоста?
В виртуальном хостинге несколько имен хостов могут быть преобразованы в разные корневые каталоги на веб-сервере. Если компьютерная система (Linux) может иметь только одно имя хоста, как возможен виртуальный хостинг?
Благодарю.
hostname
Используется ли когда-либо вывод при преобразовании имени хоста в IP-адрес? (2) A означает IPv4-адрес, AAAA IPv6. Что такое ААА?avahi
зависят от имени хоста компьютера. В этом случаеhostname.local
будет разрешен локальный IP-адрес машины. Я вижу, что кто-то написал ответ, который является расширением моего первого комментария ... слишком одновременный для моих уведомлений браузера.Ответы:
Да и нет. Это две разные вещи, называемые именами хостов.
«Внутреннее» имя хоста - это строка, хранящаяся в ядре. Это тот, который возвращается
hostname
командой (илиgethostname()
вызовом), и он уникален в системе (*) .В основном это используется, когда программа хочет вывести некоторый идентификатор для системы, на которой она работает. Например,
\h
BashPS1
расширяется до имени хоста. Точно так же файлы журнала в стиле syslog также включают имя хоста в записи журнала.(* Хотя, как комментирует Стивен Китт, пространства имен могут использоваться для отображения разных имен хостов для процессов в одной и той же системе. Это в основном используется для контейнеров, которые пытаются действовать так, как будто они являются отдельными системами.)
Также есть DNS-имена , которые используются другими системами для поиска IP-адреса другой. Может быть несколько DNS-имен, указывающих на один и тот же IP-адрес, и один и тот же хост.
Внутреннее имя хоста и DNS-имена не обязательно должны совпадать. Предположим, у кого-то есть веб-сервер, который он решил вызвать
orange
(*) , с IP-адресом192.0.2.9
. Он может обслуживать два разных домена, и DNS будет настроен на наличиеwww.example.org
иwww.example.com
оба указателя192.0.2.9
, в то время как внутреннее имя хоста системы может бытьorange.example.org
или простоorange
. В этом случае настройка DNS, как правило , также имеют обратный поиск на192.0.2.9
точку назад к имениorange.example.org
, но нет ничего , что силы.(* потому что им нравится называть свои серверы в честь фруктов. Кто-то может использовать
webserver1
или тому подобное, но дело в том, что его не нужно называть в честь одного из реальных доменов.)В дополнение к этому виртуальный хостинг требует, чтобы браузер сообщал веб-серверу имя сайта, к которому он пытался получить доступ. В противном случае сервер не знал бы, к какому виртуальному сайту клиент пытался добраться. HTTP имеет
Host
заголовок для этого.То, что запутывает различие между DNS-именем и внутренним именем хоста, - это протокол mDNS (реализованный, например, демоном avahi ) и другие протоколы обнаружения. mDNS позволяет хостам запрашивать информацию об именах для всех других хостов в той же сети и делать их собственные имена хостов видимыми на других хостах без явной настройки их в DNS.
источник
hostname
Используется ли когда-либо вывод при преобразовании имени хоста в IP-адрес?hostname
команд, правильно? Действует ли маршрутизатор как DNS для разрешения выходовhostname
на частные IP-адреса в сети?mDNS
. Что бы там ни было, владельцы систем могут выбирать собственные имена хостов, доступные другим системам в локальной сети, без необходимости регистрации на DNS-сервере.Нет.
[Я полностью проигнорирую, что любой может дать вашему хосту любое имя, которое ему нравится, с помощью записи DNS, указывающей на его адрес, или что вы можете иметь более одного псевдонима для него
/etc/hosts
, или любые философские соображения о том, что такое имя на самом деле]В системе linux имя хоста - это просто ресурс для процесса («пространство имен UTS»), который наследуется его дочерними элементами по умолчанию, но может быть отключен с помощью
unshare(2)
илиclone(2)
с помощьюCLONE_NEWUTS
флага. Вы должны заглянуть вnamespaces(7)
справочную страницу.Как и pids, номера портов, точки монтирования и т. Д., Имя хоста больше не является глобальным идентификатором, и его можно виртуализировать точно так же, как адресное пространство (виртуальная память) или таблица дескрипторов файлов процесса.
Виртуальный хостинг - это нечто совершенно другое, и обычно это делается путем настройки DNS-записи с подстановочными знаками (например,
*.foo.com
=>13.13.13.13
) с веб-сервером, который работает13.13.13.13
и обслуживает различные каталоги / ресурсы в зависимости от значенияHost:
заголовка http [1] (который легко настраивается). ; большинство веб-серверов могут обслуживать разные ресурсы на основе любого http-заголовка, а не толькоHost:
). Во всем этом операционная система системы, на которой работает веб-сервер, не играет никакой роли.[1] или о значении указания имени сервера в случае https, что позволяет одному и тому же веб- серверу использовать разные сертификаты для разных виртуальных хостов.
источник
Обычно вы устанавливаете одно имя хоста в / etc / hostname. И вы установили много доменных имен в / etc / hosts.
Пространства имен UTS позволяют одной системе иметь разные имена хостов и доменов для разных процессов. Для получения дополнительной информации: https://en.wikipedia.org/wiki/Linux_namespaces . Таким образом, абсолютно возможно иметь несколько имен хостов и доменных имен для одной и той же системы. Например, контейнер докера внутри одного хоста имеет другое имя хоста, чем хост-система.
источник