如何在不使用 DNS 的情况下远程查找 linux 主机名?

Joh*_*mBF 8 linux dns domain wins-server hostname

如果我想知道 LAN 上远程 linux 机器的主机名如何,如果我无法通过 SSH 等访问,我该如何实现?

可能取决于 linux 是否是我认为的 WINS 域的一部分。

bar*_*baz 6

您必须更详细地指定术语主机名。如果您正在寻找不想使用的 DNS 服务器已知的名称 - 除了实际询问该 DNS 服务器之外,没有其他方法可以知道。

如果您只是猜测,nmap可能会很有用。例如,如果该服务器上运行 smbd,则输出nmap -A可能如下所示:

Host script results:
| smb-security-mode:
|   Account that was used for smb scripts: guest
|   User-level authentication
|   SMB Security: Challenge/response passwords supported
|_  Message signing disabled (dangerous, but default)
|_smbv2-enabled: Server doesn't support SMBv2 protocol
|_nbstat: NetBIOS name: FOOBAR, NetBIOS user: <unknown>, NetBIOS MAC: <unknown>
| smb-os-discovery:
|   OS: Unix (Samba 3.5.6)
|   Computer name: foobar
|   Domain name: lan
|   FQDN: foobar.lan
|   NetBIOS computer name:
|_  System time: 2013-03-14 17:02:27 UTC+1
Run Code Online (Sandbox Code Playgroud)

其他服务也可能会提供有关机器名称的提示。


ter*_*don 3

在没有 DNS 服务器的情况下,这可能有效:

traceroute 1.2.3.4
Run Code Online (Sandbox Code Playgroud)

或者,如果相关服务器正在导出 Samba 共享,您可以执行以下操作:

smbclient -L 1.2.3.4
Run Code Online (Sandbox Code Playgroud)

这取决于您的 LAN 上是否设置了具有必要信息的可用 DNS 服务器。如果是这样,此命令应该执行您需要的操作:

nslookup 1.2.3.4
Run Code Online (Sandbox Code Playgroud)

或者

host 1.2.3.4
Run Code Online (Sandbox Code Playgroud)

最后,另一个有用的命令是

arp -a
Run Code Online (Sandbox Code Playgroud)

  • Traceroute 还使用 dns 来解析名称 (2认同)