Немного интересная загадка, у меня есть сеть из 15-20 встроенных устройств, которые фактически жестко запрограммированы с тем же статическим IP-адресом, но все они имеют разные MAC-идентификаторы. Мне нужно обращаться к ним индивидуально, чтобы настраивать их удаленно, а подключение / отключение их не является устойчивым решением.

Хотя у меня есть root-доступ к устройствам, я не могу заранее установить их IP-адреса на уникальные адреса, однако могу перенастроить его для сеанса и сбросить его при включении питания, но для этого необходимо иметь возможность обращаться к ним по TCP/IP для начала ,

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

Я разбираюсь в ядре, низком уровне и разработке драйверов, но с Ethernet выше уровня 2 в OSI я немного растерялся. Какое влияние будет иметь этот вид вмешательства на протоколы более высокого уровня? Могу ли я просто заменить демон ARP на linux для достижения этой функциональности?

1 ответ1

0

Предполагая, что устройства находятся в той же подсети, что и устройство, с которого вы хотите это сделать, должна быть возможность "управлять" IP-пакетами, но при этом записывать свои собственные пакеты Ethernet с правильными MAC-адресами и IP-адресами. Ответы будут предназначены для вашей машины, но вам, вероятно, придется подобрать их и обработать их самостоятельно, поскольку система ОС, возможно, не сможет правильно их отсортировать.

Для этого вам понадобится:

  • приблизительное понимание того, из чего состоят пакеты Ethernet, IP и TCP (Google должен помочь с этим; это дает обзор общей структуры пакетов)
  • способ собрать их и получить их на проводе (это описывает основы)
  • способ получения ответных пакетов (это должно помочь в этом)
  • и способ собрать полученные пакеты во что-то полезное (так как вы получаете необработанные пакеты Ethernet, поток TCP не будет собран или заказан для вас, вам нужно будет самостоятельно буферизовать и собрать данные, а также иметь дело с другие части протокола TCP: после того, как вышеперечисленные элементы работают, вы должны знать достаточно о потоках TCP, чтобы сделать это)

Wireshark - это инструмент для отслеживания сетей, имеющий много деталей, которые могут помочь вам понять, что происходит в сети, что находится в пакетах, чтобы вы могли сопоставить ее с тем, что вы изучили, и помочь вам отладить ваше программное обеспечение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .