佬叁 2019-01-05
您可能多少次尝试为网络上的一台计算机配置静态IP地址,却发现自己根本不知道已经有人用了哪些地址?如果您使用的是台式计算机,那么您总是可以安装Wireshark这样的工具来查找正在使用的地址。但是如果您使用的是无GUI服务器呢?您当然不会依赖于基于图形的工具来扫描IP地址。幸运的是,有一些非常容易使用的命令行工具可以处理这个任务。
我将向您展示如何使用两种不同的工具扫描局域网(LAN)中的IP地址(默认情况下,其中一种工具安装在您的服务器上)。 我将在Ubuntu Server 18.04上演示。
让我们开始吧。
我们将用于该任务的第一个工具是内置的arp命令。 大多数IT管理员都熟悉arp,因为几乎在每个平台上都使用它。 如果您从未使用过arp(代表地址解析协议),则该命令用于操作(或显示)内核的IPv4网络邻居缓存。 如果发出没有模式说明符或选项的arp,它将打印出ARP表的当前内容。 那不是我们要做的。 相反,我们将发出如下命令:
linuxidc@linuxidc:~$ arp -a
? (192.168.182.239) 位于 00:0c:29:93:95:f8 [ether] 在 ens33
_gateway (192.168.182.2) 位于 00:50:56:f6:7e:c2 [ether] 在 ens33
? (192.168.182.254) 位于 00:50:56:ec:da:77 [ether] 在 ens33
? (192.168.182.223) 位于 00:0c:29:93:77:6f [ether] 在 ens33
? (192.168.182.1) 位于 00:50:56:c0:00:08 [ether] 在 ens33
图1:我的局域网上有很多虚拟机
-a选项使用和备用BSD样式输出并打印LAN上找到的所有已知IP地址。 该命令的输出将显示IP地址以及相关的以太网设备
您现在拥有LAN上使用的每个IP地址的列表。 唯一需要注意的是(除非您知道网络中每台设备的MAC地址),否则您将无法知道IP地址分配给哪台机器。 即使不知道哪个机器与哪个地址相关联,您至少知道正在使用的地址。
接下来,我们使用提供更多选项的命令。 所述命令是nmap。 默认情况下,您的Linux机器上不会安装nmap,因此我们必须将其添加到系统中。 打开终端窗口(或登录无GUI服务器)并发出命令:
linuxidc@linuxidc:~$ sudo apt-get install nmap -y
图2
安装完成后,您就可以使用nmap扫描LAN了。 要找出正在使用的地址,请发出以下命令:
nlinuxidc@linuxidc:~$ map -sP 192.168.182.0/24
图3:命令输出将显示LAN上找到的每个地址。
注意:您需要更改IP地址方案以匹配您的IP地址方案。
Nmap现在给我们提供更多信息。
让我们使nmap更有用。 因为它提供了更多的灵活性,我们还可以发现与IP地址关联的操作系统。 为此,我们将使用选项-sT(TCP连接扫描)和-O(操作系统发现)。 这个命令是:
linuxidc@linuxidc:~$ sudo nmap -sT -O 192.168.182.0/24
图4
根据网络的大小,此命令可能需要一些时间。 如果您的网络很大,请考虑将命令的输出发送到如下文件:
linuxidc@linuxidc:~$ sudo nmap -sT -O 192.168.182.0/24 > nmap_output
图5:操作系统与IP地址相关联。
然后,您可以使用文本编辑器查看该文件,以找出连接到IP地址的操作系统(图5)。
借助这两个简单的命令,您可以在网络中找到正在使用的IP地址。 现在,当您分配静态IP地址时,您不会意外地分配一个已在使用中的IP地址。
如果还有什么疑问,尽管提出来吧,如果出现以下问题:
WARNING: eth_send of ARP packet returned -1 rather than expected 42 (errno=22: Invalid argument)
WARNING: eth_send of ARP packet returned -1 rather than expected 42 (errno=22: Invalid argument)
WARNING: eth_send of ARP packet returned -1 rather than expected 42 (errno=22: Invalid argument)
WARNING: eth_send of ARP packet returned -1 rather than expected 42 (errno=22: Invalid argument)
WARNING: eth_send of ARP packet returned -1 rather than expected 42 (errno=22: Invalid argument)
WARNING: eth_send of ARP packet returned -1 rather than expected 42 (errno=22: Invalid argument)