是否可以在 Linux 中为主机名起别名?
jmillikin 在各种 Ubuntu 论坛上提出以下问题:
# Real host # Aliases
realhost fakehost1 fakehost2 fakehost3
有人回答了 ssh,但没有回答 ping 等问题。我的主要目的是将它用作Subversion服务器的别名。就我而言,realhost 位于动态 IP 地址下。因此,“/etc/hosts”别名不起作用。我想访问我的 Subversion 服务器svn://my_svnserver/my_repos
而不是
svn://realhost/my_repos
.
对于那些在论坛上没有帐户(或不想登录)的人:
Linux 通过设置 HOSTALIASES 环境变量来支持别名。
那么你也能
NB ping 要求您将其设置为 root,但您可以以任何用户身份对任何以该用户身份运行的应用程序执行此操作。ping suids到root。
您可以在您的 DNS 服务器上进行设置,CNAME 记录允许一台机器被多个主机名知道。因此,像这样将 CNAME 记录添加到您的 DNS 服务器:
我经常用环境变量来做这件事。我知道这仅适用于命令行,但它是我最常渴望主机名别名的地方(我使用了几个超级计算机帐户,都具有长 URL)。这是一个示例,如果您使用的是 BASH。在 ~/.bashrc 中:
出口 fakehost="long.ass.annoying.url.org"
然后,在一个新的外壳中:
ssh christopher@$fakehost
可以做到这一点的唯一方法是如果您有自己的本地 dns 服务器。
您需要一个 dyndns 服务器,它将您当前的 IP 地址映射到主机名。每当您登录时,您都会告诉该服务器您当前的 IP 地址,它会更新您的主机名记录。
/etc/hosts.aliases 的使用是绑定解析器库的标准功能。它比向 /etc/hosts 添加条目更健壮,如果您无法将 CNAMES 添加到 DNS(无权访问它),则可以使用它。
一般来说,最佳实践是在 DNS 中使用 CNAMES,并在 /etc/resolv.conf 中定义适当的 SEARCH。
更新 /etc/hosts 不是很可靠,因为条目必须与 IP 更改保持同步。这仅适用于小规模或当您使用名称服务来分发主机映射(例如通过 ldap)时。
另一种解决方案可能是 DNSMasq http://en.wikipedia.org/wiki/Dnsmasq