Arp команда не найдена linux

Обновлено: 04.07.2024

Список инструментов для тестирования на проникновение и их описание

Описание arp-scan

Это ARP сканнер.

arp-scan — это инструмент командной строки для обнаружения и снятия отпечатков. Он создает и отправляет ARP запросы указанным IP адресам и отображает полученные ответы.

arp-scan позволяет вам:

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

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

  • Гибким способом конструировать исходящий ARP пакет.

arp-scan предоставляет управление всеми полями пакета ARP и полями в заголовке Ethernet кадра.

  • Декодировать и отображать любые возвращённые пакеты.

arp-scan будет декодировать и отображать любые принятые ARP-пакеты и искать поставщика, используя MAC-адрес.

  • Снимать отпечатки IP хостов, используя инструмент arp-fingerprint.

Автор: Roy Hills

Справка по arp-scan

Руководство по arp-scan

ИМЯ

arp-scan - Сканер ARP.

СИНОПСИС

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

Для запуска arp-scan вам нужно будет быть root, или arp-scan должен быть запущен с SUID битом (с sudo), поскольку функции, которые использует эта программа для чтения и записи пакетов, требуют привилегий root.

Целевые хосты могут быть указаны как IP-адреса или имена хостов. Вы также можете указать цель как IPnetwork/биты (например, 192.168.1.0/24) — это укажет все хосты в данной сети (включая сетевые и широковещательные адреса); начальныйIP-конечныйIP (например, 192.168.1.3-192.168.1.27) — это укажет на все хосты в инклюзивном диапазоне; или IPnetwork:NetMask (например, 192.168.1.0:255.255.255.0) — это укажет на все хосты в данной сети по маске.

ОПИСАНИЕ

arp-scan отправляет ARP пакеты к хостам в локальной сети и показывает полученные ответы. Сетевой интерфейс, который вы хотите использовать, можно указать опцией --interface. Если опция отсутствует, arp-scan будет искать самый низкий номер в списке системных интерфейсов (за исключением loopback). По умолчанию ARP пакеты отправляются на широковещательный Ethernet адрес ff:ff:ff:ff:ff:ff, но это можно изменить опцией --destaddr.

Целевые хосты для сканирования можно указать тремя способами: указав цели в строке команды; указав опцией --file файл, содержащий цели; или указав опцию --localnet, которая приведёт к тому, что будут просканированы все возможные в сети хосты (данные формируются исходя из адреса сетевого интерфейса и маски сети). Для хостов, указанных в строке команды или опцией --file вы можете использовать IP адреса или имена хостов. Вы также можете использовать сетевые спецификации IPnetwork/биты, начальныйIP-конечныйIP или IPnetwork:NetMask.

Список целевых хостов храниться в памяти. Каждый хост в этом списке использует 28 байт памяти, следовательно сканирование сетей класса B (65,536 хостов) требует примерно 1.75MB памяти, а сканирование класса A (16,777,216 хостов) требует примерно 448MB.

arp-scan поддерживает Ethernet и беспроводные сети 802.11. Он также может поддерживать token ring и FDDI, но они не тестировались. Программа не поддерживает serial links, такие как PPP или SLIP, поскольку они не поддерживают ARP.

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

ARP только используется IPv4 хостами, IPv6 вместо него использует NDP (протокол обнаружения соседей), который является другим протоколом и не поддерживается программой arp-scan.

Один ARP пакет отправляется для каждого целевого хоста с адресом целевого протокола (поле ar$tpa), установленного на IP адрес этого хоста. Если хост не отвечает, тогда ARP пакет будет отправлен повторно ещё один раз. Максимальное количество попыток можно изменить опцией --retry. Уменьшение количества попыток уменьшит время сканирование за счёт возможного риска пропустить некоторые результаты из-за потери пакетов.

Время, затраченное на выполнение сканирования в один проход (т. е. --retry=1) рассчитывается:

