如何在家庭网络中使用主机名而不是IP地址?

我有一个小型的家庭网络已经运行起来了,并成功设置了ssh。有人可以告诉我,如何通过主机名而不是IP地址(目前我正在使用IP地址)在网络中的一台计算机上引用另一台计算机吗?

如果你碰巧知道为什么Android无法使用设备的.local主机名浏览网络(https://devicename.local不起作用,但可以浏览到https://devicename而不带.local),我会很感激在https://android.stackexchange.com/q/230644/22600上得到答案。谢谢! - Ryan
2个回答


我从来不知道这个方法也适用于非Mac设备,但是我刚刚在我的11.10系统上尝试了一下,居然成功了。这可能能解决一个问题,就是当我使用路由器分配静态IP时,有线和无线连接在同一台设备上拥有不同的IP地址。按照你的建议,我不需要知道正在使用哪个连接。不知道是否有办法给它起个别名,以便更方便使用呢? - Marty Fried
非常感谢,一切都运行得很完美。你介意解释一下这个魔法吗?我理解的是主机名只有特定的主机知道,除非你通知其他主机进行映射,就像Marty上面说的那样。.local是什么作用?它是否会发出某种广播信号? - naftalimich
2我找到答案了!http://askubuntu.com/questions/4434/what-does-local-do?rq=1 - naftalimich

有更复杂的方法,但我的方法是使用静态IP地址,我可以从我的路由器分配,并将这些地址输入到我的hosts文件中。
一旦您获得了静态地址,可以从路由器或网络连接对话框(在有线或无线选项卡下的IPv4选项卡中)分配,您可以使用sudo或gksu与您喜欢的文本编辑器(如gedit或vim)编辑/etc/hosts,并为每个主机添加一行,如下所示:
192.168.1.100    ComputerName1
192.168.1.101    ComputerName2

我使用的数字是常见的,但你的局域网可能不同。名称可以是你想要称呼远程计算机的任何内容,并且可以是任何东西(尽量与实际名称匹配为佳)。如果你有本地网络服务器,你还可以通过名称在此创建本地网站。

你可以将这些名称的信息添加到你的路由器中,这样你本地网络中的所有设备都会知道这些名称。至少在它们使用你的路由器作为DNS服务器的情况下。 - Anders
1@Anders: 怎么做呢?我从来没有遇到过有地方可以定义它们的路由器。我的当前路由器(Netgear WNR3500L)有一个用于静态IP的位置,还有一个用于命名条目的位置,但是对这个名称进行ping测试对我来说不起作用。但是在“已连接设备”下面,它有计算机的名称,尽管在我的系统上ping这个名称也不起作用;但是既然路由器可以读取机器名称,肯定有办法可以读取它。我只是使用hosts文件,但这并不理想。 - Marty Fried
在dhcp请求中,计算机可以告诉路由器它想要的名称。这就是为什么路由器能获取到计算机的名称。 嗯,我相当确定我已经在路由器上设置了计算机名称,然后以后能够查找到那个名称。 无论如何,我现在在我的路由器上使用OpenWRT固件来做这个。这个固件应该也适用于你的路由器。非常适合建立IPv6隧道。 :) - Anders