Получение списка IP-адресов в локальной подсети и какой коммутатор они включены

3099
justintime

Я хотел бы получить текстовый файл со списком, какие IP-адреса находятся в моей локальной подсети и к какому коммутатору Ethernet они подключаются. В идеале название машины было бы неплохо, но я могу решить это вручную.

Кто-то предложил NMAP. Я попробовал это, и я поражен количеством вариантов. Есть ли вариант, который дал бы мне такую ​​информацию.

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

1
Это зависит от типа коммутатора Ethernet. Если переключатель тупой, то я думаю, что вам не повезло. dbasnett 13 лет назад 0

3 ответа на вопрос

3
b0fh

использовать например

nmap -sP -PR 192.168.1.0/24 

(Используйте соответствующий сетевой адрес и маску)

Для карты хостов. -sPпропускает сканирование портов, в то время как -PRзапрашивает сканирование ARP, которое работает только в локальных сетях, но не может быть заблокировано брандмауэрами (на самом деле, может, но безумно нецелесообразно).

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

nmap -sP -PR 192.168.1.0/24 2>/dev/null |grep "appears to be up" |awk '' 

Чтобы получить физическое местоположение, вам нужен управляемый коммутатор. Хорошие управляемые коммутаторы ответят на SNMP и позволят вам запросить местоположение определенного MAC-адреса.

Сначала вам нужно сопоставить IP-адреса с MAC-адресами, вы можете попробовать обработать вывод nmap, но проще обратиться к системной таблице ARP (читайте /proc/arpв * nix или попробуйте arpкоманду).

Если у вас есть MAC-адрес, стандартным способом получения порта через SNMP обычно является Q-BRIDGE-MIB, если ваш коммутатор обрабатывает VLAN, или (IIR) P-BRIDGE-MIB. Вы можете запросить его, например, с помощью инструментов net-snmp:

snmpget -v2c -c public 192.168.1.1 Q-BRIDGE-MIB::dot1qTpFdbPort.y.x.x.x.x.x.x 

Где publicимя сообщества SNMP, 192.168.1.1адрес коммутатора, yидентификатор VLAN и xдесятичные байты MAC-адреса. Возможно, вам потребуется включить SNMP на коммутаторе, разрешить доступ с вашей станции, использовать другое имя сообщества и / или версию протокола.

Для коммутаторов, не поддерживающих VLAN, в i-rc P-BRIDGE-MIB есть эквивалентные записи.

Чтобы увидеть, как работает кодирование адресов, вы можете использовать snmpwalkдля получения полной таблицы переадресации коммутатора, например:

smpwalk -v2c -c public 192.168.1.1 Q-BRIDGE-MIB::dot1qTpFdbPort 

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

1
aric

List all the hosts using your gateway (probably a switch (or router)


arp-scan -I eth0 -l

0
TusharG

Ну, не знаю, какую ОС вы используете, но в некоторой степени вы можете найти информацию с вашего компьютера. Вы должны запустить инструмент wireshark (ethereal). Это будет вам по всем пакетам, путешествующим между сетями. Вы не получите список всех машин, но сможете увидеть множество сетей и машин. После этого вы можете проверить свою таблицу arp, а также найти IP-адрес компьютера, MAC-адрес. Ваша маска подсети должна указывать, сколько компьютеров разрешено в текущей сети.