Где n — это количество хостов в списке, i — это временной интервал между пакетами (указывается опцией --interval или расчитывается из --bandwidth), t — это значение времени ожидания (указывается с --timeout) и o — это время на загрузку целей из списка и чтение файлов сопоставления MAC/вендора. Для небольших списков хостов, значение таймаута будет превалирующим, но для больших списков пакетный интервал это самое важное значение.

С 65,536 хостами дефолтная полоса пропускания 256,000 бит/секунду (что приведёт к пакетному интервалу в 2 мс), дефолтное время ожидания равно 500 мс, при единичном проходе (--retry=1) и предположительном дополнительном расходе времени в 1 секунду, сканирование должно занять 65536*0.002 + 0.5 + 1 = 132.57 секунд, т. е. примерно 2 минуты 13 секунд.

Любая часть исходящего ARP пакета может быть модифицирована через использование различных --arpXXX опций. Использование некоторых из этих опций может сделать исходящие ARP пакеты не совместимыми с RFC. Различные операционные системы обрабатывают различные нестандартные ARP пакеты по-разному и это можно использовать для снятия отпечатков этих систем. Смотрите arp-fingerprint(1) для информации о скрипте, который использует эти опции для снятия отпечатков целевой операционной системы.

Ниже приведена сводная таблица этих опций и изменений исходящего ARP пакета. В этой таблице колонка Поле приводит имя поля ARP пакета из RFC 826, Биты определяет количество битов в этом поле, Опции показывают опцию arp-scan для изменения этого поля и Примечания дают стандартное значение и другие заметки.

Опции исходящих ARP пакетов
Поле Биты Опция Примечания
ar$hrd 16 --arphrd По умолчанию это 1 (ARPHRD_ETHER)
ar$pro 16 --arppro По умолчанию это 0x0800
ar$hln 8 --arphln По умолчанию это 6 (ETH_ALEN)
ar$pln 8 --arppln По умолчанию это 4 (IPv4)
ar$op 16 --arpop По умолчанию это 1 (ARPOP_REQUEST)
ar$sha 48 --arpsha По умолчанию это аппаратный адрес интерфейса
ar$spa 32 -arpspa По умолчанию это IP адрес интерфейса
ar$tha 48 --arptha По умолчанию это ноль (00:00:00:00:00:00)
ar$tpa 32 Нет Устанавливается на IP адрес целевого хоста

Самой часто используемой опцией исходящего ARP пакета является --arpspa, которая устанавливает IP адрес источника в ARP пакете. Эта опция позволяет исходящему ARP пакету использовать IP адрес источника отличный от адреса интерфейса. С этой опцией возможно использовать arp-scan на интерфейсе без настроенного IP адреса, что может быть полезно если вы хотите быть уверенным, что тестирующий хост не взаимодействует с тестируемой сетью.

Предупреждение: установка ar$spa на IP адрес конечного пункта может нарушать работу некоторых операционных систем, поскольку они предполагают наличие коллизии IP адресов, если они получают ARP запрос для их собственного адреса.

Можно изменить значение заголовка Ethernet фрейма, который предшествует ARP пакету в исходящих пакетах. Таблица ниже суммирует данные по опциям, которые изменяют значения в заголовке Ethernet фрейма.

Опции исходящих Ethernet фреймов
Поле Биты Опция Примечания
Адрес назначения 48 --destaddr По умолчанию это ff:ff:ff:ff:ff:ff
Адрес источника 48 --srcaddr По умолчанию это адрес интерфейса
Тип протокола 16 --prototype По умолчанию это 0x0806

Самой часто используемой опцией Ethernet фрейма является --destaddr, которая устанавливает Ethernet адрес пункта назначения для ARP пакета, --prototype используется нечасто, поскольку она может привести к тому, что пакет будет интерпретирован как другой Ethernet протокол.

Любые ARP ответы, которые получены, отображаются в следующем формате:

