У нас есть сетевой продукт на базе Linux (назовем его «Z»), и мы, как правило, продаем их партиями, чтобы все они работали в одной подсети, выполняли одни и те же задачи и передавали данные на один сервер (также в подсети), который их всех координирует.
Устройства работают под управлением собственной версии Linux на базе ядра 2.6.
Меня попросили рассмотреть возможность добавления следующей функции:
«Любое устройство Z должно иметь возможность находить другие устройства Z в локальной подсети и перечислять их адреса IPv4. Список долженнетвключить другие несвязанные компьютеры, присутствующие в локальной подсети».
Пример:
- Пользователь может
ssh
войти в любой произвольный блок Z и выполнить команду (может быть новый скрипт bash) под названием «listLocalSiblings». - Устройство Z исследует локальную сетевую среду и выведет простой текстовый список IP-адресов ТОЛЬКО других устройств Z...
192.168.1.10
192.168.1.11
192.168.1.12
192.168.1.30
192.168.1.37
192.168.1.71
В подсети может быть несколько не связанных между собой устройств, работающих под управлением различных операционных систем. Я бы хотел, чтобы это было максимально пассивно (например, избегать сканирования портов или наличия слушателя, ожидающего и отвечающего на специальные "пинги").
Есть лиобщийспособ в Linux категоризировать сетевые устройства?
У меня есть роскошь добавлять новое программное обеспечение в продукт, но если есть способ сделать это на основе какой-то внутренней сигнатуры, которая может быть у каждой машины, это было бы предпочтительнее. Мы никогда не пытались заставить эти машины «видеть» друг друга без фактического жесткого кодирования путей для их нахождения друг друга.
Редактировать: по разным причинам мы не можем получить эту информацию с сервера. На данный момент предположим, что сервер вышел из строя или кабель Ethernet был выдернут из задней части.
Затем список отображается пользователю, и он может распоряжаться им по своему усмотрению.
Устройства Z имеют примерно одинаковое аппаратное обеспечение, хотя более старые модели, как и ожидалось, имеют более старые версии системы Linux, а также более старые материнские платы и сетевые карты.
В идеале было бы неплохо просто разместить bash-скрипт на каждом устройстве и запустить его, но я недостаточно разбираюсь в сетевых инструментах, чтобы сказать, реалистична ли эта перспектива.
решение1
сканировать с помощью nmap, или отправлять широковещательные пакеты с помощью nc, или использовать NetBIOS, или злоупотреблять таблицей маршрутизации или пакетами ARP.
Существует множество типов сетевого трафика, которые можно использовать без активации системы обнаружения вторжений.