当我使用以下命令 ping 我的 Linux 服务器(在 Windows7 主机上的虚拟机中运行)时:
ping -a 192.168.56.***
我得到如下所示的结果。为什么它无法解析我的服务器名称?
Pinging 192.168.56.*** with 32 bytes of data:
Reply from 192.168.56.***: bytes=32 time<1ms TTL=64
Reply from 192.168.56.***: bytes=32 time<1ms TTL=64
Reply from 192.168.56.***: bytes=32 time<1ms TTL=64
Reply from 192.168.56.***: bytes=32 time<1ms TTL=64
哪里有问题?
答案1
输出看起来完全正常。
许多(大多数?) ping 实现不执行反向 DNS 查找。如果您传递 IP 地址,它将显示 IP 地址。
毕竟,为什么要为 DNS 烦恼呢? Ping 只需要 IP 地址。如果您传递主机名,则 ping 会执行 DNS 查找来获取地址。如果您传递 IP 地址,则 ping 仅使用该 IP 地址。
如果要执行反向 DNS 查找,请使用专门用于处理 DNS 的工具,例如host 192.168.56.42
或nslookup 192.168.56.42
。请注意,为了让一台机器知道另一台机器的名称,仅在该机器的/etc/hosts
: 中设置名称是不够的,这不会让其他机器知道。在 Unix 系统上声明机器名称的正常方法(就像互联网协议之前的世界上的大多数系统一样)是使用 DNS 注册它。某些虚拟机软件会自动向虚拟机提供 DNS 服务并提供在/etc/hosts
(或HOSTS.TXT
主机上Windows 上)声明的名称。如果您的服务器没有,请设置 DNS 服务器(请参阅这个答案寻找可能的方法)。
Linux 可能有一种方法来支持 Windows 的网络发现协议(NetBIOS?),但我对此并不熟悉,所以我无法告诉你如何做。如果它可以工作,你可能需要设置桑巴舞在 Linux 计算机上,并将其配置为在网络上宣传自己(Windows 倾向于默认完全开放,但 Linux 默认谨慎,因此您需要主动打开名称广播)。
答案2
您的 DNS 区域中没有该服务器的 dns 条目。