Перечислите все MAC-адреса и связанные с ними IP-адреса в моей локальной сети (LAN)
Как я могу перечислить все MAC-адреса и связанные с ними IP-адреса машин, подключенных к моей локальной сети (LAN)?
11 ответов
Вы можете использовать утилиту 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
, Айпи адрес: 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
,
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
Это отличный инструмент (особенно для сканирования портов, который вы, возможно, захотите сделать дальше), но он все еще немного неуклюж (и немного медленен) для этой проблемы. И не называй меня Ширли.
Я использую 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
Ты можешь использовать 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
графический интерфейс пользователя
Вы можете попробовать avahi-Discover ,
Установите его с помощью этой команды (или нажав на ссылку выше):
sudo apt-get install avahi-discover
- Запустите Avahi Zeroconf Browser или
avahi-discover
из терминала. - Вы должны увидеть окно со списком устройств в вашей локальной сети.
MAC-адрес будет строкой в квадратных скобках.
Командная строка
Вы можете использовать эту команду в терминале:
avahi-browse -a -t -d local
Он установлен по умолчанию.
Сначала выполните сканирование сети, чтобы увидеть, какие хосты доступны или подключены к сети.
nmap -sn 1.2.3.4/24
или жеfping -g 1.2.3.4/24
Затем запросите MAC-адрес, соответствующий IP-адресу, используя
arping
, Впереди псевдокод:for i in $(cat list-of-reachable-hosts) do arping $i done
Читерство: обратитесь к arp-кешу вашего локального коммутатора; это должно дать вам хороший обзор...
В тех случаях, когда поддерживается протокол NetBIOS, я предпочитаю использовать
nbtscan 192.168.1.1-192.168.1.255
,
Я был заинтригован этим постом. У меня была потребность в этом.
Я написал сценарий оболочки, который анализирует 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. Надеюсь, форматирование переведено. Вы могли бы украсить это, чтобы иметь текст в формате таблицы.
Устав от использования nmap и ARP, я создал небольшую программу, которая запрашивает все MAC-адреса для данного диапазона IP-адресов: https://github.com/drkblog/findmacs
После некоторой работы и поиска я обнаружил эту команду:
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-адресов. заменить своим
На серверах, которые не включают
arp
или же
nmap
вы можете использовать
ip
сделать это через
neighbor
подкоманда.
ПРИМЕЧАНИЕ: Для ясности, это машины, с которыми этот аппарат активно подключается.
Применение
$ ip n help
Usage: ip neigh { add | del | change | replace }
{ ADDR [ lladdr LLADDR ] [ nud STATE ] | proxy ADDR } [ dev DEV ]
ip neigh { show | flush } [ proxy ] [ to PREFIX ] [ dev DEV ] [ nud STATE ]
[ vrf NAME ]
STATE := { permanent | noarp | stale | reachable | none |
incomplete | delay | probe | failed }
пример
ip n | grep -i reach
192.168.13.152 dev storage lladdr 02:19:ff:74:af:85 REACHABLE
192.168.13.151 dev storage lladdr 02:18:ff:74:af:57 REACHABLE
192.168.3.129 dev rhevm lladdr 00:17:ff:00:01:7c REACHABLE
192.168.3.151 dev rhevm lladdr 52:54:16:ff:27:1e REACHABLE
192.168.13.150 dev storage lladdr 02:15:ff:b9:fa:f4 REACHABLE
192.168.13.149 dev storage lladdr 02:14:ff:b9:f9:ba REACHABLE
192.168.13.154 dev storage lladdr 02:13:ff:74:af:85 REACHABLE
192.168.3.152 dev rhevm lladdr 00:1a:12:ff:03:64 REACHABLE