localhost 与主机名混淆

localhost 与主机名混淆

我对主机名和 FQDN 有基本的了解。现在我很困惑,我真的必须为我的主机名指定一个名称吗?例如:

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

现在,我看到主机名是本地主机。这有什么区别和影响?那么我的 FQDN 如果本地主机我的主机名是localhost.mydomain.com,对吗?

答案1

localhost 是一个“特殊名称”,指向 IP 地址 127.0.0.1,该地址应该存在于任何能够使用互联网的计算机上,并指代机器本身。(任何以 127.xxx 开头的 IP 地址都指代本地机器)。

localhost 与 localhost.mydomain.com 不同。

文件 /etc/hostname 显示的是您计算机认为的名称。在 Debian 中,它似乎将 127.0.1.1 链接到 /etc/hosts 文件中的此名称。[如果您有一个静态分配的 IP 地址,您可以将其设置为“有效”IP 地址]

理想情况下,您不应使用“localhost”作为您的主机名,因为它会导致某些程序出现问题(理论上,由于我没有这样做过,所以想不出任何例子)。

答案2

“localhost” 是环回接口的“名称”,它始终具有保留 IP 127.0.0.1,通常为设备名称“lo”或“lo0”

好的,现在我似乎明白了。但是为什么 hostname -f 会给我 localhost 呢?

如果你没有给主机命名,主机名默认为 localhost,因为无名系统不被认为是“网络/互联网就绪”

如果你给你的主机起一个名字,主机名应该解析为主机的 IP 地址。根据你运行的 Linux 版本不同,有不同的配置文件用于设置此项。要查看实际操作,从命名机器(即主机名不是“localhost”的盒子主机)运行以下命令:

ping 本地主机
ping $主机名

你应该看到两个不同的 IP 地址,127.0.0.1,以及你的机器的 IP 地址...如果没有,请检查 conf 文件、hup 接口/网络脚本,或者在进行更改后重新启动

因此,如果 localhost 是我的主机名,那么我的 FQDN 就是 localhost.mydomain.com,对吗?

不,localhost 不用于连接机器外部,因此 localhost 没有真正的“fqdn”(尽管我看到安装默认为 localhost.localdomain,但这在互联网上不是真实的,因此在我看来不是“完全合格的”)。

“localhost”或 lo 是仅存在且与本地机器相关的伪设备。其存在的原因是为了在本地遍历堆栈……例如,连接到在“localhost”上运行的数据库的 python 代码

答案3

影响在于,您要么在localhostDNS 区域文件中输入此机器的 IP 地址,要么将其输入为 127.0.0.1。无论您选择哪种方式,某些功能都无法正常工作。

如果您输入 127.0.0.1(建议这样做),那么您将无法localhost从任何其他机器访问此名称的机器。因此,使用不同的名称会比较实用...

如果您将其输入为这台机器的 IP 地址,那么在其他机器上,通过文件(/etc/hosts)进行的名称解析的结果与 DNS 服务的结果就会不一致,因为其他每台机器的localhost/etc/hosts 文件中都会有一行地址为 127.0.0.1,而 DNS 服务将包含一个不同的地址。

答案4

localhost是本地机器的环回。您不必费力命名它,localhost因为它应该是localhost开箱即用的。您可以在任何机器上安装 Linux(或任何操作系统),并且无需您执行任何操作,您的网络配置中总会有一个localhost

我的意思是,我现在正在输入的 Mac Mini 会响应localhost。这意味着它是我的机器和我的本地机器。如果你在本地机器上,localhost那么就是你的本地机器。

hostname只是您机器的昵称,可以或不可以用作其他服务的参考。在许多情况下,您可以替换hostname.local(作为hostname您的实际主机名)作为另一种让本地网络循环到您的机器的方式。 和 的组合hostname.local视为完全限定域名 (FQDN)。

localhost例如,我经常使用 Apache 配置,为 Apache 设置单独的配置或者在 Apache 中hostname.local使用配置对我很有好处NameVirtualHost

现在,如果你想要扩展你的范围,.local那么就需要获得一个连接到外部世界设置的真实域。这又是另外一个话题了。

编辑:根据您下面的评论,似乎有问题的机器有localhost一个主机名。这意味着您可以从技术上找到它,这并非 100% 错误,但非常令人困惑。要将主机名更改为新名称,请执行以下操作。为了举例说明,localhost.local我假设新主机应该称为: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

如果其中有其他内容与该行不匹配,则需要编辑、注释或删除它。

相关内容