Отключить arp в windows

Обновлено: 06.07.2024

Проблема в том, что в абонентском влане, наблюдаются постоянные запросы "arp 'who has'" со шлюза (.254) на невыданные адреса, если этот пул реальных ip адресов постоянно сканируется (например ботами).

Абонент на своём порту наблюдает долбёжку:
who has x.y.z.1? Tell x.y.z.254
who has x.y.z.2? Tell x.y.z.254
who has x.y.z.3? Tell x.y.z.254
.

Что можно сделать с этим, чтобы не было arp запросов если ip не выдан?
(Отключить динамический arp? Маршрутизировать сеть в Null0? )

Как правильно настраивать на коммутаторе такую конструкцию - ip unnumbered c реальным маршрутизируемым пулом?

Второй вопрос:
sh arp configuration показывает ARP Proxy enabled для 3000 влана.

Global configuration:
ARP Proxy: disabled
ARP timeout: 60000 Seconds
ARP table size: 2048
ARP table size after reset: 2048

Interface configuration:
vlan 3000:
ARP Proxy: enabled
ARP timeout: 60000 Seconds (Global)

Как это отключить? И можно ли?

Просто так ругается:

Я могу так переформулировать проблему:

1. Делаем ip unnumbered c пулом 192.168.0.1/16
2. Сканируем извне этот пул
3. Наблюдаем arp flood во всех абонентских vlan'ах:
who has 192.168.z.1? Tell 192.168.0.1
who has 192.168.z.2? Tell 192.168.0.1
who has 192.168.z.3? Tell 192.168.0.1
who has 192.168.z.4? Tell 192.168.0.1
.

Что с этим делать?
Как сделать, чтобы коммутатор не пытался узнать про невыданные ip, а работал только с реально выданными ip?

Что можно сделать с этим, чтобы не было arp запросов если ip не выдан?

А как коммутатор должен узнать выдан ли ip адрес или нет?

Да и в принципе причем тут Ip unnumbered. Если бы клиенты находились в одном броадкастовом домене и один из клиентов слал бы такие же арпы, то в данном случае другие абоненты также видели бы этот броадкаст. Только летел бы он от бота, а не от коммутатора.

Нет, я тестирую пока без неё и наблюдаю описанный выше эффект.

А как коммутатор должен узнать выдан ли ip адрес или нет?

Я не могу ответить на этот вопрос, т.к. начал изучать технологию ip unnumbered на вашем оборудовании.

У меня сложилось мнение, возможно ошибочное, что у других вендоров, что-то сделано по этому вопросу, т.к. arp flood достаточно большой. Мне теперь, видимо, надо собрать стенд с оборудованием другого вендора, чтобы понять что там сделано в этом направлении (например: отключение arp и работа со статической таблицей соответствий).

Вопрос ещё был про включение/отключение ARP Proxy для SuperVLAN'а

Interface configuration:
vlan 3000:
ARP Proxy: enabled
ARP timeout: 60000 Seconds (Global)

Как это отключить? И можно ли?

Просто так ругается:

Нет, я тестирую пока без неё и наблюдаю описанный выше эффект.

Без этой настройки клиенты из влана 3000 не получат доступ до клиентов из влана 3001. (арпы не пройдут)

Я не могу ответить на этот вопрос, т.к. начал изучать технологию ip unnumbered на вашем оборудовании.

У меня сложилось мнение, возможно ошибочное, что у других вендоров, что-то сделано по этому вопросу, т.к. arp flood достаточно большой. Мне теперь, видимо, надо собрать стенд с оборудованием другого вендора, чтобы понять что там сделано в этом направлении (например: отключение arp и работа со статической таблицей соответствий).

Повторюсь. Тут дело не в ip unnumbered как таковом. Если бы клиенты находились в одном броадкастовом домене и один из клиентов слал бы такие же арпы, то в данном случае другие абоненты также видели бы этот броадкаст. Только летел бы он от бота, а не от коммутатора.

Вопрос ещё был про включение/отключение ARP Proxy для SuperVLAN'а
arp proxy - это несколько другой функционал. И по дефолту он выключен.
Евгений Т писал(а): Если бы клиенты находились в одном броадкастовом домене и один из клиентов слал бы такие же арпы, то в данном случае другие абоненты также видели бы этот броадкаст. Только летел бы он от бота, а не от коммутатора.

