我在 Mac OS X 10.7.5 上。我的主机名出现了某种问题。我经常运行 Web 服务器(PHP/Java),但突然间它们无法正常运行。这台机器始终有 DHCP,这从来都不是问题。这台机器名为blah
,我刚刚使用系统首选项检查了它,包括网络和共享部分。所有设置都相同。我的路由器(Asus RT-N66U)认为它没问题,它的客户端列表(查看连接到我的 LAN 的所有机器)证实了这一点。
问题示例。对blah
自身执行 ping 操作:
# ~: ping blah
ping: cannot resolve blah: Unknown host
此外,在另一台机器(名为other
)上 ping :
other: ping blah
PING blah (192.168.1.236): 56 data bytes
64 bytes from 192.168.1.236: icmp_seq=0 ttl=64 time=2.223 ms
64 bytes from 192.168.1.236: icmp_seq=1 ttl=64 time=1.390 ms
...
那么,blah
无法看到自身但other
可以吗?但是然后,我启动了一个 php cli web 服务器。
http://blah
在 上启动正常blah
但 在 上other
http://blah
返回failed to connect to server
。所以,WTF!?!哈哈!!我快没头发可拔了……
本质上,我想要:
- DHCP 在
blah
我的服务器+开发机器上。最好是,因为blah
我经常带着笔记本电脑旅行,并且不想在其他网络上连接时遇到麻烦。 - LAN 上的其他机器能够http://blah它会解决。最好无需在这些 LAN 客户端上添加任何内容。也不需要在 URL 中输入 IP 地址。
我不知道还能尝试什么,但这似乎是某种 DNS 问题。也许是路由器的原因?
真扫兴……没人愿意尝试帮助我解决这个问题?我真的需要这个才能测试我在这台开发机器上构建的 Web 应用程序。我刚刚又试了一次,但在 LAN 上连接的另外两台机器上失败了。这是一个令人震惊的问题,尤其是 Web 开发是我的专业背景,我真的需要解决这个问题!我开始认为这可能是路由器问题。我无法(或没有找到如何)配置我的路由器以blah
正确解决问题。(可悲的)解决方案可能是更换该死的路由器。
好吧,几个月过去了,问题依然存在。今天我终于在我的 LAN 上找到了所有问题的根源。基本上,如果我让整个堆栈(Web 服务器 + 客户端)使用特定的 IP,那么一切都会正常。所以,我猜这显然指向了名称解析的问题。此外,我首先尝试使用静态 IP 设置我的服务器,但没有办法告诉我的路由器(华硕 RT-N66U)应该blah
解析到所选的 IP。所以从本质上讲,我猜可以公平地假设路由器没有解析我的 Web 服务器的名称。但有趣的是,这只发生在 Web 服务器上。否则,其他服务可以很好地解析该名称(例如,ping、vnc、远程桌面、文件共享)。所以也许我应该在 Web 服务器(php apache、xampp)上配置一些额外的内容。有人有什么建议吗?遗憾的是,没有办法在我的路由器的 DNS(blah = 192......
)中添加静态路由,我看到其他几个人抱怨类似的问题。也许我应该咬紧牙关,再买一个?可以肯定的是,对于 Web 开发人员的路由器来说,这似乎确实是一个缺少的“必备”功能。
也许,作为一种解决方法,我可以使用另一个路由器(较旧但可靠)作为 DHCP 服务器 + DNS,与这个路由器(配置为交换机)配对?那个旧路由器是 10/100,而华硕是千兆。但我想现在这可能是一个不错的“黑客攻击”。或者,当我需要做一些开发工作时,也许可以将该路由器设置为单独的 wifi 和切换网络。
撞!
答案1
Mac OS X 对于机器名称有三种不同的看法:ComputerName
、HostName
和LocalHostName
。您可以使用 scutil 查看它们的含义,如下所示:
hubble ~ % scutil --get ComputerName
hubble
hubble ~ % scutil --get HostName
hubble
hubble ~ % scutil --get LocalHostName
hubble
ComputerName
是 GUI 使用的用户友好名称(例如,在共享首选项中),并且 LAN 中的所有 Mac 都会看到该名称。
HostName
是命令行实用程序所看到的(例如 ssh),如果您更改 /etc/hosts 对 IP 名称的想法,则您可能会更改此名称。
LocalHostName
是 Bonjour 所使用的,并且同样,运行 Bonjour 服务的 LAN 上的 Mac 将会看到这个名称。
Mac OS X 默认这三个名称相同。某个东西改变了其中一个名称(可能是 HostName),您应该检查它们是什么,然后使用选项将它们全部设置为相同--set
。
答案2
这不完全是一个解决方案,但我能够使用完全合格的域名接收响应。
使用“Ping Site1-Room1-HP”时,我也收到未知主机错误。使用“Ping Site1-Room1-HP.Site1.MyCompany.Local”时,我收到了设备的响应。
不确定为什么我的 Windows 设备在没有 FQDN 的情况下将主机名解析为 IP,不过,这种解决方法只是有点不方便。