Публикации
Работа протокола ARP на примере OVS
Всероссийский сборник статей и публикаций института развития образования, повышения квалификации и переподготовки.
Скачать публикацию
Язык издания: русский
Периодичность: ежедневно
Вид издания: сборник
Версия издания: электронное сетевое
Публикация: Работа протокола ARP на примере OVS
Автор: Сабиров Данияр Серикович
Периодичность: ежедневно
Вид издания: сборник
Версия издания: электронное сетевое
Публикация: Работа протокола ARP на примере OVS
Автор: Сабиров Данияр Серикович
РАБОТА ПРОТОКОЛА ARP НА ПРИМЕРЕ OVSАбдуллин Тагир РенатовичСабиров Данияр Сериковичстуденты РГУ нефти и газа (НИУ) им. И.М. ГубкинаАннотация: в статье рассматривается работа протокола ARP (Address Resolution Protocol) на примере программного коммутатора Open vSwitch (OVS). Освещены основные аспекты функционирования ARP, включая его роль в сетевых взаимодействиях и типичные уязвимости, такие как ARP-спуфинг. Представлены возможности OVS в управлении ARP-трафиком с использованием OpenFlow, включая фильтрацию ARP-запросов, блокировку нежелательных ARP-пакетов и создание статических ARP-записей. Ключевые слова: ARP, Open vSwitch, OVS, OpenFlow, ARP-спуфинг, защита ARP, блокировка ARP, сетевые протоколы, управление ARP-трафиком.Abstract: The article examines the operation of the Address Resolution Protocol (ARP) using the Open vSwitch (OVS) software switch as an example. It highlights the fundamental aspects of ARP functionality, its role in network communication, and common vulnerabilities such as ARP spoofing. The article explores OVS capabilities for managing ARP traffic using OpenFlow, including filtering ARP requests, blocking unwanted ARP packets, and creating static ARP entries.Key words: ARP, Open vSwitch, OVS, OpenFlow, ARP spoofing, ARP protection, ARP blocking, network protocols, ARP traffic management.ВведениеСовременные информационные сети стали неотъемлемой частью мировой инфраструктуры, обеспечивая передачу данных в критически важных отраслях. Как известно, адресация в сети Internet представляет собой 32-битовую последовательность 0 и 1, называющихся IP-адресами. Но непосредственно связь между двумя устройствами в локальной сети осуществляется по адресам канального уровня модели OSI (MAC-адресам). Сетевые устройства с разными MAC-адресами постоянно подключается и отключаются от локальных сетей и для определения соответствия между логическим адресом сетевого уровня (IP) и физическим адресом устройства (MAC) используется описанный в RFC 826 протокол ARP (Address Resolution Protocol, протокол разрешения адресов), работающий исключительно в протоколе IPv4 [1]. Несмотря на кажущуюся простоту, протокол ARP играет ключевую роль в обеспечении правильной маршрутизации и доставки пакетов данных их предполагаемым получателям в локальной сети. Без ARP устройства не смогли бы эффективно взаимодействовать, что привело бы к сбою в работе сети. В данной статье рассматривается работа ARP на примере программного коммутатора Open vSwitch (OVS), установленном на операционной системе ALT Linux.Open vSwitch (OVS) — это многоуровневый программный коммутатор с открытым исходным кодом, предназначенный для использования в виртуализированных средах. OVS совместим с протоколом OpenFlow, являющийся протоколом управления передачей данных в сети. Он описывает процесс взаимодействия контроллера и коммутатора, а также формат загружаемых в коммутатор правил. Подробнее с OVS можно ознакомиться, изучив официальную документацию [2].Областью исследования является сетевое взаимодействие в современных информационно-телекоммуникационных системах, в частности функционирование ARP протокола на примере Open vSwitch (OVS). Предметом исследования выступает механизм функционирования протокола ARP в программном коммутаторе Open vSwitch в среде операционной системы ALT Linux.Целью настоящего исследования является изучение особенностей работы протокола ARP на примере Open vSwitch.Результатом исследования станет углублённое понимание работы ARP на примере OVS в среде ALT Linux.Определение терминовПротокол ARP (Address Resolution Protocol): протокол, работающий на канальном уровне модели OSI, предназначенный для сопоставления IP-адресов с MAC-адресами устройств в локальных сетях. IP-адрес (Internet Protocol Address): уникальный сетевой адрес устройства, работающего в IP-сетях. Используется для идентификации узлов и маршрутизации данных. IP-адрес может быть представлен в формате IPv4 (например, 192.168.0.1) или IPv6 (например, 2001:0db8::1). MAC-адрес (Media Access Control Address): уникальный физический адрес сетевого интерфейса устройства. Он используется на канальном уровне модели OSI для адресации в пределах одной локальной сети и записывается в виде 6 байтов, например, 00:1A:2B:3C:4D:5E. Open vSwitch (OVS): Программный коммутатор с открытым исходным кодом, предназначенный для управления сетевыми потоками в виртуализированных средах, поддерживающий стандарты OpenFlow. OpenFlow — протокол управления передачей данных в сети. Описывает процесс взаимодействия контроллера и коммутатора, а также формат загружаемых в коммутатор правил. ALT Linux: Отечественная операционная система на базе Linux, сертифицированная для использования в государственном и корпоративном секторах, отличающаяся безопасностью и адаптивностью. ARP spoofing: Тип атаки, при котором злоумышленник отправляет ложные ARP-сообщения, чтобы перенаправить сетевой трафик через себя. Wireshark: Открытое программное обеспечение для анализа сетевого трафика. Позволяет в реальном времени отслеживать, записывать, анализировать и визуализировать данные, передаваемые по сети, включая пакеты ARP, что делает его незаменимым инструментом для диагностики сетевых проблем и изучения протоколов. Обзор исследованийЗначительный вклад в исследовании ARP-протокола внес его создатель David C. Plummer, описавший его в 1982 в RFC 826 [1]. Среди других людей, изучавших данный протокол можно выделить Kevin Fall, W. Richard Stevens, описавших протокол ARP в своей книге “TCP/IP Illustrated, Volume 1: The Protocols” [3]. Данный протокол не обошелся и без уязвимостей, поэтому D. Francis Xavier Christopher и C. Divya изучали ARP с точки зрения безопасности в своей публикации “Address Resolution Protocol Based Attacks: Prevention and Detection Schemes”.Гипотезы исследованияРеализация протокола ARP в Open vSwitch, работающем на платформе ALT Linux, позволяет лучше узнать принцип работы данного протокола. Использование OpenFlow-правил для управления ARP-трафиком предоставляет гибкий инструмент для моделирования и тестирования различных сценариев. Open vSwitch может эффективно предотвращать атаки типа ARP spoofing, предоставляя механизмы фильтрации и проверки ARP-пакетов на основе заранее определённых правил. Методы исследованияДля исследования работы протокола ARP на примере виртуального коммутатора Open vSwitch был проведен эксперимент, включающий три машины, работающие на ALT Linux. Топология сети, собранной в ходе эксперимента представлена на рисунке 1. На машине ALT-1 был установлен пакет OVS последней LTS версии 3.3.3.Рисунок 1 – Топология Исследование носило экспериментальный характер с элементами моделирования.Выборка включала три машины на базе ОС ALT Linux:ALT-1: виртуальная машина с установленным Open vSwitch 3.3.3, выполняющая функции коммутатора. PC-1, PC-2 и PC-3: машины, эмулирующие конечные устройства сети, участвующие в передаче ARP-запросов и ответов. Все конечные устройства были настроены на использование статических IP-адресов в одной подсети.Для анализа поведения ARP использовались следующие инструменты:tcpdump: Для захвата и анализа сетевого трафика, включая ARP-запросы и ответы. ovs-vsctl: Для настройки и мониторинга виртуального коммутатора Open vSwitch. ovs-ofctl: Для настройки правил Open Flow. ping: Для генерации сетевого трафика и проверки связности устройств. wireshark: для анализа сетевого трафика на коммутаторе. Описание Процедуры Проведения ИсследованияЭтап подготовки: Установка и настройка ALT Linux на виртуальных машинах. Установка Open vSwitch на машине ALT-1 и настройка коммутатора. Определение статических IP-адресов и проверка связности между устройствами. Проведение экспериментов: Захват и анализ ARP-запросов/ответов в нормальных условиях. Моделирование сетевой атаки ARP-spoofing. Описание Работы Arp.ARP Request Когда PC-1 (192.168.52.1) хочет установить связь с другим PC-2 (192.168.52.2), но не имеет MAC-адреса PC-2 в своем ARP-кэше, он инициирует ARP-запрос. Этот запрос представляет собой широковещательное сообщение, отправляемое всем устройствам в локальной сети, с вопросом: «Кто владеет IP-адресом X? Пожалуйста, отправьте мне ваш MAC-адрес».Рисунок 2 – Визуализация работы ARP.ARP Reply PC-2, распознав свой IP-адрес в запросе ARP, отвечает с помощью ARP-ответа. Этот ответ содержит MAC-адрес PC-2 и направляется напрямую PC-1. При этом PC-3, понимая, что запрос не был направлен к нему, игнорирует пришедший пакет. Таким образом устанавливается контакт между двумя устройствами.Обновление ARP-кэша Получив ARP-ответ, PC-1 обновляет свой ARP-кэш новым соответствием IP-адреса и MAC-адреса в ARP таблице. ARP-кэш является ключевым элементом процесса, позволяя устройствам хранить и быстро извлекать известные соответствия адресов, что снижает необходимость в повторных ARP-запросах.Передача данных Теперь, зная MAC-адрес PC-2, PC-1 может инкапсулировать пакет данных с правильным MAC-адресом назначения. Затем пакет передается по сети, используя физическую адресацию канального уровня, чтобы достичь PC-2.Эффективность и динамичность ARPДизайн ARP включает механизмы, повышающие эффективность и масштабируемость в сетях. Использование широковещательных сообщений для ARP-запросов позволяет всем устройствам в локальной сети слушать и при необходимости отвечать. Прямые ответы предотвращают избыточную нагрузку на сеть. Кроме того, механизм ARP-кэша минимизирует частоту отправки ARP-запросов, ускоряя обмен данными между устройствами.Динамическая природа протокола ARP, обеспечивающая разрешение адресов "на лету", позволяет ему легко адаптироваться к изменениям в сети. Устройства могут подключаться или отключаться без нарушения общего процесса коммуникации, а ARP-кэши периодически обновляются, чтобы отражать текущее состояние сети. Эта гибкость демонстрирует надежность ARP и его важнейшую роль в поддержании стабильной работы локальных сетей.Статические ARP записиСтатический ARP позволяет вручную устанавливать фиксированные соответствия между IP и MAC-адресами. В отличие от динамических записей эти записи защищены от старения и перезаписи, что повышает безопасность сети. Динамические записи ARP создаются и управляются автоматически при обмене ARP-пакетами. Они подвержены старению, обновлению или перезаписи статическими записями ARP. Динамический ARP используется в сложных сетях, где важна временная чувствительность, так как позволяет автоматически обновлять соответствие IP и MAC-адресов в таблице кэша без ручной настройки.Экспериментальное исследование.Вся настройка проводится из-под суперпользователя.На всех PC настроим статический IP-адрес: Для этого изменим файл options в директории интерфейса (на всех PC один интерфейс enp0s3):vim /etc/net/ifaces/enp0s3/optionsИзменим содержимое файла на:Рисунок 3 – содержимое файла options.Добавим ipv4-адрес, создав файл ipv4address и поместив в него значение ipv4 адреса в CIDR нотации.Таким образом, получаем, что PC имеют следующие ip-адреса:PC-1: 192.168.52.1/24PC-2: 192.168.52.2/24PC-3: 192.168.52.3/24На машине ALT-1, выполняющей роль виртуального коммутатора, запустим службу open vSwitch командой: systemctl start openvswitchЗатем создадим мост ovs0 и добавим в него все подключенные к машине интерфейсы (enp0s3, enp0s8, enp0s9), то есть PC-1, PC-2 и PC-3:ovs-vsctl add-br ovs0ovs-vsctl add-port ovs0 enp0s3ovs-vsctl add-port ovs0 enp0s8ovs-vsctl add-port ovs0 enp0s9Убедимся в правильности настройки, посмотрев конфигурацию коммутатора с помощью команды ovs-vsctl show:Рисунок 4 – конфигурация OVS.Изначально на всех машинах ARP записи отсутствуют, убедиться в этом можно с помощью одноименной команды ARP, если после ввода ничего не вывелось, то тогда записи отсутствуют.На PC-2 и PC-3 запустим мониторинг arp трафика с помощью команды tcpdump:Рисунок 5 – мониторинг трафика.На коммутаторе запустим Wireshark, для захвата трафика. Далее направим пинг от PC-1 до PC-2.ping 192.168.52.2Видим, что в сети появился трафик, и перед тем, как отправлять ICMP пакеты, PC-1 отправил широковещательный ARP-запрос, который пришел на коммутатор, отправивший его всем клиентам сети. На этот запрос ответил только PC-2, а PC-3 его проигнорировал.Рисунок 6 – мониторинг трафика (PC-2).Рисунок 7 – мониторинг трафика (PC-3).Рисунок 8 – мониторинг трафика в Wireshark.Рисунок 9 – мониторинг трафика в Wireshark.Рисунок 10 – ARP записи (PC-1).Рисунок 11 – ARP записи (PC-2).Рисунок 12 – ARP записи (PC-3).Видим, что в результате PC-1 и PC-2 занесли в свои ARP таблицы MAC-адреса друг друга. В то время как PC-3 не добавил никаких записей.Очистим записи на PC-1 и PC-2 командами:arp -d 192.168.52.2arp -d 192.168.52.1Добавим статическую запись ARP на PC-1:arp -s 192.168.52.2 08:00:27:30:4c:82Рисунок 13 – добавление статической ARP записи.Видим, что в отличие от прошлого запроса, в данном был лишь один запрос, исходящий от PC-2, и один ответ от PC-1 до PC-2.Рисунок 14 – мониторинг трафика в Wireshark.Рисунок 15 – мониторинг трафика в Wireshark.Разобравшись с работой ARP на практике, перейдем к настройке OVS при работе с ARP пакетами.Время жизни ARP-записейВ обычных операционных системах ARP-записи хранятся в ARP-кэше (таблице ARP), который используется для сопоставления IP-адресов и MAC-адресов. Эти записи имеют ограниченное время жизни, после которого они удаляются или обновляются, чтобы гарантировать актуальность данных и избежать проблем с устаревшими записями.Время жизни записей ARP регулируется системой. Например, в Linux используется параметр gc_stale_time, который определяет время жизни неактивных записей в ARP-кэше. По умолчанию это значение составляет 60 секунд, но его можно изменить:sysctl -w net.ipv4.neigh.default.gc_stale_time=<время_в_сек>В Open vSwitch (OVS) напрямую время жизни ARP-записей не отображается, так как OVS не хранит ARP-записи в классическом виде, как это делает операционная система. Вместо этого OVS управляет потоками, которые могут включать ARP-запросы и ответы. Для анализа "времени жизни" ARP-записей нужно работать с потоками (flows) и таймаутами, связанными с ними.Настройка таймаутов для ARP-трафикаЕсли требуется изменить время жизни для ARP-потоков, настройте их явно:ovs-ofctl add-flow <имя_моста> "priority=100,arp,idle_timeout=60,hard_timeout=300,actions=NORMAL"idle_timeout: Максимальное время бездействия, после которого поток будет удалён.hard_timeout: Общее время жизни потока, вне зависимости от активности.Таким образом, используя протокол Open Flow [4], можно управлять трафиком, приходящим на коммутатор. Например, в контексте ARP, можно настроить игнорирование ARP-пакетов с помощью команды:ovs-ofctl add-flow ovs0 "arp,actions=drop"Теперь, пропинговав с PC-3 (с пустой ARP таблицей) PC-1, в Wireshark видим, что PC-3, отправляет ARP-запросы, но не получает ARP-ответы, так как до PC-2 и PC-3 эти запросы не доходят вовсе. Рисунок 16 – мониторинг трафика в Wireshark.Чтобы ARP-пакеты вновь могли ходить по сети, необходимо удалить это правило командой:ovs-ofctl del-flows ovs0 “arp”Добавив вышеописанные параметры idle_timeout и hard_timeout можно настроить это правило таким образом, чтобы оно удалилось само, при отсутствии ARP-активности в сети или при определенном истечении времени.Однако не всегда в сети нужно отбрасывать все ARP-пакеты. Мы можем настроить сеть таким образом, что ARP-пакеты от PC-1 и PC-2 могут ходить по сети, но все остальные ARP-пакеты не смогут достичь конечных устройств. Настроим сеть таким образом, что PC-1 и PC-2 могут отправлять и получать ARP-пакеты, в то время как ARP-пакеты от PC-3 будут отбрасываться.Для начала необходимо узнать, как пронумерованы наши порты внутри Open Flow. ovs-ofctl show ovs0Рисунок 17 – вывод портов.Видим, что порты 1, 2 и 3 это PC-1, PC-2 и PC-3 соответственно.Настроим вышеописанное правило путем ввода команд. Для того, чтобы разрешить ARP-пакеты на порты 1 и 2.ovs-ofctl add-flow ovs0 "table=0, priority=300, arp, in_port=1, actions=NORMAL" ovs-ofctl add-flow ovs0 "table=0, priority=300, arp, in_port=2, actions=NORMAL"Теперь запретим все остальные ARP-пакеты в сети:ovs-ofctl add-flow ovs0 "table=0, priority=100, arp, actions=drop"Можем посмотреть добавленные правила командой:ovs-ofctl dump-flows ovs0Рисунок 18 – вывод правил Open Flow.Последнее правило установлено по умолчанию для нормальной обработки пакетов на коммутаторе.В wireshark видим, что при отправке ARP-запросов, пакеты могут приходить на порты 1 и 2, а на порте 3 они отбрасываются, несмотря на попытки PC-3 ответить, PC-1 не может узнать его MAC-адрес.Рисунок 19 – мониторинг трафика wireshark.ARP-spoofingОдна из распространённых атак с помощью ARP – ARP-спуфинг. ARP-spoofing (или ARP-подмена) — это тип атаки на сетевом уровне, при котором злоумышленник отправляет в локальную сеть поддельные ARP-сообщения (Address Resolution Protocol). Цель атаки — заставить устройства в сети обновить свои ARP-таблицы таким образом, чтобы они связывали IP-адрес легитимного устройства с MAC-адресом злоумышленника [5].С помощью ovs мы можем отбрасывать a ARP-пакеты, если они не соответствуют правилам, настроенным на коммутаторе. Для эксперимента поменяем PC-3 ip-адрес на адрес PC-1 192.168.52.1. Далее настроим наш коммутатор (перед этим удалив старые правила):ovs-ofctl add-flow ovs0 "table=0, priority=500, arp, arp_spa=192.168.52.1, dl_src=08:00:27:d9:11:e6, actions=NORMAL" ovs-ofctl add-flow ovs0 "table=0, priority=500, arp, arp_spa=192.168.52.2, dl_src=08:00:27:30:4c:02, actions=NORMAL"ARP-запрос от устройства с ip-адресом arp-spa и MAC-адресом dl_src пройдет по сети, то есть только эти пары разрешены.И добавим правило на отбрасывание остальных ARP-пакетов:ovs-ofctl add-flow ovs0 "table=0, priority=400, arp, actions=drop"Сначала отправим запросы с PC-3 на PC-2. Рисунок 20 – мониторинг трафика wireshark.Видим, что пакеты приходят от PC-3, но отбрасываются сразу же и PC-1 и PC-2 их не получают.Теперь отправим запросы с PC-1 на PC-2.Рисунок 21 – мониторинг трафика wireshark.Видим, что до PC-3 запросы не идут ввиду их отбрасывания. В то время как, PC-2 ответил PC-1, сказав ему свой MAC-адрес.ЗАКЛЮЧЕНИЕВ ходе проведенного исследования был изучен механизм работы протокола ARP на примере виртуального коммутатора Open vSwitch в сети, состоящей из четырех виртуальных машин, работающих под управлением отечественной операционной системы ALT Linux. Эксперимент включал настройку сети, захват ARP-пакетов с использованием tcpdump и Wireshark.Результаты проверки гипотезРеализация протокола ARP в Open vSwitch на платформе ALT Linux действительно позволяет детально изучить принцип работы данного протокола. В процессе эксперимента были успешно продемонстрированы процессы отправки и обработки ARP-запросов, а также механизмы обновления ARP-таблиц. Использование OpenFlow-правил для управления ARP-трафиком подтвердило свою эффективность как инструмента моделирования и тестирования. Это обеспечило возможность гибкого контроля над обработкой ARP-пакетов и анализа различных сетевых сценариев. Эффективность Open vSwitch в предотвращении атак типа ARP spoofing была подтверждена экспериментально. Благодаря встроенным механизмам фильтрации ARP-запросов и возможности настройки правил на основе OpenFlow удалось предотвратить несанкционированные изменения ARP-таблиц. Основные выводы свидетельствуют о высокой значимости настройки ARP в сетях, использующих виртуальные коммутаторы, для повышения надежности и защиты информационного обмена.Направления дальнейшего исследования могут включать:Изучение работы протокола ARP в условиях масштабирования сети с использованием Open vSwitch. Анализ воздействия атак на ARP (например, ARP-спуфинга) в виртуальных сетях и разработка средств защиты. Представленные результаты могут быть полезны для специалистов в области сетевой безопасности, разработчиков виртуализированных решений и исследователей, изучающих протоколы сетевого взаимодействия.СПИСОК ЛИТЕРАТУРЫPlummer D. C. An Ethernet Address Resolution Protocol: Or Converting Network Protocol Addresses to 48.bit Ethernet Address for Transmission on Ethernet Hardware. [Электронный ресурс] // URL: (дата обращения: 20.11.2024). What Is Open vSwitch? [Электронный ресурс]. – URL: (дата обращения: 20.11.2024). Kevin R. Fall, W. Richard Stevens TCP/IP Illustrated, Volume 1: The Protocols. – Boston: Addison-Wesley Professional, 2012. – 1017 c. ARP-спуфинг (ARP spoofing, ARP poisoning) [Электронный ресурс]. – URL: (дата обращения: 24.11.2024). Open Networking Foundation. OpenFlow Switch Specification. Version 1.3.0. [Электронный ресурс] – URL: (дата обращения: 24.11.2024). Уймин А. Г. Компьютерные сети. L2-технологии : практикум для СПО / А. Г. Уймин. — Саратов, Москва : Профобразование, Ай Пи Ар Медиа, 2024. — 190 c. Уймин А. Г. Сетевое и системное администрирование. Демонстрационный экзамен КОД 1.1. Учебно-методическое пособие – М.: Лань, 2021 – 480 с.
