Я хочу знать, если возможно, как получить MAC-адрес IP-адреса, если я нахожусь за маршрутизатором.
Я попытался выполнить команду ping для IP и проверить таблицу arp, но единственная запись - это MAC-адрес маршрутизатора.
Любые идеи?
Спасибо за прочтение.
MAC-адреса не передаются маршрутизаторами. Вам нужно посмотреть таблицу ARP маршрутизатора.
Редактировать:
Да, это невозможно, если у вас нет другой формы доступа к машине. Если вы можете войти в сеть, в которой он находится (VNC, RDP, SSH), вы можете это сделать, но в остальном нет.
Если ваш маршрутизатор не предоставляет вам таблицу ARP в своем веб-интерфейсе, вы могли бы увидеть, можете ли вы подключиться по telnet: многие домашние маршрутизаторы имеют более продвинутые функции, которые они скрывают от веб-интерфейса.
Невозможно гарантировать, что вы увидите MAC-адреса машин за маршрутизатором. Но есть несколько протоколов, которые могут помочь вам найти MAC-адрес из любой точки сети. Например, чтобы найти MAC-адрес ПК с Windows в другой сети, когда вы знаете его IP-адрес, вы можете использовать команду
nbtstat -A <IP Address>
Чтобы сделать то же самое с Linux-машины (с установленной samba), используйте команду
nmblookup -R -S -A <IP Address>
Если рассматриваемая машина не является машиной Windows и нет возможности стать частью другой подсети. Тогда единственными вариантами будут видеть таблицу MAC-адресов в маршрутизаторе, или, если есть общий сетевой DHCP-сервер, вы можете увидеть MAC-адрес в журналах DHCP. Но я думаю, вы должны быть администратором для доступа к маршрутизатору или DHCP-серверу.
Следовательно, если в вашей сети много компьютеров с Windows, вы можете найти для них MAC-адрес, даже если они не находятся в их подсети. Но если в сети много машин с Linux, то нет очень распространенного способа найти MAC из других сетей.
Вышеупомянутый метод не работает на серверах Samba Linux. Они всегда будут возвращать MAC-адрес как 00-00-00-00-00-00.
Если рассматриваемый IP-адрес не находится в подсети маршрутизатора, подключенной напрямую, то MAC-адрес не будет в таблице ARP вашего маршрутизатора.
ARP виден / актуален только для последнего перехода IP-соединения (уровень 2). Все между первым объектом маршрутизации и последним объектом маршрутизации - это уровень 3, который не использует ARP исходных или целевых объектов, а скорее ARP следующего напрямую подключенного объекта маршрутизации.
Я думаю, что ты хочешь знать -
Как узнать MAC-адрес конкретного IP-адреса (машины), не входящего в вашу подсеть?
Для всех машин / IP-адресов в вашей подсети таблица IP-MAC хранится в ARP-кэше локально на вашем компьютере. Это тот же кеш, который дает "конфликты разрешения IP". сделать простой
$ arp -a | grep specificIP
Теперь для машины за пределами вашей подсети - нет стандарта полочного приложения, которое делает это, я попытался подумать, может ли какое-либо сообщение ICMP сделать это, но на данный момент я думаю, что его нет. Что ж, способ создания сети, а скорее многоуровневость, это намеренно нежелательное поведение. Чтобы избежать или удалить информацию, которая имеет отношение к уровням ниже настоящего, и поскольку мы во всех сетях используется IP, поэтому MAC не используется.
Посмотрите, есть ли у вас сотрудничество на другом компьютере, вы можете написать небольшое приложение, которое инкапсулирует заголовок Mac и отправляет вам ... конечно, если у вас есть сотрудничество с другой машиной, зачем так много усилий простой ifconfig -a выполняет эту работу для всех интерфейсов на этой машине.
Вы можете «видеть» только MAC-адреса хостов, находящихся в той же подсети. Затем вы можете вывести список всех MAC-адресов с помощью команды arp:
arp -a
или для одного IP-адреса:
arp -a 192.168.0.1
Если у вас есть доступ к удаленному компьютеру или любому компьютеру в удаленной сети, вы можете использовать WMI или запускать различные приложения, чтобы получить MAC-адрес. Я не могу придумать другого способа получить MAC-адрес.
JR
Вы знаете производителя устройства? Если это так, вы можете получить часть МАС.
Единственное, что я могу придумать, - это vxlan, но я уверен, что его будет сложнее настроить, чем просто получить доступ к маршрутизатору, который будет иметь MAC напрямую.
Как сказали люди в другом ответе, ARP - это протокол второго уровня, который не маршрутизируется, поэтому сканирование обычными методами не вернет вам MAC-адреса. пример
nmap -sn target
даст только MAC-адреса устройств, которые находятся в одном сегменте сети. Есть два сценария nmap, которые используют помощники, такие как nbtstat и snmp.
NBTSTAT для этого требуется, чтобы на целевом компьютере был открыт порт 137 UDP, команда nmap
nmap -sU --script nbtstat.nse -p 137 target
SNMP этот протокол должен работать, его порт открыт, чтобы дать нам любую информацию о MAC-адресе цели. Также UDP порт 161
nmap -sU -p 161 --script=snmp-interfaces target
IPV6-адреса это работает при получении MAC-адресов с IPv6 или подобных адресов (teredo, 6to 4 и т. д.). Я пробовал только на IPv6-адресе, на котором есть часть Mac
nmap -sV -sC target
(это команда из nmap https://nmap.org/nsedoc/scripts/address-info.html), но при тестировании (на внутренних хостах fe80) требовалось -6, поэтому
nmap -sV -sC -6 target
Попробуйте nmap Intense Scan: nmap -T4 -A -v IP-address
Я не знаю насчет маршрутизатора, но если у вас есть IP-адрес, вы можете использовать nmap для получения MAC-адреса даже на вашем локальном хосте, вы тоже можете это сделать, так какого черта вы хотите получить это от маршрутизатора или что-то в этом роде? если у вас Linux, вы можете использовать macchanger или множество других приложений, поэтому я не понимаю, почему вы хотите сделать это именно так.