От этого есть switchport protected-port, как я понимаю.

Евгений Т писал(а): arp proxy - это несколько другой функционал. И по дефолту он выключен.

"*" designates that the image was selected for the next boot


При включенном ip unnumbered не даст выключить arp proxy. (да и какой смысл, ведь глобально он и так выключен)

К слову, более прошаренные коллеги подсказывают, что у других вендоров такая проблема решается:

у Super Vlan это единственный режим работы, и c этим ничего не сделаешь. А нормальный ip unnumbered может и по DHCP. Кроме того, у некоторых (к примеру, juniper) при использовании ip unnumbered изучаются arp от клиентов, но при этом трафик на неиспользуемые ip молча дропается (без всяких "arp who has").

По костылям для Super Vlan - тут частично зависит, от того, какое оборудование используется. ИМХО. вижу такие варианты:

1. Перед свичами агрегации резать трафик на неиспользуемые адреса (линуксовый сервер/acl/firewall)
2. Создавать more specific маршруты в null для неиспользуемых адресов (но это какая-то полная жесть)
3. Ограничить трафик на cpu свичей агрегации, который приводит к отправке "arp who has" (тот же " mls rate-limit cef glean" или ACL c "deny-cpu" на extreme)
4. Софтина в стиле "arp sponge" от ams-ix

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012

Отображает и изменяет записи в кэше протокола ARP. Кэш ARP содержит одну или несколько таблиц, которые используются для хранения IP-адресов и разрешенных физических адресов Ethernet или Token Ring. Для каждого сетевого адаптера Ethernet или Token Ring, установленного на компьютере, существует отдельная таблица. При использовании без параметров в ARP отображаются справочные сведения.

Синтаксис

Параметры

Параметр Описание
[/a [<inetaddr>] [/n <ifaceaddr>] Отображает текущие таблицы кэша ARP для всех интерфейсов. Параметр /n учитывает регистр. Чтобы отобразить запись кэша ARP для определенного IP-адреса, используйте ARP/a с параметром инетаддр , где инетаддр — это IP-адрес. Если инетаддр не указан, используется первый подходящий интерфейс. Чтобы отобразить таблицу кэша ARP для определенного интерфейса, используйте параметр /n ифацеаддр в сочетании с параметром /a , где инетаддр — это IP-адрес, назначенный интерфейсу.
[/g [<inetaddr>] [/n <ifaceaddr>] Идентично /a.
[/d <inetaddr> [<ifaceaddr>] Удаляет запись с указанным IP-адресом, где инетаддр — это IP-адрес. Чтобы удалить запись в таблице для определенного интерфейса, используйте параметр ифацеаддр , где ифацеаддр — это IP-адрес, назначенный интерфейсу. Чтобы удалить все записи, используйте подстановочный знак звездочки (*) вместо инетаддр.
[/s <inetaddr> <etheraddr> [<ifaceaddr>] Добавляет статическую запись в кэш ARP, которая разрешает IP-адрес инетаддр с физическим адресом есераддр. Чтобы добавить статическую запись кэша ARP в таблицу для определенного интерфейса, используйте параметр ифацеаддр , где ифацеаддр — это IP-адрес, назначенный интерфейсу.
/? Отображение справки в командной строке.

Remarks

IP-адреса для инетаддр и ифацеаддр выражаются в десятичной нотации.

Физический адрес для есераддр состоит из шести байт, выраженных в шестнадцатеричной нотации и разделенных дефисами (например, 00-AA-00-4F-2A-9C).

Записи, добавленные с параметром /s , являются статическими и не выходят за пределы времени ожидания кэша ARP. Записи удаляются, если протокол TCP/IP остановлен и запущен. Чтобы создать постоянные статические записи кэша ARP, поместите соответствующие команды ARP в пакетный файл и используйте запланированные задания для запуска пакетного файла при запуске.

Примеры

Чтобы отобразить таблицы кэша ARP для всех интерфейсов, введите:

Чтобы отобразить таблицу кэша ARP для интерфейса, которому назначен IP-адрес 10.0.0.99, введите:

Чтобы добавить статическую запись кэша ARP, которая разрешает IP-адрес 10.0.0.80 к физическому адресу 00-AA-00-4F-2A-9C, введите:

Оглавление

Как работает протокол ARP

Задачи, стоящие перед протоколом, достаточно прозрачны. Как он будет настраиваться?

Базовые операции с ARP для Windows

Почистить локальный кэш ARP или удалить отдельную запись

Добавить статическую ARP-запись

Детально посмотреть кэш

Базовые операции с ARP на оборудовании Cisco

Как добавить статическую запись

Настроить включение-выключение ARP и его тип

Настроить время нахождения записи в ARP-кэше

Настройка идёт на интерфейсе, т.к. данный тайм-аут будет только у записей в ARP-кэше, сделанных через этот интерфейс.

Очистить кэш ARP

Настроить работу с incomplete ARP records

В NT 6.0 сетевой стек был ощутимо изменен (приведён в соответствие с RFC 4861), поэтому то, что действовало для XP/2003, работать в большинстве своём не будет. Схема работы ARP-кэша теперь следующая:

Как точнее считается время? Формула подсчёта такова:

ReachableTime = BaseReachableTime * (случайный коэффициент между MIN_RANDOM_FACTOR и MAX_RANDOM_FACTOR)

netsh interface ipv4 set interface имя интерфейса basereachable=количество миллисекунд

Суммарный же объём кэша IPv4-соседей можно установить так:

netsh interface ipv4 set global neighborcachelimit=количество

По умолчанию их 256. Как понятно, в случае, если соседей по среде передачи данных мало (например, есть единственный сетевой интерфейс в сеть с маской /28), этот кэш увеличивать не надо, а уменьшить вполне можно. Помните, это именно кэш ARP, т.е. явных адресов соседей по vlan плюс служебных мультикастов. Нет смысла его раздувать до огромных габаритов, если в сети банально мало узлов, нечего кэшировать особо будет.

ARP и QoS

В случае, когда сетевой интерфейс загружен трафиком, часть трафика может теряться. Увы, ни один из методов queuing не является от этого панацеей. Начиная с Cisco IOS 15.1 можно указать, что на данном интерфейсе необходимо всегда обрабатывать ARP-пакеты в первую очередь, что может значительно сократить процент потери ARP-данных. На общую загрузку это, как понятно, повлияет мало, а вот пользы может принести много. Ведь ARP-пакеты передаются без механизма подтверждения доставки и терять их не очень хорошо.

Данный механизм включается на L3-интерфейсах, командой:
arp packet-priority enable

Выключается, как понятно, no arp packet-priority enable . В Windows аналогичной процедуры нет.

ARP и NLB

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\EnableBcastArpReply

ARP и SNAP

По умолчанию, ARP вкладывается в 802.3 кадр простым, Ethernet II способом. Это можно поменять в случае, если необходима поддержка SNAP-механизма, который, как известно, нужен для мультиплексирования потоков данных на канальном уровне. Напомню, что по RFC 1042 данные IP и ARP всегда передаются поверх 802.x сетей используя связку LLC+SNAP, за исключением обычного Ethernet (802.3), где они вкладываются напрямую (см. RFC 894).

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ArpUseEtherSNAP

По умолчанию он в нуле, установив в единицу Вы получите ситуацию, что ARP-запросы будут вкладываться в SNAP (притом в LLC+SNAP, что увеличит суммарный размер кадра на 3+5=8 байт).

ARP и NUD

netsh int ipv4 set int имя интерфейса nud=enabled

ARP и DAD

netsh int ipv4 set int имя интерфейса retransmittime=миллисекунды
netsh int ipv4 set int имя интерфейса dadtransmits=попытки

ARP и WOL

netsh int ipv4 set int имя интерфейса forcearpndwolpattern=enabled

Как выключается, надеюсь, понятно. Рекомендуется к выключению на узлах, у которых нет задачи просыпаться по WOL, т.к. ускоряет обработку путём раннего отбрасывания механизмом поиска Magic Pattern указанных пакетов.
Теперь про RARP.

Протокол RARP

ARP: Я знаю искомый L3-адрес, дайте мне соответствующий ему L2-адрес.
RARP: Я знаю искомый L2-адрес, дайте мне соответствующий ему L3-адрес.

У RARP-сервера есть табличка соответствий MAC и IP-адресов, из которой он берёт указанную информацию и отправляет её. Различия на технологическом уровне будут следующими: RARP-пакеты будут иметь код вложения 0x8035 , плюс коды операций у них будут 3 для RARP-запроса и 4 для RARP-ответа.

Реализация RARP-сервера в Windows

Реализация RARP-сервера на оборудовании Cisco

Она есть. Конфигурируется в несколько этапов. По порядку:

Шаг первый: Добавляем запись для потенциального RARP-клиента (т.е. того, кто хочет получить IP-адрес). В глобальной конфигурации:

Протокол InARP (Inverse ARP)

Протокол UnARP

Протокол SLARP (Serial Line ARP)

Протокол DirectedARP

Протокол описан в RFC 1433. Сейчас как отдельный протокол не используется, хотя многие мысли, высказанные в этом RFC, достаточно дельные и повлияли, например, на формирование современного IPv6.

Безопасность ARP

Есть ряд дополнительных механизмов (которых достаточно много), которые могут помочь в этом вопросе. Например, на оборудовании Cisco есть команда:

которая, в случае включения на интерфейсе, отключит динамические записи в кэш ARP. Т.е. интерфейс перестанет слушать ARP-ответы от неизвестных клиентов и дополнять ими кэш ARP.

Механизм Proxy ARP

Как включить Proxy ARP на оборудовании Cisco

Как включить Proxy ARP в Windows

В случае, когда у Вас используется RRaS, proxy ARP работает автоматически.

Что такое и как работает Gratuitous ARP

Соответственно, в ряде ситуаций (например, много клиентов, краткие сессии) такой механизм надо отключать. Зачастую проще привязать статически целую пачку ARP-соответствий (например, когда на сервере удалённого доступа выделен пул в 20 адресов, и абоненты подключаются, делают какую-то краткую операцию и отключаются), чем постоянно форвардить в сеть эти ARP Reply.

Как настроить Gratuitous ARP на оборудовании Cisco

Если добавить в конце команды слово non-local, то будет обрабатываться вышеописанная ситуация с PPP.

Как настроить Gratuitous ARP на Windows Server

Управлять же Gratuitous ARP со стороны узла вполне можно. Для этого есть ключ реестра:

HKLM\System\CurrentControlSet\Services\TcpIp\Parameters

Как настроить Cisco ARP Optimization Feature

Заключение

Если я вспомню ещё что-то, или меня наведут на мысль, то обязательно напишу сюда в качестве дополнения к статье.


Если хакер запустит снифер (к примеру, Wireshark) в локальной сети, то ничего интересного, кроме своих бродкастов и прочей служебной информации, он не увидит. Поэтому для перехвата трафика обычно используются слабости самого протокола ARP. Разберемся, как можно компенсировать их.

1480078958_e0da_arp.jpg

ARP spoofing attack

С помощью Cain & Abel злоумышленник может вклиниться и перехватить трафик в одном широковещательном домене. Защититься от этой напасти можно при помощи механизма Dynamic ARP Inspection (Protection).

Коммутатор перехватывает все ARP-запросы и ARP-ответы на ненадежных портах, прежде чем перенаправлять их. Также на ненадежных портах коммутатор проверяет соответствие MAC-адреса IP-адресу.

Проверка соответствия MAC-адреса IP-адресу может выполняться на основании статических записей или базы данных привязки DHCP.

На коммутаторах Cisco этот механизм во VLAN включается командой

А вот как выглядит настройка доверенного порта:

Если у тебя нет коммутатора, способного защитить от атак подобного типа, можешь установить arpwatch: это демон, который отслеживает соответствие между IP- и MAC-адресами и при обнаружении аномалий фиксирует это в системном логе. Документацию можно глянуть вот здесь.

Как сам понимаешь, главный недостаток arpwatch, как и, в принципе, всех программ подобного рода, в том, что он должен работать на хостах, которые он защищает, или хотя бы на маршрутизаторе, ведущем в защищаемую сеть. Однако маршрутизатор не всегда работает под управлением UNIX или Linux. Чаще всего это специализированный аппаратный маршрутизатор или коммутатор третьего уровня.

Чтобы защитить такой маршрутизатор, нужно получать от него ARP-таблицу по SNMP и анализировать ее на другой машине. Так, к примеру, действует программа remarp.

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