Где IP адрес — это IP адрес ответившей цели, Аппаратный адрес — это её аппаратный Ethernet адрес (также известный как MAC-адрес), а Производитель — это подробности о производителе, полученные на основе аппаратного адреса. Поля вывода разделены единичным символом табуляции.

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

Почти все хосты, которые поддерживают IP, ответят arp-scan если они получили ARP пакет с адресом целевого протокола (ar$tpa) установленного на их IP адрес. Сюда относятся файерволы и другие хосты с IP фильтрацией, которые отбрасывают весь IP трафик от тестирующей системы. По этой причине arp-scan полезный инструмент для быстрого определения всех активных IP хостов на заданном сегменте Ethernet сети.

ОПЦИИ

Описание опций в man странице полностью повторяет содержимое справки. Для знакомства с опциями смотрите выше раздел Справка.

ФАЙЛЫ

Спиоск IEEE OUI (Уникальный идентификатор организации) для сопоставления производителя.

List of IEEE IAB (Индивидуальный блок адресов IAB) для сопоставления производителя.

Список других Ethernet MAC для сопоставления производителя.

get-oui — обновление файла OUI с веб-сайта IEEE для arp-scan

get-oui получает файл Ethernet OUI с веб-сайта IEEE и сохраняет его в формате, используемом arp-scan.

Каждый крупный поставщик оборудования Ethernet регистрирует OUI для своего оборудования, а более крупным поставщикам потребуется зарегистрировать более одного. Например, у 3Com всего 37 записей OUI.

Этот скрипт можно использовать для обновления OUI-файла arp-scan из последних данных на веб-сайте IEEE. Большинство используемых адресов Ethernet относятся к регистрации OUI, поэтому это самый важный из файлов, которые arp-scan использует для декодирования аппаратных адресов Ethernet. Поэтому вам следует время от времени запускать get-oui, чтобы поддерживать OUI-файл arp-scan в актуальном состоянии.

Файл ieee-oui.txt, созданный этим скриптом, используется arp-scan для определения производителя карты Ethernet по его аппаратному адресу.

Каталог, в котором arp-scan будет искать файл ieee-oui.txt, зависит от параметров, использованных при его создании. Если он был построен с использованием параметров по умолчанию, он будет искать в /usr/local/share/arp-scan.

Чтобы выполнить обновление файла OUI запустите следующую команду:

Примеры запуска arp-scan

Просканировать локальную сеть, используя информацию от главного сетевого интерфейса:

Просканировать локальную сеть 192.168.0.0/24 используя интерфейс eth0:

Просканировать подсеть, на указанном интерфейсе и используя пользовательский MAC адрес источника:

Установка arp-scan

Программа предустановлена в Kali Linux.

Установка в BlackArch

Программа предустановлена в BlackArch.

Информация об установке в другие операционные системы будет добавлена позже.

У меня есть компьютер (ядро 3.2.0-23-generic ), который 192.168.1.2/24 настроен для eth0 интерфейса, а также использует 192.168.1.1 и 192.168.1.2 адреса для tun0 интерфейса:

Как видно выше, tun0 административно отключен ( ip link set dev tun0 down ). Теперь, когда я получаю запросы ARP 192.168.1.2 , ПК не отвечает на эти запросы:

Только после того, как я удаляю tun0 интерфейс ( ip link del dev tun0 ) компьютер будет отвечать на запрос ARP для 192.168.1.2 на eth0 интерфейсе.

Таблица маршрутизации выглядит одинаково до и после ip link del dev tun0 :

Запись о маршрутизации ниже удаляется ip link set dev tun0 down командой:

Однако, хотя таблицы маршрутизации абсолютно одинаковы до и после ip link del dev tun0 команды, реальные решения по маршрутизации, которые примет ядро, не являются:

Это ожидаемое поведение? Почему ядро ​​игнорирует таблицу маршрутизации?

