Как проверить, находится ли сетевой интерфейс в промискуозном режиме в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь проверять, работает ли сетевое интерфейс в Linux в режиме перехвата всех пакетов (промискуозном режиме, promiscuous mode). Промискуозный режим позволяет сетевому интерфейсу захватывать весь сетевой трафик, который он получает, независимо от адреса назначения, что является важным для мониторинга и анализа сети.

Вы рассмотрите три различных метода для определения статуса промискуозного режима: использование команды ip link show для проверки флагов интерфейса, применение команды tcpdump для наблюдения за поведением при захвате пакетов и анализ конфигурации интерфейса в файловой системе /sys/class/net. Завершив эти шаги, вы получите практические навыки проверки конфигурации сетевых интерфейсов в среде Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/RemoteAccessandNetworkingGroup -.-> linux/ifconfig("Network Configuring") linux/RemoteAccessandNetworkingGroup -.-> linux/ping("Network Testing") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") linux/PackagesandSoftwaresGroup -.-> linux/curl("URL Data Transferring") linux/PackagesandSoftwaresGroup -.-> linux/apt("Package Handling") subgraph Lab Skills linux/ls -.-> lab-558736{{"Как проверить, находится ли сетевой интерфейс в промискуозном режиме в Linux"}} linux/cat -.-> lab-558736{{"Как проверить, находится ли сетевой интерфейс в промискуозном режиме в Linux"}} linux/cd -.-> lab-558736{{"Как проверить, находится ли сетевой интерфейс в промискуозном режиме в Linux"}} linux/ifconfig -.-> lab-558736{{"Как проверить, находится ли сетевой интерфейс в промискуозном режиме в Linux"}} linux/ping -.-> lab-558736{{"Как проверить, находится ли сетевой интерфейс в промискуозном режиме в Linux"}} linux/ip -.-> lab-558736{{"Как проверить, находится ли сетевой интерфейс в промискуозном режиме в Linux"}} linux/curl -.-> lab-558736{{"Как проверить, находится ли сетевой интерфейс в промискуозном режиме в Linux"}} linux/apt -.-> lab-558736{{"Как проверить, находится ли сетевой интерфейс в промискуозном режиме в Linux"}} end

На этом этапе вы научитесь проверять статус промискуозного режима сетевого интерфейса с использованием команды ip link show. Промискуозный режим (promiscuous mode) представляет собой настройку сетевого интерфейсного контроллера (NIC), которая позволяет ему передавать все полученные пакеты в центральный процессор (CPU), а не только те кадры, которые адресованы непосредственно этому контроллеру. Этот режим часто используется для мониторинга и анализа сети.

Сначала откройте терминал, если вы еще этого не сделали. Для этого нажмите на значок Xfce Terminal слева на рабочем столе.

Теперь давайте используем команду ip link show для просмотра статуса ваших сетевых интерфейсов. Введите следующую команду и нажмите Enter:

ip link show

Вы увидите вывод, похожий на следующий:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff

Найдите строку, соответствующую вашему основному сетевому интерфейсу, который в этой среде обычно называется eth0. Проверьте флаги, заключенные в угловые скобки (<>). Если в этих флагах присутствует PROMISC, то интерфейс работает в промискуозном режиме. В приведенном выше примере вывода PROMISC отсутствует, что означает, что интерфейс eth0 не работает в промискуозном режиме.

Команда ip link show является основным инструментом для проверки конфигурации сетевых интерфейсов в Linux. Понимание ее вывода, включая различные флаги и состояния, является важным для устранения неполадок в сети и ее администрирования.

Нажмите Продолжить, чтобы перейти к следующему шагу.

Проверка с помощью tcpdump -i

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

Сначала вам нужно установить tcpdump. Используйте команду sudo apt install, аналогично тому, как вы установили htop в предыдущей лабораторной работе.

sudo apt update
sudo apt install tcpdump -y

Флаг -y автоматически отвечает "да" на любые запросы во время установки.

Теперь давайте используем tcpdump для прослушивания интерфейса eth0. Мы будем использовать опцию -i, чтобы указать интерфейс, и опцию -n, чтобы предотвратить DNS-запросы, что делает вывод более чистым.

sudo tcpdump -i eth0 -n

Вы увидите вывод, указывающий, что tcpdump прослушивает интерфейс eth0.

tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type ETHERNET (100Mbps), snapshot length 262144 bytes

Если интерфейс работает в промискуозном режиме, tcpdump будет захватывать весь трафик, который он видит. Если он не работает в промискуозном режиме, он будет захватывать только трафик, направленный на его MAC-адрес, а также широковещательный или мультикастный трафик.

