我有一台思科路由器,我通过它将两台运行 ubuntu 的电脑连接到互联网。我通过 DHCP 获取 IP 地址。当我检查连接到路由器的电脑列表时,路由器管理页面会显示 IP 地址和主机名。似乎通过使用 DHCP,路由器能够以某种方式从“/etc/hostname”或“/etc/hosts”中获取主机名,对吗?问题是,如果我通过编辑文件“/etc/hostname”甚至“/etc/hosts”更改电脑的名称,路由器仍会存储以前的主机名,即使重置后,我如何让路由器存储更新的主机名?
另一方面,我如何才能找出连接到我的网络的计算机的主机名? nmap 似乎无法完成这项工作。我必须为网络中的所有计算机设置一个域吗?我该怎么做?
答案1
当您的 PC 开机时,它会使用 DHCP 协议来请求 IP 地址和网络设置,而 PC 提供的信息中的一部分就是其名称。DHCP 服务器会记住此信息并将其添加到其内部 DNS 数据库中。当同一台计算机(您的 Cisco 路由器)同时充当 DHCP 和 DNS 服务器时,此方法有效。
DHCPREQUEST
…
DHCP: Host Name = JUMBO-WS
DHCP 请求
…
帧的剩余部分(300 或 548 字节)是 DHCP 发现部分。其详细信息包括:
…
- 主机名 - 列出客户端计算机的计算机名称。
答案2
路由器本身有一个主机名列表。对于某些路由器,它们实际上自己运行的是 Linux 版本。通常,路由器会通过 DNS 解析协议找到一组主机名:
答案3
路由器可以通过几种方式了解与其连接的计算机的名称。
- 网络基本输入输出系统
- DNS如果路由器正在运行内部 DNS 服务。
- 这DHCP服务器也可以存储它,因为系统请求 DHCP 租约的名称是请求过程的一部分。
其他一些可能不值得注意,例如 WINS。
至于查找网络上的系统名称,您可以使用一个名为nbts扫描。