Можете ли вы вставить вывод netstat -rn для обоих случаев? Таблица маршрутизации обычно является первым местом, где нужно искать подобные ошибки. Наличие одного и того же IP-адреса на двух интерфейсах может создать проблемы, и этого лучше избегать, при этом вы должны быть в состоянии отследить проблему. Следующим шагом является просмотр кеша arp. Показывает ли arp -a что-нибудь полезное? @ Claris Похоже, основная причина в том, что ядро ​​игнорирует таблицу маршрутизации, когда tun0 интерфейс отключен, но присутствует. Смотрите вывод ip route get команд в моем обновленном первоначальном посте. Однако почему ядро ​​ведет себя так?

Ваша таблица маршрутизации точно не игнорируется. Он отменяется таблицей маршрутизации с более высоким приоритетом.

В чем дело

Таблица маршрутизации, которую вы видите при вводе ip route show , не единственная таблица маршрутизации, используемая ядром. Фактически, по умолчанию есть три таблицы маршрутизации, и они ищутся в порядке, показанном ip rule командой:

Таблица, с которой вы больше всего знакомы main , но таблица маршрутизации с самым высоким приоритетом local . Эта таблица управляется ядром для отслеживания локальных и широковещательных маршрутов: другими словами, local таблица сообщает ядру, как маршрутизировать адреса своих собственных интерфейсов. Это выглядит примерно так:

Почему несколько таблиц?

Как минимум, приятно иметь возможность печатать ip route и не видеть все эти «очевидные» маршруты, загромождающие дисплей (попробуйте набрать текст route print на машине с Windows). Это также может служить некоторой минимальной защитой от неправильной конфигурации: даже если основная таблица маршрутизации перепутана, ядро ​​все еще знает, как общаться с самим собой.

(Зачем в первую очередь поддерживать локальные маршруты? Поэтому ядро ​​может использовать тот же код поиска для локальных адресов, что и для всего остального. Это упрощает внутреннюю ситуацию.)

Если вы делаете особенно сложные или экспериментальные вещи, вы можете добавлять или удалять local маршруты самостоятельно, указав table local в ip route команде. Если вы не знаете, что делаете, вы, вероятно, перепутаете ядро. И, конечно же, ядро ​​все равно будет продолжать добавлять и удалять свои собственные маршруты, поэтому вам нужно следить за тем, чтобы ваши не перезаписывались.

Наконец, если вы хотите увидеть все таблицы маршрутизации одновременно:

Для получения дополнительной информации посетите ip-rule(8) страницу руководства или документы iproute2 . Вы также можете попробовать HOWTO Advanced Routing and Traffic Control, чтобы получить примеры того, что вы можете сделать.

Вместо net-tools теперь iproute2, а вместо ifconfig теперь ip a

Если вы работаете с командной строкой в Linux, то почти наверняка используете команду ifconfig. Возможно, использовали её уже много лет. Она упоминается во многих инструкциях и книгах. И тем больше, я думаю, вы удивитесь, узнав, что пакет net-tools (которому принадлежит ifconfig) больше не устанавливается по умолчанию, поскольку теперь считается устаревшим.

Его место занял пакет iproute2, а вместо ifconfig нужно использовать команду ip. Запуск ifconfig без аргументов:

или в укороченной форме:


Почему заменили ifconfig

ifconfig – это программа из пакета net-tools, который на протяжении долгого времени не мог в полной мере поддерживать сетевой стек Linux. Он также по-прежнему использует ioctl для настройки сети, что является безобразным и менее продуктивным способом взаимодействия с ядром.

Множество изменений в сетевом коде Linux и множество новых возможностей недоступны при использовании net-tools: многолучеввая маршрутизация, политики маршрутизации (смотрите RPDB). route позволяет делать глупые вещи, такие как добавление множества маршрутов к одному месту назначения с той же метрикой.

  • ifconfig не сообщает должный аппаратный адрес для некоторых устройств.
  • Вы не можете настроить ipip, sit, gre, l2tp и т.д. во встроенных в ядро статичных туннелях.
  • Вы не можете создавать устройства tun или tap.
  • Способ добавления множества адресов данному интерфейсу также имеет бедную семантику.
  • Вы также не можете настраивать систему контроля трафика Linux используя net-tools.

