it-swarm.cn

在Linux中可以为主机名加上别名吗?

在Linux中可以为主机名加上别名吗?

Jmillikin在各种Ubuntu论坛上都提出了以下要求:


是否可以创建一个主机名别名?有点类似于/ etc/hosts,但是使用其他主机名而不是IP地址。因此,使用这样的文件,您可以ping “ fakehost1”,它将重新映射到“ realhost”,然后将“ realhost”解析为IP地址。

# Real Host        # Aliases
realhost           fakehost1 fakehost2 fakehost3

有人回答了有关ssh的问题,但没有回答有关ping等的问题。我的主要目的是将它用作 Subversion 服务器的别名。就我而言,realhost位于动态IP地址下。因此,“/etc/hosts”别名不起作用。我想以svn://my_svnserver/my_repos而不是svn://realhost/my_repos访问Subversion服务器。

91
user10178

对于那些在论坛上没有帐户(或不想登录)的人:

如果您的主要问题不是ping而是ssh,则可以创建/编辑〜/ .ssh/config并添加以下行:

Host fakehost1
  Hostname real-hostname

Host fakehost2
  Hostname real-hostname2

Host fakehost3
  Hostname real-hostname3
58

Linux通过设置HOSTALIASES env变量来支持别名。

echo "fakehost realhost" > /etc/Host.aliases
echo "export HOSTALIASES=/etc/Host.aliases" >> /etc/profile
. /etc/profile

那么你也能

ping fakehost

N.B. ping要求您将其设置为root用户,但是对于以该用户身份运行的任何应用程序,您都可以以任何用户身份进行操作。 ping suids到根。

32
teknopaul

您可以在DNS服务器上进行设置,CNAME记录允许一台主机被多个主机所识别。因此,将CNAME记录添加到您的DNS服务器,如下所示:


fakehost1 IN CNAME realhost 
fakehost2 IN CNAME realhost 
fakehost3 IN CNAME realhost 
25
Ali Mezgani

我经常使用环境变量来执行此操作。我知道这仅适用于命令行,但这是我最渴望主机名别名的地方(我使用了多个超级计算机帐户,所有帐户都包含长URL)。这是一个示例,如果您使用的是BASH。在〜/ .bashrc中:

export fakehost =“ long.ass.annoying.url.org”

然后,在新的Shell中:

ssh christopher @ $ fakehost

18
Christopher

可以这样做的唯一方法是,如果您拥有自己的本地dns服务器。

11
theotherreceive

您将需要一个dyndns服务器,它将您的当前IP地址映射到主机名。每当您登录时,您都将告诉该服务器您当前的IP地址,它将更新您的主机名记录。

5
Sven

/etc/hosts.aliases的使用是绑定解析器库的标准功能。它比向/ etc/hosts中添加条目更健壮,并且可以在无法将CNAMES添加到DNS(无法访问它)时使用。

通常,最佳实践是在DNS中使用CNAMES,并在/etc/resolv.conf中定义适当的SEARCH。

由于必须使条目与IP更改保持同步,因此更新/ etc/hosts并不十分可靠。这仅在小范围内或在使用名称服务来分发主机映射(例如,通过ldap)时才有效。

另一个解决方案可能是DNSMasq http://en.wikipedia.org/wiki/Dnsmasq

5
Tom Hallam