nmap 和 arp-scan 的 IP-MAC 结果不一致

nmap 和 arp-scan 的 IP-MAC 结果不一致

我似乎使用 nmap 或 arp-scan 从特定机器获得了可变且不一致的 IP/MAC 地址结果。

该机器有3个接口,显示的是:

$ uname -a
Linux showstore-81 2.6.35.13 #1 SMP PREEMPT Thu Feb 9 12:20:36 PST 2012 i686 GNU/Linux

$ LC_ALL=C /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:1b:21:ac:17:19
          inet addr:192.168.81.54  Bcast:192.168.81.255  Mask:255.255.255.0
          ...

eth1      Link encap:Ethernet  HWaddr 00:25:90:25:d0:4e
          inet addr:192.168.81.129  Bcast:192.168.81.255  Mask:255.255.255.128
          ...

eth2      Link encap:Ethernet  HWaddr 00:25:90:25:d0:4f
          inet addr:169.254.1.1  Bcast:169.254.255.255  Mask:255.255.0.0
          ...

因此,无论我使用什么工具和选项,我都期望:

  • IP .54 => MAC 00:1b:21:ac:17:19
  • IP .129 => MAC 00:25:90:25:d0:4e

但是nmap -n -sP 192.168.81.0/24(nmap v. 5.00)报告了这一点反转

Host 192.168.81.54 is up (0.000078s latency).
MAC Address: 00:25:90:25:D0:4E (Super Micro Computer)

Host 192.168.81.129 is up (0.000058s latency).
MAC Address: 00:1B:21:AC:17:19 (Intel Corporate)

并且nmap -n -sP -PR 192.168.81/24仅报告两个 IP 上的其中一个 MAC 地址

Host 192.168.81.54 is up (0.000081s latency).
MAC Address: 00:1B:21:AC:17:19 (Intel Corporate)

Host 192.168.81.129 is up (0.00011s latency).
MAC Address: 00:1B:21:AC:17:19 (Intel Corporate)

最后,arp-scan -l(v.1.8.1)报告两个 IP 地址各两次,两个 MAC 地址各两次

192.168.81.54      00:1b:21:ac:17:19    Intel Corporate
192.168.81.54      00:25:90:25:d0:4e    Super Micro Computer, Inc.

192.168.81.129     00:1b:21:ac:17:19    Intel Corporate
192.168.81.129     00:25:90:25:d0:4e    Super Micro Computer, Inc.

我怎样才能进行扫描并得到正确的结果?(我只需要 IP 和 MAC。不需要端口扫描。)

答案1

首先,您使用的子网不一致/重叠。192.168.81.129/25 是 192.168.81.54/24 的一部分。因此,首先,执行 ifconfig eth0 netmask 255.255.255.128。接下来,由于我只能想象 eth0 与 eth1 插入同一个网络,因此您需要限制计算机对 ARP 的响应速度。

您将需要手动或在 /etc/sysctl.conf 中设置以下 sysctl 条目:

net.ipv4.conf.all.rp_filter=1 net.ipv4.conf.all.arp_filter=1 net.ipv4.conf.all.arp_announce=1 net.ipv4.conf.all.arp_ignore=2 net.ipv4.conf.all.shared_media=0

更新此内容以包含更多信息。通常,Linux 将使用接收请求的 NIC 的 MAC 地址来响应分配给计算机的 IP 地址的 ARP 请求,无论请求的 IP 是否在响应的 NIC 上配置。此外,默认情况下,Linux 将接受任何 NIC 上的 IP 数据包,该数据包发往计算机上本地配置的 IP 地址。因此,

上述 sysctl 设置限制了该行为,使得 Linux 仅响应 IP 的 ARP 请求(如果该请求在分配了 IP 的 NIC 上收到,并且请求来自可通过该 NIC 访问的 IP 地址)。可调参数记录在内核源代码分发中的文件 ip-sysctl.txt 中。

您所看到的是预期行为,而我建议的改变是让事情更符合您的期望。祝您好运。

相关内容