Примеры использования ip. Аналоги ip для ifconfig

Сбор информации

Первое, что большинство людей изучает с командой ifconfig – это как узнать, какой IP адрес назначен интерфейсу. Это обычно делается командой ifconfig без флагов или аргументов. Чтобы сделать это же самое с командой ip, запустите её так:

Эта команда выведет список интерфейсов и связанную с ними информацию.


Допустим, вы хотите увидеть только информацию по IPv4 (для ясности). Чтобы сделать это, наберите команду:

Или вы хотите увидеть информацию только по IPv6:

Что если вы хотите увидеть информацию, связанную с конкретным интерфейсом? Вы можете вывести список данных по беспроводному соединению командой:

Вы можете задать ещё более конкретные условия этой командой. Если вы хотите увидеть IPv4 по интерфейсу wlan0, наберите команду:

Вы можете составить список только из работающих интерфейсов используя:

Изменение интерфейса

Теперь мы входим в сердце команды… использование её для изменения интерфейса. Допустим вы хотите назначить конкретный адрес первому ethernet интерфейсу eth0. С командой ifconfig это выглядело бы примерно так:

С командой ip это выглядит примерно так:

Вы можете немного сократить её:

Ясно, что вы должны знать маску подсети адреса, который вы назначаете.

Что насчёт того, чтобы удалить адрес из интерфейса? С командой ip вы также можете сделать это. Например, для удаления только что назначенного для eth0 адреса, наберите следующую команду:

Что если вы хотите просто очистить все адреса для всех интерфейсов? Командой ip это делается так:

Другой ключевой аспект команды ip – это возможность поднимать/отключать интерфейс. Чтобы отключить интерфейс eth0 наберите:

Чтобы обратно поднять eth0, используйте

С командой ip вы можете также добавлять и удалять шлюз по умолчанию. Работать с этим примерно так:

Добавление псевдонима (алиаса) интерфейса с ifconfig:

Если вы действительно хотите углубиться в детали, вы можете отредактировать очередь передачи. Вы можете задать низкое значение в очереди передачи для медленных интерфейсов и более высокое значение для быстрых интерфейсов. Чтобы сделать это, команда должна выглядеть примерно так:

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

Вы также можете установить Maximum Transmission Unit (MTU) вышего сетевого интерфейса командой:

После сделанных изменений, используйте

для проверки, что изменения возымели эффект.

Управление таблицей маршрутизации

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

Допустим, вы хотите просмотреть все таблицы маршрутизации. Чтобы сделать это, наберите команду:

Вывод может выглядеть примерно так:

16

Теперь, допустим, вы хотите переправлять весь трафик через шлюз 192.168.5.0, подключённый через сетевой интерфейс eth0. Чтобы сделать это, наберите команду:

Для удаления этого же маршрута наберите:

18

ARP протокол

Добавьте любую запись в вашу ARP таблицу:

Отключите преобразование ARP на устройстве с ifconfig:

Цель этой заметки – дать начальное представление о команде ip. Конечно необязательно полностью отказываться от использования ifconfig, но теперь программа не предустановлена по умолчанию во многие дистрибутивы. И нужно быть готовым использовать команду ip.

При написании этой заметки использовались материалы:

Связанные статьи:

Рекомендуемые статьи:

11 Комментарии

Все прекрасно работает,

ifconfig в debiane прекрасно работает от рута.

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


За всю историю юзанья, никогlа не сталкивался с невозможностью чего либо соорудить при работе с ifconfig.

