Я нахожусь в сети, где большинство устройств используют DHCP. Если у меня есть несколько переключателей между устройством A и DHCP-сервером, как я могу узнать, что это такое?
traceroute просто дает мне 1 переход, независимо от количества переключений между устройством A и DHCP-сервером.
Если это коммутаторы Cisco (высокая вероятность) и у них включен CDP (достаточно высокая вероятность), вы можете прослушивать сеть на предмет трафика CDP.
CDP - это протокол канального уровня, который может помочь вам определить топологии уровня 2. (именно то, что вы ищете)
Подробнее о протоколе: http://en.wikipedia.org/wiki/Cisco_Discovery_Protocol
CDP является собственностью Cisco, но есть аналогичные вещи от других поставщиков и «официальный стандарт под названием LLDP».
http://en.wikipedia.org/wiki/Link_Layer_Discovery_Protocol
На большинстве хостов Linux вы можете установить пакет cdpr, который будет прослушивать и сообщать о декодированном кадре CDP, если он его получит.
Вышеупомянутый метод позволит вам узнать, к какому коммутатору подключены ваши конечные устройства, но вам не будет хватать промежуточных переходов между коммутаторами в середине.
Если вы не видите никаких кадров CDP или LLDP, вы можете сделать небольшой вывод о том, к какой топологии коммутации вы подключены, посмотрев на адресацию связующего дерева.
Удачи.
Единственный способ сделать это - получить доступ к самим переключателям. Если у вас есть доступ только к конечным хостам, вы не сможете получить информацию о полной топологии.
Если вы являетесь сетевым администратором, я бы рекомендовал задокументировать вашу физическую топологию вручную как можно скорее. Могут быть инструменты с открытым исходным кодом и / или от поставщиков, которые помогут вам начать работу, но топология вашей сети должна быть тем, что вы отслеживаете и изменяете запланированным образом, а не тем, что вы периодически обнаруживаете.
Если вы являетесь пользователем сети, который хотел бы узнать топологию, лучше всего поговорить со своим администратором о том, чтобы сделать эту информацию доступной через какой-то портал самообслуживания или API.
Без доступа к коммутатору для отслеживания MAC-адресов (т.е. вы знаете, что устройство A подключено к коммутатору 1 порт 10, вы затем должны искать Mac устройства B и отслеживать его до того, к какому порту он подключен), нет возможности найти сколько переключений между двумя устройствами.
Traceroute даст вам переходы только на маршрутизаторах. Коммутаторы не выполняют никакой маршрутизации, поэтому они не видны для traceroute. По какой причине вы хотите «видеть» переключение между ними?
Я знаю, что мой ответ не точен для текущей темы, но я надеюсь, что кто-то найдет в Google что-то подобное, и я смогу помочь.
Итак, если у вас есть ящик, у вас есть доступ и есть одноранговый узел. Вы уже знаете IP-адрес этого пира (мы не будем здесь обсуждать, как его определить).
Вот и все. Ящик, к которому у вас есть доступ, и IP-адрес партнера. Вы должны знать, есть ли переключатель между вами и сверстником.
Создайте пакет запроса arp:
20:17:09.761940 ff:ff:ff:ff:ff:ff > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 10.200.200.101 tell 10.200.200.221, length 28
Идея имеет ff: ff: ff: ff: ff: ff в качестве исходного Mac. Если на вашем пути НЕТ переключателя, вы получите ответ:
20:17:09.762234 08:00:27:7b:b0:d7 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Reply 10.200.200.101 is-at 08:00:27:7b:b0:d7, length 28
Коммутатор не разрешает ARP-ответ с широковещательным MAC-адресом. Так что, если вы НЕ получили ответа - у вас ДЕЙСТВИТЕЛЬНО есть переключатель.