Вопрос или проблема
Я пытаюсь определить IP-адрес сетевого коммутатора, к которому подключены несколько машин на Linux.
Контекст: Мне нужно знать, в какой физический порт они подключены, чтобы машины могли автоматически определять свое ‘пространственное размещение’ (так как определенный порт жестко подсоединен к конкретному месту).
Обнаружение порта выполняется с помощью SNMP, что работает довольно хорошо, но, очевидно, мне нужен IP-адрес коммутатора.
В данный момент я делаю следующее: запускаю nmap (так себе…) с только сканированием ping на всей подсети (или сканирование telnet, так как на коммутаторе этот порт открыт), а затем проверяю кэш ARP и получаю IP-адрес, проверяя его по MAC-адресу, так как я знаю, какую часть производителя искать.
Вопрос: Есть ли более простой способ (избегая nmap)? Я уже пробовал широковещательную рассылку ARP, но это, похоже, не дает мне записи кэша ARP для коммутатора. Вопросный коммутатор — это IGS-801M от Planet Technology, (шесть) устройств подключены напрямую, между ними нет ничего сетевого.
Коммутатор получает свой IP-адрес через DHCP или даже автоматически назначается (169.x.x.x
), статический IP-адрес не является вариантом.
Я также пробовал такие вещи, как traceroute, надеясь, что коммутатор появится как прыжок, но так как он просто (тихо) пересылает данные к шлюзу, он не появится.
Есть идеи?
Вероятно, ваш коммутатор не имеет IP-адреса (как маршрутизатор), и он переключает данные на канальном уровне.
Тем не менее, все еще может быть возможно обнаружить переходы (что, я полагаю, вы хотите), но не с помощью Nmap, который можно считать слишком высокоуровневым, что делает ваш коммутатор невидимым. Возможно, рекомендация этого человека по использованию netdisco может помочь.
Вот руководство ctrl+f для уровня 2
, не знаю, может быть, там есть определённый ответ. Не знаю, помешает ли это вашему поиску, если это так.
Вы можете попробовать проследить кабели, но, как мы все знаем, иногда это приводит к огромной фрустрации. Если на коммутаторе включен CDP или LLDP, вы можете использовать это для выяснения.
Я знаю, что Debian включает пакеты для CDP и LLDP, но не уверен насчет других дистрибутивов.
IGS-801M имеет функцию безопасности, поддерживающую L2 до L4. Так что я полагаю, что может быть, у него есть IP-адрес.
- Отправьте ping на широковещательный IP-адрес текущей сети с ПК. Все ПК настроены по умолчанию так, чтобы не отвечать на широковещательные
ping-запросы как мера безопасности. Так что единственными ответами, которые вы получите,
будут от коммутатора (и, возможно, от маршрутизатора, если такой имеется)
ИЛИ
- Если, как вы сказали, вы знаете OUI часть MAC, проверьте DHCP-сервер на предмет привязок IP.
PS: Вы можете ‘зарезервировать’ IP для MAC-адреса на DHCP-сервере. Сделайте это для MAC коммутатора с IP, который вы сможете запомнить, чтобы впоследствии не проверять каждый раз.
Если этот коммутатор работает на уровне 2, то у него нет IP-адреса. Протокол IP — это уровень 3, вам следует искать, есть ли у коммутатора порт управления (и адрес, чтобы его подключить).
Ответ или решение
Определение IP-адреса сетевого коммутатора из командной строки в Linux может быть непростой задачей, особенно если коммутатор настраивается через DHCP и не имеет статического IP-адреса. Ниже приведены основные подходы, которые могут помочь решить эту задачу.
-
Использование DHCP-сервера: Самый простой способ – проверить ARP-таблицу на вашем DHCP-сервере, если он есть. DHCP-сервер обычно имеет список всех устройств, которым он выдал IP-адреса, вместе с их MAC-адресами. Вы можете найти MAC-адрес коммутатора, который можно определить по OUI (первые три байта MAC-адреса), используя следующую команду:
arp -a
После этого можно сверить MAC-адреса и увидеть, какой IP-адрес был назначен коммутатору.
-
Использование команд ping и arp: Если вы не имеете доступа к DHCP-серверу, вы можете попробовать отправить широковещательный ping на вашу подсеть. Это может выявить сетевые устройства, включая коммутатор:
ping -b 255.255.255.255
После этого проверьте ARP-таблицу:
arp -a
Это может отобразить IP-адреса всех устройств, ответивших на широковещательный ping.
-
Использование SNMP для получения MAC-адресов: Если вы знаете, какой MAC-адрес у коммутатора, а также поддерживаете SNMP, вы можете использовать инструменты как
snmpwalk
, чтобы получить информацию о подключенных устройствах и их IP-адресах. Например:snmpwalk -v 2c -c public <адрес_коммутатора> 1.3.6.1.2.1.4.22.1.2
Этот запрос вернет список всех связанных IP-адресов и MAC-адресов.
-
Использование LLDP или CDP: Если ваш коммутатор поддерживает протоколы CDP (Cisco Discovery Protocol) или LLDP (Link Layer Discovery Protocol), вы можете использовать
lldpctl
илиcdpr
для получения информации о подключенных устройствах. Например:lldpctl
Это даст вам информацию о соседних устройствах и их MAC-адресах в вашей сети.
-
Ручная проверка через веб-интерфейс: Если ваш коммутатор имеет графический интерфейс, вы можете подключиться к нему через браузер, используя его IP-адрес, если вы знаете его. Некоторые коммутаторы позволяют вам видеть активные порты и подключенные устройства.
-
Регистрация IP-адреса на DHCP-сервере: Для предотвращения подобных проблем в будущем, вы можете создать резервирование IP-адреса для MAC-адреса вашего коммутатора на DHCP-сервере. Это обеспечит коммутатору постоянный IP-адрес, что упростит дальнейшие операции.
Если все перечисленные методы не привели к успеху, возможно, стоит рассмотреть возможность обращения к документации к коммутатору или связи с техподдержкой производителя для получения специфической информации по его настройкам.