Как использовать команду arping в Linux
Опубликовано: 2022-07-28 Команда 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 установить арпинг
На Manjaro вам нужно ввести:
sudo pacman -Sy arping
Самый простой способ использования arping
— с IP-адресом. Это должен быть адрес устройства с прямой адресацией, подключенного к локальной сети. Поскольку arping
работает на втором уровне, маршрутизация невозможна. Вам нужно будет использовать sudo
с arping
.
судо арпинг 192.168.1.17
Нажмите Ctrl+C, чтобы остановить. Возвращаемая информация представляет собой MAC-адрес отвечающего устройства, порядковый номер запроса arping
и время приема-передачи для выполнения запроса arping
.
Сравните вывод с выводом команды ping
ниже. Команда ping
возвращает дополнительную информацию о времени прохождения сетевого пакета туда и обратно. Команда arping
предоставляет меньше статистических данных о времени, но включает MAC-адрес устройства.
пинг 192.168.1.17
Вы также можете использовать сетевое имя устройства с arping
.
sudo arping fedora-36.local
Вы можете использовать опцию -c
(счетчик), чтобы остановить arping
после заданного количества запросов. Эта команда говорит arping
сделать две попытки, а затем остановиться.
судо арпинг -с 2 192.168.1.18
Если на вашем компьютере несколько сетевых интерфейсов, вы можете использовать параметр -I
(interface), чтобы указать arping
, какой интерфейс использовать.
Вы можете использовать команду ip link
, чтобы получить список сетевых интерфейсов.
IP-ссылка
Этот компьютер имеет три интерфейса. Виртуальный интерфейс lo
используется как петля для внутренних соединений между программами на одном компьютере. Нам это здесь ни к чему. Мы можем использовать либо Ethernet-соединение enp3s0
либо беспроводной интерфейс wlan0
.
Эта команда указывает arping
использовать выбранный нами интерфейс, а не делать собственный выбор.
sudo arping -c 2 -I enp3s0 manjaro-21.local
Использование арпинга в скриптах
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
Мы запустим его и просканируем диапазон IP-адресов от 15 до 20. К некоторым из этих адресов не подключены устройства, поэтому мы должны увидеть некоторые сбои. Не забудьте использовать sudo
. Мы также попробуем ping
устройство по адресу 192.168.1.15.
sudo ./scan-range.sh 15 20
пинг 192.168.1.15
Мы получаем смесь успехов и неудач, как и в любой сети. Но обратите внимание, хотя устройство с адресом 192.168.1.15 отвечает на запрос ARP второго уровня, оно не отвечает на запрос ping
третьего уровня.
Если бы вы пропинговали устройство и заметили сбой, вы, вероятно, были бы склонны проверить, подключено ли оно к сети, и можете ли вы ping
устройство 192.168.1.15.
Но с помощью arping
вы можете убедиться, что он подключен, подключен к сети и доступен по сети. Это поможет вам при устранении неполадок начать изучение проблем с маршрутизацией и таблицами ARP.
Более глубокое понимание
В сетевом луке много слоев. Если ping
никуда не приводит, опустите слой и посмотрите, что может сказать вам arping
.
СВЯЗАННЫЕ С: Как управлять сетями Linux Wi-Fi с помощью Nmtui