2

У меня есть общее представление о имени хоста и FQDN. Теперь я запутался, действительно ли мне нужно указывать имя для моего имени хоста? Так, например:

Hostname: somename
Domain: mydomain.com
FQDN: somename.mydomain.com

Теперь я вижу, что имя хоста является localhost. В чем разница и влияние этого? Таким образом, мое полное доменное имя, если localhost - это мое имя хоста, будет localhost.mydomain.com , верно?

4 ответа4

2

localhost - это "специальное имя", которое указывает на IP-адрес 127.0.0.1, который должен существовать на любом компьютере, способном использовать Интернет, и относится к самой машине. (Любой IP-адрес, начинающийся с 127.xxx, относится к локальной машине).

localhost - это не то же самое, что localhost.mydomain.com.

Файл /etc /hostname показывает, что ваш компьютер считает, что его имя. В Debian это похоже на ссылку 127.0.1.1 с этим именем в файле /etc /hosts. [Возможно, вы могли бы установить для этого "действительный" IP-адрес, если у вас есть статически назначенный]

В идеале вы не должны использовать "localhost" в качестве имени вашего хоста, поскольку это (теоретически, я не могу придумать ни одного примера, поскольку я этого не делал) вызовет проблемы с некоторыми программами.

1

"localhost" - это "имя" для интерфейса обратной связи, который всегда имеет зарезервированный IP 127.0.0.1 и обычно имя устройства "lo" или "lo0".

Хорошо, кажется, я понял это сейчас. Но почему hostname -f дает мне localhost?

если вы не даете своему хосту имя, имя хоста по умолчанию принимает значение localhost, так как безымянные системы не рассматриваются как "готовые к работе в сети / интернете"

если вы дать хост имя, имя хоста должно преобразовываться в IP - адрес хоста. в зависимости от того, какую версию linux вы используете, для ее установки существуют разные файлы conf conf. чтобы увидеть это в действии, с именованной машины (т. е. хоста, у которого имя хоста не "localhost"), запустите:

ping localhost
ping $ hostname

вы должны увидеть два разных ips, 127.0.0.1 и ip вашего компьютера ... если не проверить файлы conf, hup interface/network scripts или просто перезагрузиться после внесения изменений

Таким образом, мое полное доменное имя, если localhost - это мое имя хоста, будет localhost.mydomain.com, верно?

нет, localhost не используется для подключения за пределами машины, поэтому для localhost не существует "fqdn" (хотя я видел, что по умолчанию устанавливается localhost.localdomain, но это не реально в интернете, поэтому не "полностью квалифицированный" imo).

"localhost", или lo, является псевдоустройством, которое существует только и относится к локальной машине. причина его существования заключается в локальном обходе стека .... например, кода Python, который подключается к базе данных, работающей на "localhost"

0

В результате вы либо вводите localhost в файл зоны DNS в качестве IP-адреса этого компьютера, либо вводите его как 127.0.0.1. Что бы вы ни выбрали, некоторые вещи не будут работать правильно.

Если ввести его как 127.0.0.1 (это рекомендуется , что нужно сделать), то вы не сможете достичь этого localhost -named машины от других машин. Поэтому было бы целесообразно использовать другое имя ...

Если вы введете его в качестве IP-адреса этой машины, то на других машинах у вас возникнут разногласия между результатами разрешения имен, выполненными с помощью файлов (/etc/hosts), и службой DNS, поскольку на каждой другой машине будет строка localhost в файле /etc/hosts с адресом 127.0.0.1, а служба DNS будет содержать другой адрес.

0

localhost - это петля к вашей локальной машине. Вам не нужно изо всех сил называть его localhost как он должен быть localhost из коробки. Вы устанавливаете Linux или любую ОС на любую машину, и без каких-либо действий всегда будет localhost в вашей конфигурации сети.

Я имею в виду, что Mac Mini, на котором я сейчас печатаю, отвечает на localhost . Это означает, что это моя машина и моя локальная машина. Если бы вы были на своей локальной машине, localhost был бы вашей локальной машиной.

hostname - это просто псевдоним вашего компьютера, который можно или нельзя использовать в качестве ссылки для других служб. Во многих случаях вы можете заменить hostname.local (hostname будет вашим фактическим именем хоста), чтобы стать еще одним способом создания локальной сети на вашем компьютере. Эта комбинация имени hostname и .local считается полностью определенным доменным именем (FQDN).

Например, я много играю с конфигами Apache, и для меня полезно установить отдельные конфиги для localhost или hostname.local если я использую NameVirtualHost в Apache.

Теперь, если вы хотите выйти за пределы своего .local который попадает в область получения реального домена, подключенного к настройке внешнего мира. Это совсем другое обсуждение.

РЕДАКТИРОВАТЬ: Исходя из ваших комментариев ниже, кажется, что рассматриваемая машина имеет localhost в качестве имени хоста. Это означает, что вы можете технически добраться до localhost.local что не на 100% неверно, но сильно сбивает с толку. Чтобы изменить имя хоста на что-то новое, сделайте следующее. Я предполагаю, что новый хост должен называться coolnewhost для примера:

Это временно изменит ваше имя хоста на coolnewhost:

sudo hostname coolnewhost

Чтобы изменить его навсегда, отредактируйте файл (мне нравится использовать nano но используйте то, что вам нравится):

sudo nano /etc/hostname

А затем отредактируйте имя хоста в этом файле, чтобы прочитать coolnewhost .

Другой вариант - использовать sysctl для изменения имени хоста в ядре.

sudo sysctl kernel.hostname= coolnewhost

И ты должен быть относительно хорошим. Но я бы также проверил ваш файл /etc/hosts чтобы увидеть странную настройку старого localhost :

sudo nano /etc/hosts

Там должна быть только одна строка, которая гласит:

127.0.0.1       localhost

Если там есть что-то, что НЕ соответствует этой строке, вам нужно отредактировать ее, прокомментировать или удалить.

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