Для создания некоторого трафика вы можете открыть другое окно терминала (или новую вкладку в текущем терминале) и попробовать отправить пинги на веб-сайт, например:

ping -c 4 google.com

Следите за выводом в терминале с запущенным tcpdump. Вы должны увидеть, как пакеты захватываются.

Важно: Чтобы остановить tcpdump, нажмите Ctrl + C в терминале, где запущен tcpdump.

Хотя tcpdump сам по себе не явно указывает на "промискуозный режим" в начальном выводе, его способность захватывать трафик, не предназначенный специально для данного интерфейса, является практичным способом подтвердить, активен ли промискуозный режим. Если вы видите трафик, не связанный с коммуникацией вашей собственной системы (например, ARP-запросы от других устройств на сегменте сети), это сильный признак того, что промискуозный режим активен.

Нажмите Продолжить, чтобы перейти дальше.

Проверка интерфейса в /sys/class/net

На этом этапе вы будете исследовать файловую систему /sys, чтобы найти информацию о своих сетевых интерфейсах, включая статус промискуозного режима. Файловая система /sys представляет собой виртуальную файловую систему в Linux, которая предоставляет способ взаимодействия с ядром и драйверами устройств. Она предоставляет информацию о аппаратных устройствах и их конфигурации.

Перейдите в каталог сетевых интерфейсов внутри /sys. Используйте команду cd для изменения текущего каталога:

cd /sys/class/net/

Теперь выведите список содержимого этого каталога с помощью команды ls:

ls

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

eth0  lo

Каждый каталог здесь соответствует сетевому интерфейсу. Давайте посмотрим внутри каталога для eth0:

cd eth0

Теперь выведите список файлов в каталоге eth0:

ls

Вы увидите множество файлов и каталогов, содержащих информацию о интерфейсе eth0. Нас интересует файл, который указывает на статус промискуозного режима. Эта информация часто находится в файле, связанном с флагами или состоянием устройства.

Хотя точное имя файла может немного отличаться в зависимости от версии ядра, обычно эту информацию можно найти, изучив содержимое файлов, которые могут содержать флаги или информацию о состоянии.

Давайте попробуем прочитать содержимое файла, который может указывать на состояние или флаги. Используйте команду cat для отображения содержимого файла. Например, вы можете искать файлы с именем flags или похожими.

cat flags

Вывод команды cat flags будет шестнадцатеричным числом. Это число представляет собой битовую маску различных флагов интерфейса. Чтобы интерпретировать это, обычно нужно обратиться к документации ядра для определенных флагов и соответствующих им битовых значений. Однако для проверки именно промискуозного режима в /sys часто есть более прямой способ.

Более надежный способ проверить промискуозный режим в /sys - это найти файл, который явно указывает на количество флагов промискуозного режима. Этот файл обычно называется flags или похожим, и его содержимое, если правильно интерпретировать, покажет, установлен ли флаг промискуозного режима.

Давайте вернемся в каталог /sys/class/net/eth0, если вы еще не там:

cd /sys/class/net/eth0

Теперь давайте еще раз изучим файл flags. Шестнадцатеричное значение в файле flags представляет различные состояния интерфейса. Хотя прямое интерпретирование шестнадцатеричного значения требует знания флагов ядра, наличие флага PROMISC в выводе команды ip link show (из Шага 1) является более удобным способом подтвердить промискуозный режим. Файловая система /sys предоставляет исходные данные ядра, которые используют такие инструменты, как ip.

Для прямой проверки в /sys обычно нужно искать файл, который конкретно указывает на количество или состояние промискуозного режима. Однако в этой среде самым простым способом подтвердить промискуозный режим с использованием стандартных инструментов является команда ip link show, как показано в Шаге 1. Файловая система /sys предоставляет базовые данные, но их интерпретация может быть более сложной без специальной документации ядра.

Этот шаг демонстрирует, как файловая система /sys обеспечивает низкоуровневый доступ к информации о устройствах. Хотя непосредственная проверка промискуозного режима через один файл в /sys может быть сложной, понимание этой файловой системы ценно для продвинутого анализа системы Linux.

Нажмите Продолжить, чтобы завершить этот шаг.

Резюме

В этой лабораторной работе вы научились проверять, находится ли сетевой интерфейс в промискуозном режиме в Linux с помощью команды ip link show. Эта команда отображает настройки сетевых интерфейсов, и наличие флага PROMISC указывает на то, что интерфейс работает в промискуозном режиме. Вы также начали изучать использование команды tcpdump как другого способа проверки статуса промискуозного режима путем захвата сетевого трафика.