我有几个 Amazon EC2 服务器,我正在使用 Chef 来管理配置。我想设置主机名,以便默认的 bash 提示符更有帮助。
现在启动新服务器后,它只是设置为:
root@ip-10-123-123-123
由于我在这些机器上使用 Ubuntu 12,因此我查阅了相应的手册页主机名。它有很多关于如何设置它的好信息,并讨论了一些关于主机名和 FQDN 的信息,但它并没有真正告诉我我想知道什么:
设置主机名会产生什么后果?
我想假设设置主机名对于用户和系统管理员来说主要是一个方便的项目,给盒子一个面孔/好听的名字,这样它就可以更容易地在内部识别(通过命令提示符,发送的电子邮件,等),但我并不积极。
我没有看到/etc/hosts
文件中列出的主机名,这似乎是一个好兆头,表明如果更改它不会产生任何负面影响:
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
我走在正确的轨道上吗?设置主机名有什么影响?
更新
我尝试将 ec2 实例上的主机名从 更改ip-10-123-123-123
为webserver
,但hostname --fqdn
不再有效。如果我把它放回去,那就可以正常工作了。 Apache 在启动时也给我一个错误,它无法可靠地确定 fqdn。我想一定有某种方法可以设置主机名而不弄乱 FQDN。
答案1
我只是想补充一点,主机名应该是可解析的,可以通过 DNS 或 /etc/hosts 进行解析。如果不是,许多工具可能会由于主机名查找失败而出现长时间延迟。我在使用许多 GUI 程序时都遇到过这个问题。
答案2
主机名(由命令设置和显示hostname
,通常存储在 中/etc/hostname
)由本地应用程序使用。它不被其他机器所知,也不能用来联系主机。主机名通常出现在 shell 提示符中,各种应用程序可能会使用它来进行日志记录,例如在您进行提交时由版本控制软件使用。
主机名和其他计算机可能用来指定您的计算机的任何名称之间没有技术联系。这域名系统通常用于在 Internet 上下文(或更准确地说,网络接口)中命名机器。如果您的主机名与世界上大多数人看到的计算机网络接口的 DNS 名称的第一个组成部分相同,那就是个好主意。例如,如果您的服务器通过以太网接口连接到世界其他地方eth0
,并且 IP 地址的eth0
名称为foo.example.com
,那么选择foo
作为您的主机名是一个好主意。如果你这样做,foo.example.com
通常被称为完全合格域名您机器的(完全限定域名)。但你可以随意让它们不匹配;差异可能会让管理员感到困惑,但对软件来说并不重要。
某些网络协议可以使用主机名来识别主机。如果是这样,则必须由主机上运行的本地进程发送。例如,在某些设置中,动态主机配置协议客户端将主机名发送到 DHCP 服务器以获取 IP 地址; DHCP 服务器可以使用所声明的主机名来决定将哪个 IP 地址归属于客户端。在此类设置中,主机名必须与 DNS 名称匹配。