我非正式地管理一个小型(<10 台机器)办公网络,其中的机器运行各种 Windows 操作系统:
- 一个基于 XP(运行专业软件和硬件,与较新的 Windows 版本不兼容,因此我无法轻松更新它)。
- Win7 上有几个。
- Win Server 2008 上的软件许可证和文件服务器(使用率很低)
- Windows 10 上有一个 - 刚刚交付,我实际上还没有把它全部连接起来。
我们刚刚(偶然)发现在系统中两台计算机之间共享同一个主机名的好处,这与一些旧软件的设置方式有关。但最终我们想要这样做的原因对于这个问题的目的来说无关紧要。
据我所知,我设置的唯一一台通过主机名引用的机器是服务器,它通过其主机名“[CompanyName]-Server”进行访问,网络上的其他机器都不会直接相互通信。我也不打算复制服务器的主机名,只是复制一些客户端的主机名。
我不相信我曾经通过 Windows 设置过任何类型的域、家庭组或工作组,我只是通过 Windows 中服务器的 IP 配置设置为服务器设置了一个静态本地 IP 地址(xxx1),通过它们自己的配置对我们的网络打印机执行了同样的操作,然后将我们的路由器设置为网络上其他机器的 DHCP 服务器(xxx100-199)。
所有机器也通过路由器共享互联网连接,但除了偶尔使用 TeamViewer(远程桌面)外,我们不会在 LAN 之外托管任何东西(网站、服务器)等。
我目前假设,在大多数情况下,主机名只是一种识别网络上机器的“用户友好”方式,而大多数重要功能将默认使用 IP 地址。
我需要知道的是,同一网络上具有相同主机名的两台(或更多台)机器是否可能导致任何一般问题。
需要澄清的是,当我使用术语“主机名”时,我指的是在 Windows 命令提示符中输入“主机名”时返回的“计算机名称”。
答案1
稍微有点儿迂腐,主机名与计算机名并不相同,但通常都是相同的。您可以有重复的主机名,这没问题(例如,有多个名为 www.google.com 的主机)。
首先,您实际上可能谈论的是机器名称(\companyname-server\files 中的 companyname-server)。Windows 将假定这是唯一的。其次,这实际上是“机器名称” - 通常但并不总是与主机名相同(感谢 Microsoft)。
最后 - 如果服务器的名称是唯一的,并且您只使用工作组,则应该没问题 - 但不要惊讶于看到一些奇怪的事情,这假设打印机都是从服务器中分离出来的或独立的。人们想要访问的任何东西都需要是唯一的,如果你曾经访问过 Windows Active Directory 域,你必须拥有独特的名称*
*好吧,有一些技巧,例如DisableStictNameChecking和OptionalNames。不要去那里。
答案2
我发现 TheFiddlerWins 的回答有点太技术性了。既然他谈论的是 Windows 环境,我就补充一下我的看法。
我目前假设,在大多数情况下,主机名只是一种识别网络上机器的“用户友好”方式,而大多数重要功能将默认使用 IP 地址。
这并不完全正确。告诉您的同事连接到“fileserver01”肯定比连接到“192.168.241.11”甚至“fe80::aa8f:5478:bca9:fe21”更容易。但随着 IPv6 的引入,即使在小型网络中,您也可能会依赖自动分配的 IP 地址。特别是因为您不再需要 DHCP 服务器。(就我个人而言,我再也不会手动为台式计算机分配 IP 地址。无论是 IPv4 还是 IPv6。)
从这个角度来看,您的陈述存在以下错误:您将无法再有效地寻址计算机,因为 IP 地址会发生变化。当然,除非您通过主机名来识别它们。
现在,在 Active-Directory 环境中,主机名必须是唯一的。
在 Windows 中工作组环境中,您可以为所有计算机赋予相同的主机名(但它们可能会抱怨)。
但是如果你必须通过名称来寻址计算机(例如因为软件需要),那么就无法知道哪台计算机实际上接收了数据包。甚至有可能一个数据包发往公司名称-客户(192.168.0.1)以及下一个公司名称-客户(192.168.0.2)。这可能会导致一些简单的问题,如传输时间过长、超时、断开连接,甚至严重的安全问题。
我们刚刚(偶然)发现在系统上的两台计算机之间共享同一主机名的好处
我只能猜测,但听起来你可能已经实现了某个应用程序或服务的某种更高可用性。按照这种方式,实际上很常见的做法是将多个服务器置于一个共同的主机名后面,以实现冗余。但这种情况并不像为两台具有相同硬件、软件和应用程序配置的机器赋予相同的主机名那么简单。
总而言之,您可能根本不会遇到问题。但您可能会遇到某些软件的问题,甚至导致严重的安全漏洞。这完全取决于您的环境。