Копилка знаний

Использование команды arping в Linux для проверки связи с локальными системами.

Использование команды arping в Linux для проверки связи с локальными системами.

Команда arping может проверять доступность локальных систем, а также и с помощью скриптов может проверять доступность определенного диапазона IP-адресов.

Команда arping – одна из малоизвестных команд, которая работает так же, как команда ping.

Название команды расшифровывается как «arp ping», и это инструмент, который позволяет выполнять ограниченные запросы ping, поскольку он собирает информацию только о локальных системах. Причина состоит в том, что он использует сетевой протокол уровня 2 и, следовательно, не поддерживает маршрутизацию. Команда arping используется для обнаружения и проверки хостов в вашей локальной сети.

Если в вашей системе не установлен arping, то ее можно установить с помощью одной из следующих команд:

$ sudo apt install arping -y

$ sudo yum install arping –y

Вы можете использовать эту команду так же, как ping, и, как и в случае с ping, вы можете установить количество пакетов, которые будут отправлены с помощью параметра c (например, arping –c 2 hostone) или разрешить ей продолжать отправлять запросы, пока вы не наберете  ^c (CTRL+C). В этом первом примере мы отправляем в систему два запроса:

$ arping -c 2 172.16.20.17

ARPING 172.16.20.17 from 172.16.20.10 eth0

Unicast reply from 172.16.20.17 [20:EA:16:01:55:EB]  64.895ms

Unicast reply from 172.16.20.17 [20:EA:16:01:55:EB]  5.423ms

Sent 2 probes (1 broadcast(s))

Received 2 response(s)

Обратите внимание, что выходные данные показывают время, необходимое для получения ответов, и MAC-адрес исследуемой системы.

Если вы используете опцию -f, arping завершится, как только он убедиться, что система отвечает. Это может показаться эффективным, но никогда не завершиться, если система – возможно, несуществующая или отключенная – не ответит. Как правило, лучше использовать небольшое значение. В следующем примере команда 83 раза пыталась связаться с удаленной системой, прежде чем я прервал ее с помощью ^ c, а затем она предоставила отчет.

$ arping -f 172.16.20.30

ARPING 172.16.20.30 from 172.16.20.10 eth0

^C Sent 83 probes (83 broadcast(s))

Received 0 response(s)

Для системы, которая работает и готова к ответу, ответ будет быстрым.

$ arping -f 172.16.20.17

ARPING 172.16.20.17 from 172.16.20.10 eth0

Unicast reply from 172.16.20.17 [20:EA:16:01:55:EB]  82.963ms

Sent 1 probes (1 broadcast(s))

Received 1 response(s)

Broadcast – send out for all to receive

Команда ping может легко достичь удаленных систем, в то же время команда arping пытается, но не получает никаких ответов. Сравните выводы ниже.

$ arping -c 2 teacherbox.ru

ARPING 172.17.137.25 from 172.16.20.10 eth0

Sent 2 probes (2 broadcast(s))

Received 0 response(s)

$ ping -c 2 teacherbox.ru

PING teacherbox.ru (172.17.137.25) 56(84) bytes of data.

64 bytes from teacherbox.ru (172.17.137.25): icmp_seq=1 ttl=48 time=321 ms

64 bytes from teacherbox.ru (172.17.137.25): icmp_seq=2 ttl=48 time=331 ms

—- teacherbox.ru ping statistics —-

2 packets transmitted, 2 received, 0% packet loss, time 1002ms

rtt min/avg/max/mdev = 321.451/326.068/330.685/4.617 ms

Очевидно, что arping не может собирать информацию на удаленном сервере.

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

$ for num in {1..100}; do arping -c 1 172.16.20.$num; done

ARPING 172.16.20.1 from 172.16.20.10 eth0

Unicast reply from 172.16.20.1 [F8:8E:85:35:7F:B9]  5.530ms

Sent 1 probes (1 broadcast(s))

Received 1 response(s)

ARPING 172.16.20.2 from 172.16.20.10 eth0

Sent 1 probes (1 broadcast(s))

Received 0 response(s)

ARPING 172.16.20.3 from 172.162.0.10 eth0

Unicast reply from 172.16.20.3 [02:0F:B5:22:E5:90]  76.856ms

Sent 1 probes (1 broadcast(s))

Received 1 response(s)

ARPING 172.16.20.4 from 172.16.20.10 eth0

Unicast reply from 172.16.20.4 [02:0F:B5:5B:D9:66]  83.000ms

Sent 1 probes (1 broadcast(s))

Received 1 response(s)

Обратите внимание, что некоторые ответы показывают, что один ответ был получен, а другие – нет.

Вот простой сценарий, который предоставит список того, какие системы в диапазоне сети отвечают, а какие нет:

#!/bin/bash

for num in {1..255}; do

    echo -n “172.16.20.$num “

    arping -c 1 172.16.20.$num | grep “1 response”

    if [ $? != 0 ]; then

        echo “”

    fi

done

Измените диапазон IP-адресов в скрипте, чтобы он соответствовал вашей локальной сети. Результат должен выглядеть примерно так:

$ ./detectIPs

172.16.20.1 Received 1 response(s)

172.16.20.2 Received 1 response(s)

172.16.20.3 Received 1 response(s)

172.16.20.4 Received 1 response(s)

172.16.20.5

172.16.20.6 Received 1 response(s)

172.16.20.7 Received 1 response(s)

172.16.20.8

172.16.20.9 Received 1 response(s)

172.16.20.10

172.16.20.11 Received 1 response(s)

Если вы хотите отобразить только отвечающие системы, упростите скрипт следующим образом:

#!/bin/bash

for num in {1..30}; do

    arping -c 1 172.16.20.$num | grep “1 response” > /dev/null

    if [ $? == 0 ]; then

        echo “172.16.20.$num “

    fi

done

Ниже показано, как будет выглядеть результат выполнения второго скрипта. В нем перечислены только отвечающие системы.

$ ./detectIPs

172.16.20.1

172.16.20.2

172.16.20.3

172.16.20.4

172.16.20.6

172.16.20.7

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

Exit mobile version