Как использовать команду arping в Linux

Опубликовано: 2022-07-28
Ноутбук Linux с приглашением bash
Фатмавати Ачмад Заэнури/Shutterstock.com

Команда Linux arping похожа на ping , но только для локальных сетей. Его преимущество в том, что он работает на более низком сетевом уровне, иногда получая ответы, когда ping не может. Вот как это использовать.

ARP-протокол

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

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

Что такое пакет данных?
СВЯЗАННЫЕ Что такое пакет данных?

Протокол разрешения адресов является посредником, который сопоставляет IP-адреса с MAC-адресами. Устройство, отвечающее за маршалинг и направление сетевых пакетов в вашей сети — обычно маршрутизатор — создает и поддерживает таблицу ARP, которая связывает IP-адреса с MAC-адресами.

Если маршрутизатору необходимо направить данные на неизвестное ему устройство, он отправляет запрос ARP для получения MAC-адреса нового устройства.

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

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

  • Уровень 7 — это самый верхний уровень, прикладной уровень. Он предоставляет информацию пользователю компьютера и получает информацию от него.
  • Уровень 6 — это уровень представления . Это гарантирует, что данные находятся в правильном формате или состоянии при перемещении в сетевой формат и из него. На этом уровне происходит шифрование и дешифрование.
  • Уровень 5 — это сеансовый уровень. Сеанс — это сетевое соединение между двумя или более устройствами. Этот уровень занимается такими вопросами, как инициация соединения, квитирование, тайм-ауты и разрыв соединений, которые больше не требуются.
  • Уровень 4 — это транспортный уровень. Это слой, который скоординированно перемещает данные по сети. Этот уровень связан с такими вещами, как скорость передачи и объемы данных. Протокол управления передачей — TCP в TCP/IP — работает на этом уровне.
  • Уровень 3 — это сетевой уровень. Здесь происходит маршрутизация и пересылка пакетов. Это уровень, на котором работает интернет-протокол — IP в TCP/IP.
  • Уровень 2 — это уровень канала передачи данных . Он используется для отправки пакетов между устройствами с прямой адресацией с использованием широковещательной рассылки на каждое устройство или одноадресной рассылки на определенные MAC-адреса.
  • Уровень 1 — это физический уровень. Это касается физической инфраструктуры, включая кабели, маршрутизаторы и сетевые коммутаторы. Радиоволны, используемые в Wi-Fi, также попадают в эту категорию.

Когда маршрутизатор получает пакет для IP-адреса, которого нет в его таблице, он отправляет широковещательный пакет во всю сеть. Он фактически спрашивает: «У кого есть этот IP-адрес?» Это сообщение второго уровня, поэтому оно не зависит от IP-маршрутизации.

Устройство с совпадающим адресом отвечает, отправляя обратно свой MAC-адрес. IP-адрес и MAC-адрес этого устройства можно добавить в таблицу сопоставления. Обычный IP-трафик теперь может направляться на устройство, поскольку связь между его IP-адресом и его MAC-адресом установлена ​​и записана.

СВЯЗАННЫЕ С: Основание Интернета: TCP/IP исполняется 40 лет

Команда арпинга

Все умные операции с ARP выполняются автоматически в фоновом режиме, создавая и поддерживая таблицу ARP. Команда arping переносит некоторые функции запроса ARP в окно терминала. Он работает на втором уровне OSI и может запросить ответ от устройства, когда ping этого не делает.

В Fedora 36 arping уже был установлен, но нам нужно было установить его на Manjaro 21 и Ubuntu 22.04.

В Ubuntu команда:

 sudo apt установить арпинг 

Установка арпинга на Ubuntu

На Manjaro вам нужно ввести:

 sudo pacman -Sy arping 

Установка арпинга на Manjaro

Самый простой способ использования arping — с IP-адресом. Это должен быть адрес устройства с прямой адресацией, подключенного к локальной сети. Поскольку arping работает на втором уровне, маршрутизация невозможна. Вам нужно будет использовать sudo с arping .

 судо арпинг 192.168.1.17 

Использование arping с IP-адресом

Нажмите Ctrl+C, чтобы остановить. Возвращаемая информация представляет собой MAC-адрес отвечающего устройства, порядковый номер запроса arping и время приема-передачи для выполнения запроса arping .

Сравните вывод с выводом команды ping ниже. Команда ping возвращает дополнительную информацию о времени прохождения сетевого пакета туда и обратно. Команда arping предоставляет меньше статистических данных о времени, но включает MAC-адрес устройства.

 пинг 192.168.1.17 

Использование ping с IP-адресом

Вы также можете использовать сетевое имя устройства с arping .

 sudo arping fedora-36.local 

Использование arping с IP-адресом

