通过主机名访问服务器?

我有一个混合网络,大部分是Windows机器,还有一台Mac和几个Linux机器。没有DNS或WINS服务器,而且在我的控制范围之外添加一个也不现实。如果我在一台计算机上进行干净的10.04桌面安装,那么网络上的所有其他机器都可以通过主机名正常访问该机器。
然而,如果我在同一台计算机上安装了10.04服务器,其他机器只能通过IP地址访问它。主机名无法解析。我需要在服务器上做什么才能使网络上的所有其他机器都能访问它?
3个回答

这与Avahi有关,它是一个在本地网络上广告主机名的Zeroconf实现。
您可以通过安装守护进程在服务器上开始使用Avahi:
sudo apt-get install avahi-daemon

从那时起,您应该准备好了。如果您遇到其他问题,请查看/usr/share/doc/avahi-daemon/中的文档。

只是为了补充一些信息,这个修复也解决了反向访问的问题(服务器通过主机名访问其他机器,在此之前也无法正常工作)。 - Warren Pena
7起初我以为这对我的网络没有用,但后来发现你需要在主机名后面添加.local,例如ping basement-server.local - matt wilkie
按照指示直接操作,但在寻找、打开和理解文档时有些迷失,因为我以为需要进行一些配置。后来才意识到它已经正常工作了 ;) 我想他们之所以称之为零配置,应该是有原因的。 - jpierson
2你可以配置Avahi以使用裸主机名吗? - cmcginty
@mattwilkie,这仍然不能让它对我起作用... - Cerin

你需要在某个地方拥有一个DNS(域名系统)服务器来处理名称解析。一些路由器将DNS服务器与其DHCP服务器耦合在一起。检查您的路由器,看看它是否有一个DNS服务器并且已禁用。当Ubuntu请求IP地址时,它会自动将配置的主机名发送到DHCP服务器,并且如果路由器启用了DNS服务器,则应该将该名称/IP报告给DNS服务器。
除此之外,您可以将Ubuntu计算机的名称和IP地址放入Windows计算机中的hosts文件中。只要您的Ubuntu计算机的IP地址不改变(或经常更改),那可能是一个简单、长期的解决方案。

@ELadner:Windows使用WINS来完成这个功能。 对于Ubuntu服务器来说,只需安装Samba客户端即可。 - Radu Cotescu
如果你只想通过名称解析将一台计算机连接到*nix机器(或者你愿意修改所有需要的机器上的hosts文件),那么只需在Windows机器上更改hosts文件即可。hosts文件基本上是一个方便的本地命名空间解析的短路重定向(也用于间谍软件植入恶意重定向并破坏你的网络体验)。 - Evan Plaice
很重要的一点要注意,WINS实际上并不是一个真正的DNS服务器,因为它支持自己的微软专有名称解析协议。所以,如果出于某种原因你连接到需要与*nix服务器通信的网络并使用了WINS服务器,那么你将无法与该服务器进行通信。也就是说,WINS只能与Windows兼容。如果你查看历史记录,你会发现WINS今天仅仅存在于为早期的Windows 2000操作系统提供传统支持的目的。请参考http://en.wikipedia.org/wiki/Windows_Internet_Name_Service获取更多信息。 - Evan Plaice
1如果路由器没有内置DNS支持,并且您正在寻找一个完整的DNS服务器实现,请在nix计算机上安装bind(一个DNS服务器),并配置DNS重定向,然后将路由器上的DNS端口请求转发到nix计算机。有关如何执行此操作(以及DNS的一般情况)的详细说明,请参阅http://www.zytrax.com/books/dns/。 - Evan Plaice

你可以通过配置nmbd的NetBIOS名称,在本地网络上使用该NetBIOS名称而无需知道IP地址。
有一次,我和一个我认识的Windows系统管理员交谈时,他告诉我一个令人惊讶的事实:当你将Windows PC连接到网络时,即使你不知道该机器的新IP地址,你仍然可以通过使用它的Windows名称在网络上找到它。
我以为这是某种神奇的魔法,但事实证明,在Linux上安装、配置和运行nmbd也可以实现同样的功能。这是Samba的一部分。
要了解更多信息,请查看此链接
听起来这就是你所问的内容。