我对主机名和 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
影响在于,您要么在localhost
DNS 区域文件中输入此机器的 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
如果其中有其他内容与该行不匹配,则需要编辑、注释或删除它。