Вы можете использовать опцию -c (счетчик), чтобы остановить arping после заданного количества запросов. Эта команда говорит arping сделать две попытки, а затем остановиться.

 судо арпинг -с 2 192.168.1.18 

Использование параметра -c для остановки arping после выполнения двух запросов

Если на вашем компьютере несколько сетевых интерфейсов, вы можете использовать параметр -I (interface), чтобы указать arping , какой интерфейс использовать.

Вы можете использовать команду ip link , чтобы получить список сетевых интерфейсов.

 IP-ссылка 

Использование ip-ссылки для вывода списка сетевых интерфейсов

Этот компьютер имеет три интерфейса. Виртуальный интерфейс lo используется как петля для внутренних соединений между программами на одном компьютере. Нам это здесь ни к чему. Мы можем использовать либо Ethernet-соединение enp3s0 либо беспроводной интерфейс wlan0 .

Эта команда указывает arping использовать выбранный нами интерфейс, а не делать собственный выбор.

 sudo arping -c 2 -I enp3s0 manjaro-21.local 

Использование параметра -I, чтобы указать arping использовать определенный сетевой интерфейс

Использование арпинга в скриптах

arping в цикл скрипта, мы можем заставить его работать с диапазоном IP-адресов. Скопируйте текст из этого сценария и сохраните его в файле с именем «scan-range.sh».

Вам нужно будет отредактировать сценарий и заменить все вхождения 192.168.1 на IP-адрес вашей сети.

 #!/bin/bash for (( device = $1 ; device <= $2 ; device ++ )) do arping -c 1 192.168.1. $device | grep -E "1 response|1 packets received" > /dev/null if [ $? == 0 ] ; then echo "192.168.1. $device responded." else echo "192.168.1. $device didn't respond." fi  done

Сценарий принимает два параметра командной строки. Они используются в качестве последнего октета IP-адресов диапазона, для которого вы хотите использовать arping . Таким образом, если вы передадите в сценарий адреса 20 и 30, цикл начнется с адреса 192.168.1. 20 и завершится после использования IP-адреса 192.168.1. 30 .

Доступ к параметрам внутри скрипта осуществляется как $1 и $2 . Они используются в цикле for в стиле C. При каждом вращении цикла for $device устанавливается на следующий IP-адрес в диапазоне.

Сценарий использует тот же формат arping -c , который мы уже видели, но на этот раз мы просим отправить только один запрос ARP на каждое устройство в диапазоне.

Вывод команды arping передается через grep .

Синтаксис grep можно упростить в вашем скрипте. grep ищет одну из двух строк: «1 ответ» или «1 полученный пакет». Это связано с тем, что на тестовых компьютерах были разные версии arping и они использовали разную терминологию. Если grep найдет любую из этих фраз, ее выходное значение будет равно нулю.

Когда вы знаете, какие фразы использует ваша версия arping , вы можете упростить синтаксис grep , удалив другую фразу.

Оператор if проверяет $? — переменная, содержащая код выхода последнего завершившегося процесса, чтобы проверить, равен ли он нулю. Если это так, он использует echo для вывода сообщения об успехе в окно терминала. Если тест не пройден, значит, grep не нашел ни одной из строк, что означает, что запрос ARP завершился неудачно.

Сделайте ваш скрипт исполняемым с помощью команды chmod и опции +x .

 chmod +x scan-range.sh 

Использование опции chmod +x, чтобы сделать скрипт исполняемым

Мы запустим его и просканируем диапазон IP-адресов от 15 до 20. К некоторым из этих адресов не подключены устройства, поэтому мы должны увидеть некоторые сбои. Не забудьте использовать sudo . Мы также попробуем ping устройство по адресу 192.168.1.15.

 sudo ./scan-range.sh 15 20
 пинг 192.168.1.15 

Запускаем скрипт и запускаем ping

Мы получаем смесь успехов и неудач, как и в любой сети. Но обратите внимание, хотя устройство с адресом 192.168.1.15 отвечает на запрос ARP второго уровня, оно не отвечает на запрос ping третьего уровня.

Если бы вы пропинговали устройство и заметили сбой, вы, вероятно, были бы склонны проверить, подключено ли оно к сети, и можете ли вы ping устройство 192.168.1.15.

Но с помощью arping вы можете убедиться, что он подключен, подключен к сети и доступен по сети. Это поможет вам при устранении неполадок начать изучение проблем с маршрутизацией и таблицами ARP.

Более глубокое понимание

В сетевом луке много слоев. Если ping никуда не приводит, опустите слой и посмотрите, что может сказать вам arping .

СВЯЗАННЫЕ С: Как управлять сетями Linux Wi-Fi с помощью Nmtui