我正在尝试建立一种以集中方式配置我的服务器主机名的方法,即通过网络上的某些服务来配置。
我知道有三个名称可以识别服务器......
- 瞬态:从网络配置接收;
- 静态:由内核提供;
- 漂亮:由用户提供。
所以我想要我的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]
答案1
因此,我希望我的 CentOS 7/8 服务器使用临时主机名作为其名称。实际上,当登录终端时,它会显示从网络获取的名称...
但它已经这么做了。
在 systemd-hostnamed 中,“临时”主机名是内核中当前设置的主机名。“静态”主机名是在 /etc/hostname 中定义的主机名。是的,RedHat 文章是错误的。(该术语是由 systemd 为其“hostnamed”工具发明的,因此请参阅它的 API 文档了解更多信息。)
(“漂亮”主机名甚至不是通常意义上的主机名。它用作 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(它始终为系统当前的临时主机名提供虚拟答案)。如果机器无法将自己的名称解析为某物至少。
(事实上,如果您让机器从 DHCP 动态更新其临时主机名,各种事情都可能神秘地中断。如果您在台式机/笔记本电脑上启用此功能,并且您的图形 X11 程序开始出现“未指定协议”错误,这通常是原因。)
“域”部分通常根本不存储在主机名字段中。它有时也在 /etc/hosts 中定义,但也可以通过 DNS 定义。我将链接到我已经发布的一篇关于此内容的旧帖子...
此外,RedHat 文章中讨论的冲突和“hostname-1”仅适用于 Avahi mDNS 服务,该服务在某种程度上独立于全局主机名跟踪系统的 mDNS 名称。(冲突检测本身仅在 mDNS 内完成。)也就是说,如果有另一个支持 mDNS主机名相同,Avahi 将选择新的 mDNS 名称-1 或 -2,但这实际上并不影响系统主机名。
“DHCP”和“DNS”不是可数名词,它们是抽象的协议。你可以有“DHCP租约”或“DHCP服务器”或“DNS域”,但谈论“DHCP”或“DNS”没有任何意义。