как узнать все устройства в локальной сети linux
ARP сканирование локальной сети Linux
Иногда возникает необходимость узнать какие устройства подключены к локальной сети Linux. Это может понадобиться если вы хотите подключиться к одному из компьютеров и не помните его адрес или хотите убедиться в безопасности вашей сети и найти все скрытые устройства.
Как выполнить ARP сканирование локальной сети?
Как вы знаете, у всех компьютеров в сети есть IP адреса. Никогда не задавались вопросом, как сеть определяет, какому компьютеру принадлежит тот или иной адрес? Ведь сети бывают разные, проводные, беспроводные, ppp и т д. И в каждой из этих сетей аппаратный адрес компьютера имеет свой формат, зависящий от конструктивных особенностей сети, а IP адреса одни и те же.
Тело сообщения состоит из четырех адресов, аппаратные и сетевые адреса отправителя и получателя.
Если в вашей сети есть устройства, которые не отвечают на любые запросы, такие как Ping, HTTP, HTTPS и т д, то их можно найти послав ARP запрос. Это могут быть различные фаерволы и маршрутизаторы, в том числе маршрутизаторы компании Cisco, такое поведение заложено их протоколом. В таком случае ARP сканирование сети Linux будет единственным способом найти такое устройство.
Утилита ARP Scan
ARP Scan находит все активные устройства, даже если у них включен брандмауэр. Компьютеры не могут скрыться от ARP также как они скрываются от ping. Но ARP сканирование не подходит для поиска компьютеров за пределами локальной сети, в таких ситуациях используйте ping сканирование.
Установка ARP Scan
Этот arp сканер сети доступен для следующих операционных систем:
Для установки в Ubuntu выполните:
sudo apt install arp-scan
Сканирование сети
ARP Scan позволяет находить активные компьютеры как в проводных сетях ethernet, так и в беспроводных Wifi сетях. Также есть возможность работать с Token Ring и FDDI. Не поддерживаются последовательные соединения PPP и SLIP, поскольку в них не используется ARP. Программу нужно запускать с правами суперпользователя.
Но сначала надо узнать сетевой интерфейс, который используется для подключения к сети. Для этого можно воспользоваться программой ip:
Здесь параметр —interface, задает интерфейс для сканирования, а —localnet, говорит, что нужно использовать все возможные IP адреса для текущей сети.
ARP сканирование можно использовать, даже если у вашего интерфейса нет IP адреса. Тогда в качестве исходящего адреса будет использован 0.0.0.0. Правда, на такие запросы могут ответить не все системы. Тогда ARP сканер сети не так эффективен.
ARP спуфинг и ARP прокси
Выводы
ARP Scan это простой, но очень мощный инструмент, с помощью которого можно выполнять сканирование ip адресов в локальной сети linux. Те, кто знаком с Cisco маршрутизаторами и коммутаторами, знают что найти такие устройства можно только с помощью ARP. Это полезный инструмент, возможно, когда-то вам он пригодится.
Обнаружение сетевых устройств
Сканирование сети с построением списка устройств и их свойств, таких как перечень сетевых интерфейсов, с последующим снятием данных в системах мониторинга, если не вникать в происходящее, может показаться особой, компьютерной, магией. Как же это работает — под катом.
Disclaimer
Автор не имеет профильного образования, связанного с администрированием сетей, поэтому наверняка имеются неточности и упомянуто не всё, что можно.
Обнаружение
Для обнаружения устройства, т.е. определения есть ли на выбранном ip-адресе что-либо, можно применить следующие методы:
Данные доступны по SNMP и telnet, и могут быть использованы при построении физической карты сети.
Сбор сведений
После того, как устройство обнаружено, можно переходить к сбору сведений о нем.
Используя ARP протокол, по ip можно получить MAC-адрес, а по нему вероятного производителя (часть оборудования допускает смену адреса, так что метод не очень надежен). Далее можно воспользоваться утилитой nmap, которая сканируя открытые порты, сверяется со своей базой отпечатков и делает предположение об используемой операционной системе, её версии и типе устройства.
Чтобы получить более подробные сведения по устройству потребуется один из следующих способов:
Для работы с SNMP можно использовать пакет утилит Net-SNMP. Чтобы получить, к примеру, описание устройства, надо указать версию протокола, пароль на чтение (community read, по умолчанию public) и адрес, в нотации SNMP называемый OID (object identificator) и состоящий из чисел и точек. Все адреса устройства можно представить в виде дерева, где адреса отсортированы в лексикографическом порядке. Протокол позволяет запросить текущее значение по адресу, а также адреса следующие за текущим.
Стандартный набор адресов весьма ограничен и содержит описание устройства, контакты, расположение и время работы (uptime). Остальные адреса зависят от производителя устройства и могут быть получены сканированием, например, утилитой snmpwalk. К счастью, Linux и Windows имеют типовые адреса для сетевых интерфейсов и загруженности процессоров/памяти, поэтому для них лишь знать (или уметь определить) используемую операционную систему.
Данные можно запрашивать, разумеется, только с Windows машин.
Также имеется консольная утилита wmic и ее Linux-порт
Как это работает на примере Zabbix
Как известно Zabbix может самостоятельно обнаруживать новые устройства в сети и автоматически опрашивать некоторые их параметры. Называется это — Low Level Discovery.
Обнаружение устройств задается правилами сетевого обнаружения, которые комбинируют перечисленные ранее методы обнаружения, определяют доступно ли устройство и какой шаблон к нему применить (обычно исследуется описание устройства). Шаблон содержит список свойств, которые можно получить с устройства, а также правила для обнаружения и создания новых, выполняемые по таймеру.
Отобразить список компьютеров в локальной сети в Linux
10 ответов
Это то, что я использую, nmap и адрес, используя блок-схему CIDR для сети, которую вы хотите отсканировать. Сначала вам нужно установить nmap, поскольку он не может быть предварительно установлен с вами дистрибутивом. На Ubuntu:
Затем введите свой сетевой адрес, используя ifconfig:
вывод ifconfig для интерфейса, который я хочу проверить:
nmap будет выглядеть примерно так:
Вот и все, если вам нужна дополнительная помощь с nmap, см. официальную документацию nmap или выполните:
«Все те» (в двоичном) широковещательном адресе. Обратите внимание, что большинство стеков IP переведет это на широковещательные адреса подсети для всех подключенных подсетей:
Широковещательный адрес подсети для текущей подсети. Предположим, вы используете 192.168.1.0/24:
Многоадресный адрес «все хосты». Мне это очень нравится, потому что более вероятно, что хосты будут настроены для других IP-подсетей, которые подключаются к той же локальной сети Ethernet, что и вы:
Обратите внимание, что этот метод и другие методы, о которых я уже упоминал в других ответах до сих пор, ищут только хосты с IP-доступом в текущей сети. Это, вероятно, все, о чем вам нужно заботиться, но злоумышленник может заглянуть или сделать что-то плохое в сети, не будучи видимым через IP.
Основываясь на этом, вы можете создать скрипт Python:
Способ № 1.
Путь № 2. Я знаю, что это работает, но я не могу сказать, правильно ли это сделать.
Я был бы рад узнать, есть ли более эффективные способы. До тех пор я придерживаюсь этого.
Вы можете попробовать выполнить ping всю данную подсеть с помощью небольшого сценария оболочки linux, например
Чтобы проверить статус диапазона IP-адресов, это приятно и просто:
Я сделал это в Mac OS X (основанный на BSD). Я не уверен, есть ли у версии Linux какие-либо отличия.
Для более компактного списка подключенных устройств:
Куирк
Помните, что если два устройства имеют одинаковое имя, nmap покажет только тот, который был подключен к маршрутизатору последнему
1. Альтернативное решение, если широковещательные сообщения и nmap недоступны:
2a. или просто спросите сервер доменных имен :
2b. без awk
подключает все pingable сетевые устройства в подсети 192.168.2.0/24 параллельно (чтобы сократить время выполнения). Впоследствии arp должно отображаться каждое устройство, на которое он ответил.
не проверяет наличие активных или текущих подключений, но перечисляет все подключения, в которых служба локального домена сохраняет запись, даже очень старые.
Я вызываю эту команду pingall и делает ее доступной по псевдониму в
[в закладки] Шпаргалка системного администратора по сетевым инструментам Linux
В повседневные задачи системных администраторов входит работа с сетями и с подключённым к ним оборудованием. Нередко роль рабочего места администратора играет компьютер, на котором установлен какой-нибудь дистрибутив Linux. Утилиты и команды Linux, о которых пойдёт речь в материале, перевод которого мы публикуем сегодня, включают в себя список инструментов различной сложности — от простых, до продвинутых, которые предназначены для решения широкого спектра задач по управлению сетями и по диагностике сетевых неполадок.
▍Примеры
Ping, кроме того, можно использовать для выяснения IP-адресов сайтов на основе их имён. Вот как это выглядит.
Использование ping для выяснения IP-адреса сайта по его имени
Traceroute
▍Пример
Telnet
Утилита telnet позволяет связаться с удалённым компьютером по протоколу Telnet и взаимодействовать с ним, используя соответствующие команды.
▍Пример
Для организации сеанса Telnet-связи с другим компьютером используется следующая команда:
Netstat
Эта команда позволяет собирать сведения о сети и используется в ходе поиска и исправления сетевых неполадок, применяется для проверки данных о работе интерфейсов и портов, для исследования таблиц маршрутизации, для изучения информации о работе протоколов. Эта команда непременно должна присутствовать в арсенале системного администратора.
▍Примеры
Для того чтобы получить список всех портов, находящихся в режиме прослушивания, воспользуйтесь такой командой:
Для просмотра таблиц маршрутизации воспользуйтесь такой командой:
Вот как выглядит результат выполнения этой команды.
Сведения о таблице маршрутизации
Вот вариант этой команды, выводящий статистику по протоколам:
Статистика по протоколам
Следующий вариант вызова netstat позволяет узнать сведения об отправленных и полученных пакетах (transmission/receive, TX/RX) по каждому интерфейсу:
Данные об отправленных и полученных пакетах
Nmcli
Утилита nmcli отлично подходит для управления сетевыми соединениями, для выполнения настроек и для решения других подобных задач. С её помощью можно управлять программой NetworkManager и модифицировать сетевые параметры различных устройств.
▍Примеры
Вот как с помощью nmcli вывести список сетевых интерфейсов:
Так можно вывести информацию по конкретному интерфейсу:
Следующий вариант вызова команды позволяет проверить подключение устройства к сети:
Примеры использования nmcli
Эта команда позволяет отключить заданный интерфейс:
А эта позволяет включить интерфейс:
Вот пример команды, которая добавляет VLAN-интерфейс с заданным VLAN-номером, IP-адресом и шлюзом к указанному интерфейсу:
Маршрутизация
Существует множество команд, которые можно использовать для проверки правил маршрутизации и их настройки. Рассмотрим самые полезные из них.
▍Примеры
Следующая команда показывает все текущие маршруты, настроенные для соответствующих интерфейсов:
Маршруты, настроенные для интерфейсов
Эта команда позволяет добавить в таблицу маршрутизации шлюз, используемый по умолчанию:
Следующая команда добавляет в таблицу маршрутизации новый сетевой маршрут. Существует и множество других её параметров, позволяющих выполнять такие операции, как добавление маршрута и шлюза, используемых по умолчанию, и так далее.
С помощью такой команды можно удалить запись о заданном маршруте из таблицы маршрутизации:
Использование команды route
Вот команда, которая применяется для вывода текущей таблицы соседей. Кроме того, её можно использовать для добавления, изменения или удаления сведений о соседях:
Взглянем на примеры её использования.
Данные, полученные с помощью команды ip neighbor
Вот сведения о команде ip neigh
Сведения о команде ip neigh
Вот пример её вызова.
Вызов команды arp
Tcpdump и Wireshark
▍Примеры
Такая команда показывает, в режиме реального времени, пакеты с заданного интерфейса:
Использование tcpdump
Следующий вариант команды используется для захвата пакетов, приходящих с заданного IP системы-источника:
Так можно захватить пакеты, идущие на заданный адрес системы-приёмника:
Вот пример использования tcpdump для захвата пакетов для заданного номера порта, например, это может быть порт 53, 80, 8080, и так далее:
Здесь показано, как с помощью tcpdump захватывать пакеты заданного протокола, вроде TCP, UDP или других:
Iptables
Утилита iptables похожа на файрвол, она поддерживает фильтрацию пакетов, что позволяет управлять трафиком, пропуская или блокируя его. Диапазон возможностей этой утилиты огромен. Рассмотрим несколько наиболее распространённых вариантов её использования.
▍Примеры
Следующая команда позволяет вывести все существующие правила iptables :
Эта команда удаляет все существующие правила:
Следующие команды разрешают прохождение трафика с заданного номера порта к заданному интерфейсу:
Следующие команды разрешают loopback-доступ к системе:
Nslookup
Инструмент nslookup используется для получения сведений о назначении IP-адресов сетевым ресурсам. Его можно использовать и для получения сведений с DNS-серверов, например таких, как все DNS-записи для некоего веб-сайта (ниже мы рассмотрим соответствующий пример). На nslookup похожа утилита dig (Domain Information Groper).
▍Примеры
Следующая команда выводит IP-адреса вашего DNS-сервера в поле Server, и, ниже, выдаёт IP-адрес искомого сайта:
Такая команда показывает все доступные записи для заданного веб-сайта или домена:
Поиск неполадок
Вот набор команд и список важных файлов, используемых для идентификации сетевых неполадок.
▍Примеры
Итоги
В этой небольшой шпаргалке мы рассказали о сетевых инструментах Linux, предназначенных для системных администраторов. Надеемся, вам эти инструменты пригодятся.
Уважаемые читатели! Чем вы пользуетесь для администрирования сетей и для выяснения причин сетевых неполадок?
Как узнать все устройства в локальной сети linux
Переходим на Ubuntu
Как найти все устройства, подключенные к локальной сети
Беспроводные сети всегда были желанной целью для начинающих «хакеров». Кроме того, беспроводные сети обычно более уязвимы к атакам, чем обычные проводные.
Я не предлагаю никого взламывать, а прошу задуматься, не подключился ли к вашей сети такой «новичок»? И дело даже не в том, что сосед может пользоваться оплаченным вами доступом в интернет, а в том, что вы можете понести ответственность за его действия.
Для того, чтобы избежать такой ситуации, нужно знать, как найти все устройства, подключенные к вашей беспроводной сети. Кроме того, это будет полезно не только с точки зрения безопасности. Например, знание ip-адреса других машин в сети позволит передать файлы на эту машину, даже не вставая со стула.
Ближе к делу, ниже приводится краткая инструкция, как найти все устройства, подключенные к сети.
Поиск устройств в сети с помощью командной строки Linux
Установите nmap
nmap — одна из самых популярных утилит для сканирования сети в Linux. Для того, чтобы установить nmap в Ubuntu (или других дистрибутивах Linux на базе Debian), выполните следующую команду:
Эта утилита должна быть доступна в официальных репозиториях всех остальных дистрибутивов.
Узнайте диапазон адресов сети
Нужная нам информация находится во второй строке. Как видно, мой локальный IP-адрес 192.168.1.69, а маска подсети 255.255.255.0, что означает, что в локальной сети адреса будут отличаться от 192.168.1.0 до 192.168.1.255.
Просканируйте устройства, подключенные к сети
Для получения более точной информации лучше выполнять сканирование от имени администартора. Используйте команду nmap следующим образом:
Как видно, в сети работает 5 устройств, одно — роутер, два компьютера и два телефона. Регулярно проверяйте вашу беспроводную сеть, это может обезопасить вас от многих проблем!