我正在尝试建立一种以集中方式配置服务器主机名的方法,即从网络上的某些服务进行配置。
我知道有三个名称可以标识服务器...
- 瞬态:从网络配置中接收;
- 静态:由内核提供;
- 漂亮:由用户提供。
所以我希望我的CentOS 7/8服务器使用临时主机名作为其名称。实际上,当登录终端时,它会向我显示从网络获得的名称......
[user_name@my-net-hostname ~]$
...并且机器至少可以通过名称识别自己...
[user_name@my-net-hostname ~]$ ping -c 4 my-net-hostname
PING my-net-hostname.my.domain (10.3.0.4) 56(84) bytes of data.
64 bytes from my-net-hostname.my.domain (10.3.0.4): icmp_seq=1 ttl=64 time=0.193 ms
64 bytes from my-net-hostname.my.domain (10.3.0.4): icmp_seq=2 ttl=64 time=0.086 ms
64 bytes from my-net-hostname.my.domain (10.3.0.4): icmp_seq=3 ttl=64 time=0.077 ms
64 bytes from my-net-hostname.my.domain (10.3.0.4): icmp_seq=4 ttl=64 time=0.098 ms
--- my-net-hostname.my.domain ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 0.077/0.113/0.193/0.046 ms
注意:在上述情况下,此主机名是在 DHCP 中定义的,并且还有一个知道名称“my-net-hostname”的 DNS。
注意:在我看来,正确的方法是使用 DHCP 和 DNS,也就是说,一个定义服务器名称(主机名),另一个定义在哪里可以找到该服务器,但我很难确认这一点信息。
问题:如何从网络上的服务配置我的服务器的主机名?我应该使用什么?DHCP?一个DNS?两个都?
谢谢!=D
[参考文献:https://askubuntu.com/questions/104918/how-to-get-the-hostname-from-a-dhcp-server,https://codingbee.net/rhcsa/rhcsa-configuring -hostnames-and-dns , https://www.redhat.com/sysadmin/set-hostname-linux ]
不过,这就是它已经在做的事情。
在 systemd-hostnamed 中,“transient”主机名是当前在内核中设置的。“静态”主机名是 /etc/hostname 中定义的主机名。是的,RedHat 的文章是错误的。(该术语是 systemd 为其“主机名”工具发明的,因此请参阅其 API 文档以获取更多信息。)
(“Pretty”主机名甚至不是通常意义上的主机名。它被用作 mDNS“服务”名称,可能还有其他一些东西,但不是用于实际地址查找。)
“静态”主机名不是内核提供的。它由您通过
hostnamectl
或编辑提供/etc/hostname
——它仅在启动时提供给内核,而不是相反。“瞬态”主机名是内核主机名。它也由您提供,这次是通过
hostname
命令(不要与 hostnamectl 混淆)或通过 /proc/sys/kernel/hostname。只是临时主机名可能会被网络覆盖,但是当系统启动时,它仍然从静态主机名(即从/etc/hostname)初始化。这里的“网络配置”主要是指 DHCP。通常 DHCP 客户端报告它自己的当前主机名,而 DHCP 服务器只收集它们,但服务器可以包含它希望客户端使用的不同主机名。如果客户端通过 DHCP 接收到一个新的主机名,那将成为“临时”主机名,也就是内核主机名。(实际上这样做没有多大意义,尤其是对于长期存在的服务器。)
主机名不是从 DNS 设置的。但是,它位于您的 DNS 域中是有意义的,因为这通常是主机名的全部意义。
计算机是否可以 ping 自己的主机名取决于几件事(其中包括 DNS),但通常您的网络软件会尝试确保即使没有DNS 也能正常工作——通过更新 /etc/hosts 或使用 libnss-myhostname(其中始终为系统当前的临时主机名提供虚拟答案)。如果机器至少不能将自己的名称解析为某种东西,那么各种东西(例如 sudo)可能会神秘地破坏。
(事实上,如果您让机器也从 DHCP 动态更新其临时主机名,那么各种事情都会神秘地破坏。如果您在台式机/笔记本电脑上启用此功能,并且您的图形 X11 程序开始失败并出现“未指定协议”错误,这通常是原因。)
“域”部分通常根本不存储在主机名字段中。它有时会在 /etc/hosts 中定义,但也可以通过 DNS 定义。我将链接到我已经做过的关于这个的旧帖子......
此外,RedHat 文章谈到冲突和“hostname-1”时,它仅适用于 Avahi mDNS 服务,该服务在某种程度上独立于全局主机名跟踪系统的 mDNS 名称。(冲突检测本身只在 mDNS 内完成。)也就是说,如果有另一个具有相同名称的支持mDNS 的主机,Avahi 将选择一个新的 mDNS 名称-1 或 -2,但这实际上并不影响系统主机名以任何方式。
“DHCP”和“DNS”不是可数项;它们是抽象协议。您可以拥有“DHCP 租约”或“DHCP 服务器”或“DNS 域”,但谈论“DHCP”或“DNS”没有任何意义。