Answers:
MAC地址不会被路由器传递。您需要查看路由器的ARP表。
编辑:
除非您有其他访问机器的方式,否则是不可能的。如果您可以连接到已打开的网络(VNC,RDP,SSH),则可以执行此操作,否则不行。
如果您的路由器未在其Web界面上提供ARP表,则可以查看是否可以telnet:许多家用路由器具有隐藏在Web界面中的更高级的功能。
不能保证可以看到路由器后面的计算机的MAC地址。但是有些协议可以帮助您从网络中的任何地方查找MAC地址。例如,要在其他网络上找到Windows PC的IP地址时查找它的IP地址,可以使用命令
nbtstat -A <IP Address>
要在Linux机器(安装了samba)上执行相同的操作,请使用命令
nmblookup -R -S -A <IP Address>
如果所讨论的计算机不是Windows计算机,则无法成为其他子网的一部分。然后,唯一的选择是在路由器中查看MAC地址表,或者如果存在通用的网络范围内的DHCP服务器,则可以在DHCP日志中查看MAC地址。但是我想您必须是管理员才能访问路由器或DHCP服务器。
因此,如果您的网络上有很多Windows计算机,即使它们不在其子网中,您也可以找到它们的MAC地址。但是,如果网络中有很多Linux机器,那么就没有很好的通用方法从其他网络中查找MAC。
以上技术在Linux samba服务器上不起作用。他们将始终将MAC地址返回为00-00-00-00-00-00。
我想你想知道的是-
您如何找到不属于您子网的特定IP(机器)的MAC?
对于子网上的所有计算机/ IP,IP-MAC表存储在计算机本地的ARP缓存中。这与提供“ IP解析冲突”的缓存相同。做一个简单的
$ arp -a | grep特别IP
现在,对于您子网外的机器-没有执行该操作的机架应用程序标准,我试图考虑是否有任何ICMP消息可以做到这一点,但到目前为止,我认为还没有。很好的设计网络而不是分层的方式,这是故意的有害行为。为了逃避或删除与当前层以下有关的信息,并且随着我们跨网络使用IP,因此没有MAC。
看看您是否在另一台计算机上有合作,您可以编写一个小应用程序,其中封装了mac标头并发送给您...当然,如果您在另一台计算机上有合作,那么为什么要花这么多精力来做一个简单的ifconfig -a可以完成该机器上所有接口的工作。
您只能“查看”位于同一子网中的主机的mac地址。然后,您可以使用arp命令列出所有mac地址:
arp -a
或单个IP地址:
arp -a 192.168.0.1
您知道设备的制造商吗?如果是这样,您可能可以获取MAC的一部分。
我能想到的唯一另一件事是vxlan,但我敢肯定,将其设置起来比仅访问直接拥有MAC的路由器要困难得多。
就像在其他答案中告诉人们的那样,ARP是第二层协议,并且不能路由,因此以常规方法进行扫描不会为您提供MAC地址。例
nmap -sn target
只会提供位于同一网段的设备的MAC地址。有两个使用助手的nmap脚本,例如nbtstat和snmp
NBTSTAT 这要求在目标nmap命令打开的UDP端口137
nmap -sU --script nbtstat.nse -p 137 target
SNMP 该协议必须正常运行,它的端口开放,才能为我们提供有关目标MAC的任何信息。也是UDP端口161
nmap -sU -p 161 --script=snmp-interfaces target
IPV6地址 可用于从IPv6或类似地址(teredo,6至4等)检索MAC。我只在有一部分Mac的IPv6地址上尝试过
nmap -sV -sC target
(这是nmap https://nmap.org/nsedoc/scripts/address-info.html的命令),但在测试时(在内部fe80主机上),则需要-6这样
nmap -sV -sC -6 target
尝试namp强烈扫描: nmap -T4 -A -v IP-address
我不知道路由器,但是如果您有IP地址,即使在本地主机中也可以使用nmap获取mac地址,因此您也可以为什么要从路由器或类似的东西上获取它呢?如果您的操作系统是Linux,则可以使用macchanger或许多其他应用程序,因此我没有idia为什么要这样做。