Перечислите все MAC-адреса и связанные с ними IP-адреса в моей локальной сети (LAN)

84

Как я могу перечислить все MAC-адреса и связанные с ними IP-адреса машин, подключенных к моей локальной сети (LAN)?

Maythux
источник
6
важно понимать, что как только вы пройдете через оборудование сетевого уровня 3-го уровня, вы не сможете получить MAC и IP-
адрес
Почему вы ставите !после знака вопроса? Это не обязательно и используется только в тех случаях, когда вопрос выкрикивается или имеет большое значение.
Кири
@ minerz029 спасибо за разъяснение
Maythux
1
sudo tail -f /var/log/messages, затем отключите и снова подключите устройство, на котором вы пытаетесь найти MAC-адрес, или выполните grep / read сообщения, чтобы найти устройство.
IceArdor

Ответы:

63

Вы можете использовать утилиту Nmap для этого. Nmap - это бесплатная утилита сетевого сканирования.

Попробуйте просто:

sudo nmap -sn 192.168.1.0/24

Пожалуйста, замените свой сетевой идентификатор и маску подсети.

Как найти идентификатор сети и маску подсети

Используйте команду ip a:

bash~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether c4:85:08:94:ee:9a brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.66/24 brd 192.168.3.255 scope global wlan0
    inet6 fe80::c685:8ff:fe94:ee9a/64 scope link valid_lft forever preferred_lft forever

Здесь, в пункте 2, у меня есть wlan0устройство. Он говорит inet 192.168.3.66/24 brd 192.168.3.255 scope global wlan0, IP - адрес: 192.168.3.66, маска подсети: 24. Идентификатор сети есть 192.168.3.0, просто замените последний номер на 0.

Или как человек nmapговорит:

sudo nmap -sn 192.168.1.0/24

Вот небольшая цитата из справочной страницы nmap (1) :

-sn (No port scan)

Эта опция указывает Nmap не выполнять сканирование портов после обнаружения хоста, а распечатывать только доступные хосты, которые ответили на сканирование. Это часто называют «сканированием ping», но вы также можете запросить запуск сценариев traceroute и хоста NSE.

По умолчанию это на один шаг более навязчиво, чем сканирование списка, и часто может использоваться для тех же целей. Это позволяет легкую разведку целевой сети без привлечения большого внимания.

Знание того, сколько хостов работает, более ценно для злоумышленников, чем список, предоставленный сканированием списка каждого IP-адреса и имени хоста.

Системные администраторы также часто находят эту опцию полезной. Его можно легко использовать для подсчета доступных компьютеров в сети или мониторинга доступности сервера. Это часто называется проверкой ping и более надежно, чем ping широковещательного адреса, поскольку многие хосты не отвечают на широковещательные запросы.

По умолчанию обнаружение хоста выполняется с -snпомощью эхо-запроса ICMP, TCP SYN на порт 443, ACK TCP на порт 80 и запроса метки времени ICMP по умолчанию.

При выполнении непривилегированным пользователем только пакеты SYN отправляются (с помощью connectвызова) на порты 80 и 443 на цели.

Когда привилегированный пользователь пытается сканировать цели в локальной сети Ethernet, используются запросы ARP, если --send-ipне указано иное. -snВариант можно комбинировать с любыми типами открытия зонда (в -P*вариантах, за исключением -Pn) для большей гибкости.

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

В предыдущих выпусках Nmap -snбыл известен как -sP.

c0rp
источник
Это не работает
Maythux
4
Это нужно будет отрегулировать так, чтобы 192.168.1.0/24оно изменялось на диапазон IP-адресов пользователя.
Кири
@ minerz029 Конечно, я сменил IP
Maythux
Я не знаю, является ли это причиной, но в Linux я использую nmap -sP 192.168.1.0/24для проверки ping.
Тиктак
2
Знаете ли вы, почему привилегированные суперпользователи необходимы для чтения MAC-адресов из сети?
Михаил Аквилина,
45

arpбудет медленно возвращать вам список активных MAC-адресов и IP-адресов или их имен хостов, если они есть. Если вы хотите, чтобы он шел быстрее, вы можете использовать, arp -nкоторый должен пропустить поиск DNS. Если вам нужно разобрать его во что-то arp -an, пропустите столбцы фиксированной ширины.