Нет чтобы сделать аналог без больших изнений, нет бли =н непонятно для чего все усложнили. Отправилил эту команду туда же куда и NetworkManager

sudo apt-get install net-tools

Есть "философия UNIX". Следуйте ей, если работаете в этой системе.

Как говорится, со своим уставом в чужой монастырь не ходят.

Не превращайтесь в Windows 🙁

«Unix прост. Но надо быть гением, чтобы понять его простоту» — Деннис Ритчи.

«Unix не предназначен для ограждения своих пользователей от глупостей, поскольку это оградило бы их и от умных вещей» — Дуг Гвин.

Это ни в коем случае не претензия. Вы меня не правильно поняли.

первое и самое важное, linux никогда не был unix, да и вообще linux - это не OS, это оболочка ядра(пакетный менеджер) и рассказывать что debian стал для домохозяек очень смешно, изначально для десктопа - ubuntu ( клон деба) а сам деб инетерсней использовать на серверах, и да , кто использует его на серверах - очень давно отказались от net-tools из-за дырявости данного пакета, + если ты уже так силь хочешь себе, скорее всего на десктоп unix - консервативный , тогда тебе нужно смотреть на FreeBSD и вообще на BSD системы, а насчет LFS какая разниза если ты влюбом варианте будетшь использовать одинаковое ядро ? и какая разница где ты будешь ставить пакеты в gentoo или в debian - хочешь позамарачивать, ставь в дебиане пакеты с исходного кода ))

- "lnux" не nix подобная ли ось?

- более конкретно, не ядро ли этой оси "lnuux"?

- точно ли ubuntu клон debiana? может быть он на нём основан?

- в чём "дырявость" пакета net-tools? только конкретно;

- кто эти мифические парни, "кто использует его на серверах - очень давно отказались от net-tools из-за дырявости данного пакета"? В моём понимании, представлении и по опыту "локальных войн", сервер настроил, запустил, и забыл его ковырять. На сервере "не играются" с пакетами. На нём вообще не играются. Контролируют его работу.

И ещё, LFS и ставить пакеты в Debian из исходного кода, это так же как угол в 100 градусов и температура кипения воды. Цифра одна, а остальное не очень 😉

И кстати, коллега, теперь не eth0, а epn3s0. И полноценный su теперь не su, а su - 😉


Debian 10 (кодовое название Debian Buster) наконец-то явился миру с удивительными классными функциями и новой темой оформления.

Однако вы, возможно, столкнулись с ошибкой при попытке проверить IP-адрес вашего сетевого интерфейса (ов) при выполнении команды ifconfig, что указывает на то, что «команда ifconfig не найдена».

В Debian 10 (начиная с Debian 9) команда ifconfig устарела.

Обходным путем к этому препятствию является ip addr, который в значительной степени выполняет ту же задачу, что и команда ifconfig, как показано во фрагменте ниже.


Как видно из приведенного выше фрагмента, команда все равно будет отображать IP-адрес и другую статистику всех ваших сетевых интерфейсов.

Если вы все еще настаиваете на использовании старой доброй команды ifconfig, вам необходимо установить пакет net tools.

Пакет net-tools представляет собой инструментарий, который содержит спектр программ, которые составляют основу сетей Linux.

Он включают в себя следующее:

Исправление отсутствующей команды ifconfig в Debian

Это запускает установку пакетов net-tools вместе с другими программными зависимостями, как показано далее:


После того, как установка завершится и будет успешной, попробуйте снова запустить команду ifconfig, и на этот раз ваша сетевая статистика будет отображаться на терминале, как показано в последнем разделе фрагмента выше.

Заключительные мысли

Мы надеемся, что теперь у вас есть достаточно знаний, необходимых для обхода этой ошибки.

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

Если у вас есть какие-либо вопросы по этой теме, не стесняйтесь оставлять нам комментарии.

Спасибо за ваше время и не забудьте поделиться этим руководством в своих социальных сетях.

Читайте также: