Разрешение MAC-адреса с IP-адреса в Linux

39

Мне нужно написать скрипт bash, в котором я должен создать файл, который содержит информацию об IP-адресах хостов и их сопоставлении с соответствующими MAC-адресами.

Есть ли какой-нибудь возможный способ узнать MAC-адрес любого (удаленного) хоста, когда доступен IP-адрес хоста?

Мандар Шинде
источник

Ответы:

36

Если вы просто хотите узнать MAC-адрес данного IP-адреса, вы можете использовать команду arpдля его поиска, как только вы пингуете систему 1 раз.

пример

$ ping skinner -c 1
PING skinner.bubba.net (192.168.1.3) 56(84) bytes of data.
64 bytes from skinner.bubba.net (192.168.1.3): icmp_seq=1 ttl=64 time=3.09 ms

--- skinner.bubba.net ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 3.097/3.097/3.097/0.000 ms

Теперь посмотрите в таблице ARP:

$ arp -a
skinner.bubba.net (192.168.1.3) at 00:19:d1:e8:4c:95 [ether] on wlp3s0

Fing

Если вы хотите развернуть всю локальную сеть для MAC-адресов, вы можете использовать инструмент командной строки fingдля этого. Как правило, он не установлен, поэтому вам придется скачать его и установить вручную.

$ sudo fing 10.9.8.0/24

    пример

Используя ip

Если вы обнаружите, что у вас нет доступных команд arpили fing, вы можете использовать команду iproute2 ip neighдля просмотра таблицы ARP вашей системы:

$ ip neigh
192.168.1.61 dev eth0 lladdr b8:27:eb:87:74:11 REACHABLE
192.168.1.70 dev eth0 lladdr 30:b5:c2:3d:6c:37 STALE
192.168.1.95 dev eth0 lladdr f0:18:98:1d:26:e2 REACHABLE
192.168.1.2 dev eth0 lladdr 14:cc:20:d4:56:2a STALE
192.168.1.10 dev eth0 lladdr 00:22:15:91:c1:2d REACHABLE

Ссылки

SLM
источник
Я знаю, что это старый ответ, но есть ли у вас понимание того, как реализован Fing? Я пытаюсь узнать об этом слое сетей и инструментах для его мониторинга.
акафеном
1
@akaphenom Если у вас есть новые вопросы, обращайтесь к ним напрямую, комментарии не предназначены для этого.
SLM
но не считается arpустаревшим? Как я могу сделать это с ip?
math2001
1
@ math2001 - это было не 5 лет назад, я добавил пример, показывающий, как использовать ip.
SLM
8

Вы можете использовать arpкоманду:

arp -an

Но вы можете использовать эту команду только в локальной сети, если вы хотите узнать MAC-адрес любого удаленного хоста, возможно, вы должны использовать какой-то инструмент для захвата пакета tcpdumpи анализа результата.

cuonglm
источник
2
tcpdump(8)будет отображать только локальные MAC-адреса (т. е. MAC-адрес последнего маршрутизатора). Заголовки входных пакетов на уровне MAC удаляются маршрутизатором, а к исходящему пакету добавляются новые.
vonbrand
5

Это из моего вопроса и ответа в аскубунту .

Вы можете использовать команду

   sudo nmap -sP -PE -PA21,23,80,3389 192.168.1.*

nmap:Инструмент для исследования сети и сканер безопасности / портов. Из руководства:

-sP(Пропустить сканирование портов). Эта опция указывает Nmap не выполнять сканирование портов после обнаружения хоста, а распечатывать только доступные хосты, которые ответили на сканирование. Это часто называют «сканированием ping», но вы также можете запросить запуск сценариев traceroute и хоста NSE. По умолчанию это на один шаг более навязчиво, чем сканирование списка, и часто может использоваться для тех же целей. Это позволяет легкую разведку целевой сети без привлечения большого внимания. Знание того, сколько хостов задействовано, более ценно для злоумышленников, чем список, предоставленный сканированием списка каждого IP-адреса и имени хоста.

-PE; -PP; -PM (ICMP Ping Типы). В дополнение к необычным типам обнаружения узлов TCP, UDP и SCTP, рассмотренным ранее, Nmap может отправлять стандартные пакеты, отправляемые вездесущей программой ping. Nmap отправляет пакет ICMP типа 8 (эхо-запрос) на целевые IP-адреса, ожидая возврата 0 (эхо-ответ) в ответ от доступных хостов. К сожалению, для исследователей сети многие хосты и межсетевые экраны теперь блокируют эти пакеты, а не отвечают как требуется RFC 1122 [2]. По этой причине сканирование только по протоколу ICMP редко бывает достаточно надежным в отношении неизвестных целей через Интернет. Но для системных администраторов, контролирующих внутреннюю сеть, они могут быть практичным и эффективным подходом. Используйте параметр -PE, чтобы включить это поведение эхо-запроса.

-A(Параметры агрессивного сканирования). Эта опция включает дополнительные расширенные и агрессивные опции.

21,23,80,3389 Порты для поиска

192.168.1.* Диапазон IP-адресов. заменить на ваш.

Maythux
источник
-sP для "scanPing", это также -sn в никогда не версии nmap, кажется.
meawoppl
4

arping

arping -I <interface> -c 1 <host>

Команда должна вернуть MAC-адрес в ответе. Что-то типа,

$ arping -I eth0 -c1 192.168.1.2
ARPING 192.168.1.2 from 192.168.1.5 eth0
Unicast reply from 192.168.1.2 [08:01:27:38:EF:32]  0.746ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

arpingпредоставляется пакетом iputils-arpingна Debian.

Hookman
источник
arpingТакже необходимо указать, какой интерфейс использовать, с -Iопцией.
Стивен Китт
Вы можете использовать arping -f для выхода после первого ответа.
Райан Григгс