$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
10.10.0.11               ether   00:04:ff:ff:ff:d0   C                     eth0
10.10.0.16               ether   00:04:ff:ff:ff:a6   C                     eth0
raspbmc.local            ether   00:1f:ff:ff:ff:9c   C                     eth0
10.10.0.19               ether   00:04:ff:ff:ff:c9   C                     eth0
10.10.0.12               ether   bc:f5:ff:ff:ff:93   C                     eth0
10.10.0.17               ether   00:04:ff:ff:ff:57   C                     eth0
10.10.0.1                ether   20:4e:ff:ff:ff:30   C                     eth0
HPF2257E.local           ether   a0:b3:ff:ff:ff:7e   C                     eth0
10.10.0.15               ether   00:04:ff:ff:ff:b9   C                     eth0
tim                      ether   00:22:ff:ff:ff:af   C                     eth0
10.10.0.13               ether   60:be:ff:ff:ff:e0   C                     eth0

В противном случае ваш маршрутизатор должен дать вам представление об активных устройствах (большинство из них).


Отредактируйте комментарий Per davidcl, этот ответ не так совершенен, как я сначала надеялся.

arpполагается на какой-то предыдущий контакт для работы. Однако, по моему мнению, современные устройства настолько разговорчивы (вы должны действительно смотреть wireshark - это образование) на уровне вещания, что маловероятно, что устройство будет присутствовать в сети, по крайней мере, не отвечая на передачу. (Чтобы быть уверенным, что сначала вы можете пропинговать все устройства в сети с 10.10.0.255, а затем, скорее всего, получите более 90% устройств.)

Чтобы дать вам некоторое представление о том, что я имею в виду, 10.10.0.16 выше - это наш PVR. Нет прямого взаимодействия между моим ПК и PVR, и на PVR не работает никаких сервисов (также нет UPNP / DLNA).

Просто чтобы разыграть аргументы быстро ...

  • Но как насчет хакеров в моей сети?! 1
    Они также могут блокировать пинг ICMP. Они могут блокировать все ответы на каждый тип сканирования.
  • Да, но это, безусловно, nmapлучшее из возможных решений.
    При запуске здесь все еще не хватает четырех устройств. Четыре устройства, которые активны в сети. Либо они не отвечают на пинги, либо nmap не ждет достаточно долго, чтобы они могли ответить ... Я не знаю. nmapЭто отличный инструмент (особенно для сканирования портов, который вы, возможно, захотите сделать дальше), но он все еще немного неуклюж (и немного медленен) для этой проблемы. И не называй меня Ширли.
Оли
источник
1
Если я изменил свой MAC ID с помощью Mac Changer, могу ли он показать оригинал?
r'dʒɑ
2
@BYEAskUbuntu, если вы используете MAC-чейнджер, ваш MAC - это то, что вы установили. Для всех пользователей сети его происхождение, как правило, неизвестно, поэтому нет.
Руслан
3
@Ruslan Это просто параноидально, что я от них отказываюсь ... Я уверен, что человеку будет довольно сложно что-либо с ними сделать, но вы никогда не знаете, кто вас преследует.
Оли
9
Я удивлен этим ответом. «arp» не показывает список активных MAC-адресов в локальной сети. «arp» показывает список MAC-адресов, соответствующих машинам, которые взаимодействовали с машиной, на которой он запущен. Если в последнее время не было связи между локальной машиной и другой машиной в сети, эта машина не будет отображаться в списке «arp».
Давидкл
5
Я только что провел быстрый тест в своей сети, и arp отображает только около 25% существующих устройств. Если компьютер под управлением arp не получил пакет от другого устройства, он не будет в списке arp. Мне было бы интересно узнать больше об устройствах, которые nmap не смог обнаружить в вашей сети; Есть способы скрыться от nmap, но я нашел сканирование nmap по умолчанию довольно эффективным. Тем не менее, нет отказоустойчивого ответа, потому что, если устройство не генерирует трафик и не отвечает на запросы, оно невидимо - но большинство устройств ответит на какой-либо тип запроса.
Давидкл
37

Я использую arp-scanдля этого:

$ sudo arp-scan -l
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.2.1     ec:1a:59:61:07:b2       (Unknown)
192.168.2.50    90:59:af:3d:6d:bc       (Unknown)
192.168.2.51    3c:97:0e:48:22:12       (Unknown)
192.168.2.52    00:18:31:87:8f:b0       Texas Instruments

4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 256 hosts scanned in 1.282 seconds (199.69 hosts/sec). 4 responded
jcrigby
источник
1
Если вы хотите указать сетевой интерфейс, например беспроводной, используйте эту командуsudo arp-scan -l -I wlan0
HarlemSquirrel
Да, arp-scan действительно «лучший инструмент для работы».
mivk
Это не работает для меня ... устройство по какой-то причине не отвечает.
Эндрю Вагнер
чтобы заставить работать arp-scan мне пришлось сделать brew install arp-scanв OSX El Capitan.
Jamescampbell
17

