我需要做的是给一localhost
台 Linux 机器(Apache 服务器所在的 web 系统)一个正确的名称。这个想法是这个名称可以由连接到同一个本地网络的所有机器解析[这是一个小型内网]。这是为了避免输入服务器的 IP。即;如果在您必须http://192.168.1.100
在浏览器中键入之前,现在您应该能够键入http://sistema.home
以显示机器上托管的系统。之前,我通过输入带有.home扩展名的机器名称来解决它,但是很多用户觉得很难写 http://Ubuntu-Server-HP-154.home
(很长而且很难记住)
为此,我做的第一件事是更改 /etc/host 文件,如下所示:
127.0.0.1 sistema.home
127.0.1.1 Ubuntu-Server-HP-154.home
然后修改/etc/apache2/sites-available/000-default.conf文件的servername:
ServerName sistema.home
然后我意识到这种方式我只能通过键入在本地访问http://sistema.home
(只有在我在同一台服务器机器上浏览时才能解决)所以我还将我的机器名称更改为 de Ubuntu-Server-HP-154
asistema
并配置文件 /etc/hostname
sistema
我还在 /etc/host 中进行了相应的更改,如下所示:
127.0.0.1 sistema.home
127.0.1.1 sistema
网络重启、systemctl重启systemd-hostnamed、Apache、Machine等
好吧,从另一台机器我仍然无法通过 访问http://sistema.home
,但我可以通过机器的旧名称http:// Ubuntu-Server-HP-154.home
。更重要的是,当我执行 a 时ping -a 192.168.1.100
,它仍然解析为Ubuntu-Server-HP-154.home
而不是sistema.home
于是我开始用hostname
服务器机器的命令检查配置:
.$ hostname
sistema
完美,它告诉我我的机器的主机名叫做 system
.$ hostname -f
sistema
完美,它告诉我 FQDN(全域名)被称为系统
.$ hostname -A
Ubuntu-server-HP-88454154.home Ubuntu-server-HP-88454154.home
什么?它告诉我我的机器上有更多的FQDN,它们被称为Ubuntu-Server-HP-154
但是:那些其他 FQDN 在哪里删除它们?为什么会这样?然后更改本地主机名称以使其可用于本地网络的其余部分的正确方法是什么?
/etc/hosts 文件对“host”或“nslookup”等工具的名称解析级别没有影响,对于其他影响,您必须查看 nsswitch.conf 中的配置,这是在其他位置确定搜索顺序的地方水平。
但是,如果一直使用其旧名称查找服务器的系统是 Linux,那么您可能有一些活动进程来缓存系统,例如 nscd 或 dnsmask。
您可以通过使用 systemctl 重新启动这些活动进程来重置任何这些活动进程的缓存,键入
任何一个
如果继续看到旧 dns 记录的主机是 Windows,也可能是由于缓存的原因,您应该能够在这些系统上看到缓存:
要清除这些 Windows 系统上的缓存,您必须运行: