获取本地子网上的 IP 地址列表以及它们所在的交换机

获取本地子网上的 IP 地址列表以及它们所在的交换机

我想获取一个文本文件,列出哪些 IP 地址位于我的本地子网以及它们连接到哪个以太网交换机。理想情况下,机器的名称会很好,但我可以手动计算出来。

有人建议使用 NMAP。我试过,但选项太多了,不知所措。有没有一个选项可以给我提供这类信息。

我的直觉是,由于交换机对 IP 是透明的,因此很难找到交换机信息。有人可以建议一种方法吗?

答案1

例如使用

nmap -sP -PR 192.168.1.0/24

(使用适当的网络地址和掩码)

映射主机。-sP跳过端口扫描,同时-PR请求 ARP 扫描,它只在本地网络上有效,但不能被防火墙阻止(实际上,它可以,但这非常不切实际)。

您可以使用一些脚本将其过滤为示例列表:

nmap -sP -PR 192.168.1.0/24 2>/dev/null |grep "appears to be up" |awk '{print $2}'

要获取物理位置,您需要一个可管理的交换机。好的可管理交换机将响应 SNMP,并允许您查询特定 MAC 地址的位置。

/proc/arp您首先需要将 IP 映射到 MAC 地址,您可以尝试处理 nmap 的输出,但查阅系统 ARP 表(在 *nix 上读取,或尝试该arp命令)更容易。

获得 MAC 地址后,通过 SNMP 获取端口的标准方式通常是通过 Q-BRIDGE-MIB(如果您的交换机处理 VLAN)或(IIR)P-BRIDGE-MIB。例如,您可以使用 net-snmp 工具查询它:

snmpget -v2c -c public 192.168.1.1 Q-BRIDGE-MIB::dot1qTpFdbPort.y.x.x.x.x.x.x

其中public是 SNMP 社区的名称,192.168.1.1转变y是 VLAN ID,是MACx地址的十进制编码字节。您可能需要在交换机上启用 SNMP,允许从您的站点进行访问,使用不同的社区名称和/或协议版本。

对于不处理 VLAN 的交换机,据我所知,P-BRIDGE-MIB 中有等效条目。

要了解地址编码的工作原理,您可以使用snmpwalk检索交换机的完整转发表,如下所示:

smpwalk -v2c -c public 192.168.1.1 Q-BRIDGE-MIB::dot1qTpFdbPort

如果您有多个交换机,则每个 MAC 都会出现在正确交换机的正确端口上,但也会出现在其他交换机的相关中继端口上,因此您需要一种方法来过滤掉中继端口。

答案2

列出所有使用网关的主机(可能是交换机(或路由器)


arp-scan -I eth0 -l

答案3

不确定您使用的是哪种操作系统,但在某种程度上,您可以从您的机器中找到信息。您应该运行 wireshark(ethereal)工具。这将让您了解在网络之间传输的所有数据包。您不会获得所有机器的列表,但将能够看到许多网络和机器。之后,您可以检查您的 arp 表,还可以找到机器的 IP、mac 地址。您的子网掩码应该会告诉您当前网络中允许多少台机器。

相关内容