Вы можете использовать arp-scan.

Установите с помощью этой команды:

sudo apt-get install arp-scan

Чтобы получить список всех IP-адресов и связанных MAC-адресов, используйте:

sudo arp-scan --interface=eth0 --localnet

Вывод будет выглядеть так:

Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 16777216 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.1.3 38:60:77:29:31:36   (Unknown)
192.168.1.8 4c:72:b9:7c:bb:7e   (Unknown)
192.168.1.110   00:15:17:5f:d2:80   Intel Corporate
192.168.1.111   00:ff:88:5f:fd:f0   (Unknown)
192.168.1.153   00:15:17:5f:d2:82   Intel Corporate
192.168.1.180   52:54:00:70:04:02   QEMU
192.168.1.199   52:54:00:fe:7f:78   QEMU
Питер Мортенсен
источник
1
Это не находит устройство, у которого еще нет ip ...
Эндрю Вагнер
9

графический интерфейс пользователя

Вы можете попробовать avahi-DiscoverУстановите avahi-Discover .

  1. Установите его с помощью этой команды (или нажав на ссылку выше):

    sudo apt-get install avahi-discover
    
  2. Запустите Avahi Zeroconf Browser или avahi-discoverиз терминала.
  3. Вы должны увидеть окно со списком устройств в вашей локальной сети.
    MAC-адрес будет строкой в ​​квадратных скобках.

Командная строка

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

avahi-browse -a -t -d local

Он установлен по умолчанию.

харакири
источник
1
Работает ли это, чтобы показать MAC-адрес компьютера, на котором не запущены какие-либо службы?
Элия ​​Каган
3
В моем случае это не работает для каждого устройства в сети. Это чертовски аккуратно, но без услуг avahi / upnp не покажет глупых клиентов.
Оли
5
  1. Сначала выполните сканирование сети, чтобы увидеть, какие узлы доступны / подключены к сети nmap -sn 1.2.3.4/24илиfping -g 1.2.3.4/24

  2. Затем запросите MAC-адрес, соответствующий IP-адресу, используя arping. Впереди псевдокод:

    for i in $(cat list-of-reachable-hosts)
    do 
        arping $i
    done
    
  3. Читерство: обратитесь к arp-кешу вашего локального коммутатора; это должно дать вам хороший обзор ...

far4d
источник
3

В тех случаях, когда поддерживается протокол NetBIOS , я предпочитаю использовать

nbtscan 192.168.1.1-192.168.1.255,

Silveri
источник
5
При этом обнаруживаются только клиенты, поддерживающие протокол NetBIOS (Windows и Linux + Samba).
Эрик Карвалью
2

Я был заинтригован этим постом. У меня была потребность в этом.

Я написал сценарий оболочки, который анализирует arpвывод с помощью awkоператоров и генерирует вывод HTML. Если вы выполните сценарий и перенаправите вывод в файл HTML, у вас останется файл HTML, в котором указаны IP-адрес, полный MAC-адрес и ссылка на страницу поиска IEEE OUI. Это помогает в определении клиента с помощью производителя NIC.

printf "<html>\n<title>LAN IPs and their MACs</title>\n<body>\n"
arp -a | awk '{print $2,$4}' | awk -F'[().: ]' '{print $2"."$3"."$4"."$5,$6,$7":"$8":"$9":"$10":"$11":"$12,"<a href=\"http://standards.ieee.org/cgi-bin/ouisearch?"$7$8$9"\">IEEE OUI Lookup "$7"-"$8"-"$9"</a><br>"}'
printf "\n</body>\n</html>\n"

Это помогает выполнить nmapсканирование в вашей локальной сети, поэтому у вас есть записи в таблице ARP. Надеюсь, форматирование переведено. Вы могли бы украсить это, чтобы иметь текст в формате таблицы.

user38537
источник
2

После некоторой работы и поиска я обнаружил эту команду:

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
источник
1

Устав от использования nmap и ARP, я создал небольшую программу, которая запрашивает все MAC-адреса для данного диапазона IP-адресов: https://github.com/drkblog/findmacs

drk.com.ar
источник
Это запрос последовательно или параллельно?
Питер Мортенсен
0

Вы можете использовать arp.

Это покажет вам MAC и IP-адреса ..


источник
Это работает только для тех устройств, которые были подключены (например, с помощью пинга).
Питер Мортенсен