Поиск информации о маршрутизаторе в моей сети

Мне нужен код, предпочтительно Java, для определения IP-адреса маршрутизатора в сети типа SOHO. В качестве бонуса я также хотел бы получить марку / модель маршрутизатора вместе с версией прошивки.

Я вижу, что HNAP справится с этой задачей, UPnP вроде как может это сделать, и что они оба зависят от SSDP. Проблема в том, что эти вещи кажутся ненадежными, поскольку их можно отключить, и/или я не уверен, что все маршрутизаторы будут поддерживать это.

Как я могу окончательно получить адрес? Ответ кроется в DHCP?

Если я получу адрес, есть ли хороший способ получить информацию о маршрутизаторе? HNAP кажется правильным выбором, но информации о HNAP очень мало, а кода нет.

У кого-нибудь есть код для этих вещей?


person Sander Smith    schedule 04.03.2014    source источник
comment
здесь есть довольно ужасные хаки. Не уверен, что есть кроссплатформенный способ сделать это, не зависящий от конфигурации маршрутизатора.   -  person Boris the Spider    schedule 04.03.2014
comment
Если вам нужно, чтобы это работало везде, UPnP, HNAP и SNMP не могут быть и речи: ничто не гарантирует, что маршрутизатор SOHO поддерживает любой из них. Это также означает, что вы не можете надежно определить марку и модель. Вы, вероятно, захотите выяснить, как получить IP-адрес шлюза по умолчанию в java.   -  person Jussi Kukkonen    schedule 05.03.2014
comment
Я понимаю, что у меня есть 2 отдельные проблемы здесь. Я удивлен, что получение шлюза по умолчанию — это такой хак в Java. Я также понимаю, что получение марки/модели не гарантируется. Тем не менее, все 4 маршрутизатора, которые я тестировал, хорошо реагируют на HNAP. Кто-нибудь знает, насколько широко это поддерживается?   -  person Sander Smith    schedule 05.03.2014


Ответы (1)


Если ваш маршрутизатор поддерживает SNMP, то это может быть подходом. системная MIB вернет основную информацию о марке/модели. и т. д. и, вероятно, существует корпоративная MIB, которая даст вам гораздо больше. Как вы находите маршрутизатор изначально? Возможно, запросив вашу локальную маршрутизацию через SNMP.

SNMP4J — широко используемая библиотека SNMP для Java.

person Brian Agnew    schedule 04.03.2014