Настройка arp в windows

The following tutorial explains how to use the arp command in Windows to view and clear the ARP cache.

The Windows operating system maintains an ARP Cache—A table that contains the recent mappings of IP addresses to MAC addresses. The arp command is the Windows command we use to view and modify the ARP table.

Command Options

The Windows arp command has only a couple of options: -a to view the ARP cache and -d to clear the ARP cache.

-a Use this option to display the ARP table.
-d Use this option to clear the ARP cache.
-s Use this option to add manual entries to the ARP table.

You can run the arp command from both CMD and Windows PowerShell.

Display ARP Table

To view the ARP cache on a Windows system, run the following command:

arp -a

Running arp -a on Windows shows output similar to the following:

view windows ARP cache

If the computer has multiple network interfaces, you will see an ARP table under each interface. We can view the ARP table of a specific interface with the -N option by specifying the IP address of the NIC.

arp -a -N 192.168.1.245

Clear ARP Cache

To clear the ARP cache, we use the -d option, as shown in the following example:

arp -d

The above command deletes all entries from the ARP table. To delete a single entry from the table, specify the IP address of the destination host, as shown in the following example:

arp -d 10.0.0.10

In the above example, the arp command deletes the MAC address associated with host 10.0.0.10.

clear arp cache

Add a Static Entry to the ARP Table

The -s option of the Windows arp command allows administrators to add manual entries to the ARP cache. To add a static entry, you will run the arp command as follows:

arp -s 10.0.0.20 00-aa-00-62-c6-09

In the arp -a output, static entries are marked as «static» in the type column.

arp command windows

Address Resolution Protocol

ARP stands for Address Resolution Protocol. It is a TCP/IP protocol that resolves the MAC address of a destination host.

When the host_a needs to send a packet to host_b, it needs to know the MAC address of host_b. If host_a does not know the MAC address of host_b, it will send a broadcast message to the network asking for the MAC address (all devices in the local network receive this message).

Once the broadcast message is received, host_b responds to host_a with its MAC address. This process is known as Address Resolution.

ARP (англ. Address Resolution Protocol — протокол определения адреса) — протокол в компьютерных сетях, предназначенный для определения MAC-адреса по IP-адресу другого компьютера. Существуют следующие типы сообщений ARP: запрос ARP (ARP request) и ответ ARP (ARP reply). Система-отправитель при помощи запроса ARP запрашивает физический адрес системы-получателя. Ответ (физический адрес узла-получателя) приходит в виде ответа ARP.

Компьютер А (IP-адрес 192.168.1.1) и компьютер Б (IP-адрес 192.168.1.2) соединены сетью Ethernet. Компьютер А желает переслать пакет данных на компьютер Б, IP-адрес компьютера Б ему известен. Компьютеру А для осуществления передачи через Ethernet требуется узнать MAC-адрес компьютера Б в сети Ethernet. Для этой задачи и используется протокол ARP.

Компьютер А отправляет широковещательный запрос, адресованный всем компьютерам в одном с ним широковещательном домене. Суть запроса: «компьютер с IP-адресом 192.168.1.2, сообщите свой MAC-адрес компьютеру с МАС-адресом …». Этот запрос доставляется всем устройствам в том же сегменте Ethernet. Компьютер Б отвечает компьютеру А на запрос и сообщает свой MAC-адрес.

Протокол имеет буферную память (ARP-таблицу), в которой хранятся пары адресов (IP-адрес, MAC-адрес) с целью уменьшения количества посылаемых запросов, следовательно, экономии трафика и ресурсов. Записи ARP-таблицы бывают двух вид видов: статические и динамические. Статические добавляются самим пользователем, динамические же — создаются и удаляются автоматически. При этом в ARP-таблице всегда хранится широковещательный физический адрес FF:FF:FF:FF:FF:FF.

Команда arp в Windows

Позволяет просмотреть ARP-таблицу, добавить в нее новую запись или удалить существующую:

> arp
Отображение и изменение таблиц преобразования IP-адресов в физические,
используемые протоколом разрешения адресов (ARP).

ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]

  -a            Отображает текущие ARP-записи, опрашивая текущие данные
                протокола. Если задан inet_addr, то будут отображены IP и
                физический адреса только для заданного компьютера. Если
                ARP используют более одного сетевого интерфейса, то будут
                отображаться записи для каждой таблицы.
  -g            То же, что и параметр -a.
  -v            Отображает текущие ARP-записи в режиме подробного
                протоколирования. Все недопустимые записи и записи в
                интерфейсе обратной связи будут отображаться.
  inet_addr     Определяет IP-адрес.
  -N if_addr    Отображает ARP-записи для заданного в if_addr сетевого
                интерфейса.
  -d            Удаляет узел, задаваемый inet_addr. Параметр inet_addr может
                содержать знак шаблона * для удаления всех узлов.
  -s            Добавляет узел и связывает адрес в Интернете inet_addr
                с физическим адресом eth_addr.  Физический адрес задается
                6 байтами (в шестнадцатеричном виде), разделенных дефисом.
                Эта связь является постоянной
  eth_addr      Определяет физический адрес.
  if_addr       Если параметр задан, он определяет адрес интерфейса в
                Интернете, чья таблица преобразования адресов должна
                измениться. Если параметр не задан, будет использован
                первый доступный интерфейс.
Пример:
  > arp -s 157.55.85.212   00-aa-00-62-c6-09  .. Добавляет статическую запись.
  > arp -a

Создать запись в ARP-таблице:

> arp -s IP-адрес MAC-адрес

Вывести записи ARP-таблицы:

> arp -a
Интерфейс: 192.168.53.1 --- 0x5
  адрес в Интернете      Физический адрес      Тип
  192.168.53.255        ff-ff-ff-ff-ff-ff     статический
  224.0.0.22            01-00-5e-00-00-16     статический
  224.0.0.251           01-00-5e-00-00-fb     статический
  224.0.0.252           01-00-5e-00-00-fc     статический
  239.255.255.250       01-00-5e-7f-ff-fa     статический

Интерфейс: 192.168.110.2 --- 0x14
  адрес в Интернете      Физический адрес      Тип
  192.168.110.1         04-bf-6d-9a-c7-a8     динамический
  192.168.110.3         08-00-27-92-ce-01     динамический
  192.168.110.255       ff-ff-ff-ff-ff-ff     статический
  224.0.0.22            01-00-5e-00-00-16     статический
  224.0.0.251           01-00-5e-00-00-fb     статический
  224.0.0.252           01-00-5e-00-00-fc     статический
  239.255.255.250       01-00-5e-7f-ff-fa     статический
  255.255.255.255       ff-ff-ff-ff-ff-ff     статический

Интерфейс: 172.28.128.1 --- 0x15
  адрес в Интернете      Физический адрес      Тип
  172.28.128.255        ff-ff-ff-ff-ff-ff     статический
  224.0.0.22            01-00-5e-00-00-16     статический
  224.0.0.251           01-00-5e-00-00-fb     статический
  224.0.0.252           01-00-5e-00-00-fc     статический
  239.255.255.250       01-00-5e-7f-ff-fa     статический

Команда arp в Linux

Позволяет просмотреть ARP-таблицу, добавить в нее новую запись или удалить существующую:

$ arp --help
Использование:
  arp [-vn] [<HW>] [-i <интерфейс>] [-a] [<имя_компьютера>]       <- Отобразить кэш arp
  arp [-v]          [-i <if>] -d  <host> [pub]                    <- Удалить элемент ARP
  arp [-vnD] [<HW>] [-i <интерфейс>] -f [<имя_файла>]             <- Добавить запись в arp из файла
  arp [-v]   [<HW>] [-i <if>] -s  <host> <hwaddr> [temp]          <- Добавить элемент
  arp [-v]   [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub

        -a показать (все) хосты в альтернативном (BSD) стиле
        -e                       display (all) hosts in default (Linux) style
        -s, --set установить новую запись ARP
        -d, --delete удалить определенную запись
        -v, --verbose более детальный вывод
        -n, --numeric не преобразовывать адреса в имена
        -i, --device указание сетевого интерфейса (например, eth0)
        -D, --use-device прочитать <hwaddr> из заданного устройства
        -A, -p, --protocol указание семейства протоколов
        -f, --file считать новые записи из файла или из /etc/ethers

  <HW>=Используйте '-H <hw>' для указания типа аппаратного адреса. По умолчанию: ether
  Список всех возможных типов HW (которые поддерживают ARP)
    ash (Ash) ether (Ethernet) ax25 (AMPR AX.25) 
    netrom (AMPR NET/ROM) rose (AMPR ROSE) arcnet (ARCnet) 
    dlci (Frame Relay DLCI) fddi (Fiber Distributed Data Interface) hippi (HIPPI) 
    irda (IrLAP) x25 (универсальный X.25) eui64 (Универсальный EUI-64) 

Создать запись в ARP-таблице:

> sudo arp -s IP-адрес MAC-адрес

Вывести записи ARP-таблицы:

$ arp
Адрес                    HW-тип  HW-адрес            Флаги  Маска          Интерфейс
192.168.110.13           ether   08:00:27:78:7a:c2   C                     enp0s3
192.168.110.2            ether   1c:1b:0d:e6:14:bd   C                     enp0s3
_gateway                 ether   04:bf:6d:9a:c7:a8   C                     enp0s3

Альтернативный способ просмотра записей таблицы — команда

$ ip neigh
192.168.110.3 dev enp0s3 lladdr 08:00:27:78:7a:c2 REACHABLE
192.168.110.2 dev enp0s3 lladdr 1c:1b:0d:e6:14:bd STALE
192.168.110.1 dev enp0s3 lladdr 04:bf:6d:9a:c7:a8 STALE

Поиск:
Linux • Windows • Команда • Локальная сеть • ARP • IP адрес • MAC адрес • Протокол • Protocol • Ethernet

Каталог оборудования

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Производители

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Функциональные группы

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Большинство рассматриваемых сетевых утилит для полноценной работы
требуют наличия административных привилегий. Для операционных систем
семейства Windows 2000/XP достаточно того, чтобы пользователь работал под учетной
записью члена группы администраторов. Интерпретатор командной строки
cmd.exe можно запустить с использованием меню Пуск — Выполнить — cmd.exe.
В среде операционных систем Widows Vista/Windows 7 интерпретатор
cmd.exe должен быть запущен для выполнения с использованием пункта контекстного
меню «Запустить от имени администратора». Командные файлы, в которых используются
сетевые утилиты, также должны выполняться в контексте учетной записи с привилегиями
администратора.

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

В описании команд используется

< текст > — текст в угловых скобках. Обязательный параметр

[ текст ] — текст в квадратных скобках. Необязательный параметр.

( текст ) — текст в круглых скобках. Необходимо выбрать один из параметров.

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

Многоточие … — возможно повторение параметров.

Краткое описание и примеры использования сетевых утилит командной строки
Windows:

ARP

IPCONFIG

GETMAC

NBTSTAT

NETSH

NETSTAT

NET

NSLOOKUP

PATHPING

PING

ROUTE

TELNET

TRACERT

Примеры практического использования.

Утилита ARP.EXE

    Утилита командной строки ARP.EXE присутствует во всех версиях Windows и имеет один и тот же синтаксис.

Команда
ARP позволяет просматривать и изменять записи в кэш ARP (Address Resolution Protocol — протокол разрешения адресов), который представляет собой таблицу соответствия IP-адресов аппаратным адресам сетевых устройств. Аппаратный адрес — это уникальный, присвоенный при изготовлении, 6-байтный адрес сетевого устройства, например сетевой карты. Этот адрес также
часто называют MAC-адресом (Media Access Control — управление доступом к среде) или Ethernet-адресом. В сетях Ethernet передаваемые и принимаемые данные всегда содержат MAC-адрес источника (Source MAC) и MAC-адрес приемника (Destination MAC). Два старших бита MAC-адреса используются для идентификации типа адреса:

— первый бит — одиночный (0) или групповой (1) адрес.

— второй бит — признак универсального (0) или локально администрируемого (1) адреса.

Следующие 22 бита адреса содержат специальный код производителя MFG или OUI — универсальный код организации.

Другими словами, любое сетевое устройство имеет аппаратный адрес, состоящий из 2- х частей. Старшую часть MAC — адреса, централизованно выделяемую по лицензии каждому производителю сетевого оборудования. Например, 00:E0:4C — для сетевых устройств REALTEK SEMICONDUCTOR CORP. Крупным производителям сетевого оборудования обычно принадлежит несколько диапазонов OUI . И младшую часть MAC-адреса, которая формируется при производстве оборудования, и уникальна для каждого экземпляра устройства.

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

— в сеть отправляется широковещательный запрос (ARP-request), принимаемый всеми сетевыми устройствами. Он содержит IP и Ethernet адреса отправителя, а также, целевой IP-адрес, для которого выполняется определение MAC-адреса.

— каждое устройство, принявшее запрос проверяет соответствие целевого IP-адреса, указанного в запросе, своему собственному IP-адресу. При совпадении, отправителю передается ARP-ответ (ARP-Reply), в котором содержатся IP и MAC адреса ответившего узла. Кадр с ARP-ответом содержит IP и MAC адреса как отправителя, так и получателя-составителя запроса.

— информация, полученная в ARP-ответе, заносится в ARP-кэш и может использоваться для обмена данными по IP-протоколу для данного узла. ARP-кэш представляет собой таблицу в оперативной памяти, каждая запись в которой содержит IP, MAC и возраст их разрешения. Возраст записи учитывается для того, чтобы обеспечить возможность повторного выполнения процедуры ARP при каком либо изменении соответствия адресов.

Синтаксис ARP.EXE:


arp[-a [InetAddr] [-NIfaceAddr]] [-g [InetAddr] [-NIfaceAddr]] [-dInetAddr [IfaceAddr]] [-sInetAddr EtherAddr [IfaceAddr]]

-a[ InetAddr] [ -NIfaceAddr] — ключ -a — отображает текущую таблицу ARP для всех интерфейсов. Для отображения записи конкретного IP-адреса используется ключ -a с параметром InetAdd , в качестве которого указывается IP-адрес. Если узел, отправляющий ARP-запрос имеет несколько сетевых интерфейсов, то для отображения таблицы ARP
нужного интерфейса, можно использовать ключ -N с параметром IfaceAddr, в качестве которого используется IP-адрес интерфейса.

-g[ InetAddr] [ -NIfaceAddr] ключ -g идентичен ключу -a.

-d InetAddr[ IfaceAddr] — используется для удаления записей из ARP-кэш. Возможно удаление по выбранному IP или полная очистка ARP кэш. Для удаления всех записей, вместо адреса используется символ * Если имеется несколько сетевых интерфейсов, то очистку можно выполнить для одного из них, указав в поле IfaceAddr его IP .

-s InetAddr EtherAddr [ IfaceAddr] — используется для добавления статических записей в таблицу ARP. Статические записи хранятся в ARP-кэш постоянно. Обычно, добавление статических записей используется для сетевых устройств, не поддерживающих протокол ARP или не имеющих возможности ответить на ARP- запрос.

/? — получение справки по использованию arp.exe. Аналогично — запуск arp.exe без параметров.

Примеры использования ARP:

arp -a — отобразить все записи таблицы ARP.

arp -a 192.168.0.9 — отобразить запись, соответствующую IP-адресу 192.168.0.9

arp -a 192.168.1.158 -N 192.168.1.1 — отобразить таблицу ARP для адреса 192.168.1.158 на сетевом интерфейсе 192.168.1.1

arp -a -N 10.164.250.148 — отобразить все записи таблицы ARP на сетевом интерфейсе 10.164.250.148 .

arp -s 192.168.0.1 00-22-15-15-88-15 — добавить в таблицу ARP статическую запись, задающую соответствие IP — адреса 192.168.0.1 и MAC-адреса 00-22-15-15-88-15

arp -s 192.168.0.1 00-22-15-15-88-15 192.168.0.56 — то же самое, что и в предыдущем случае, но с указанием сетевого интерфейса, для которого выполняется добавление статической записи.

arp -d 192.168.1.1 192.168.1.56 удаление записи из таблицы ARP для IP-адреса 192.168.1.1 на сетевом интерфейсе 192.168.1.56

arp -d * — полная очистка таблицы ARP. Аналогично — arp -d без параметров. Если имеется несколько сетевых интерфейсов, то очистка может быть выполнена только для одного из них — arp -d * 192.168.0.56.

    Некоторые замечания по практическому использованию команды ARP:

— разрешение адресов по протоколу ARP выполняется только при операциях передачи данных по протоколу IP .

— время жизни записей в таблице ARP ограничено, поэтому, перед просмотром ее содержимого для конкретного адреса нужно выполнить ping на этот адрес.

— если ответ на ping не приходит, а запись для данного IP-адреса присутствует в таблице ARP, то этот факт можно интерпретировать как блокировку ICMP-пакетов брандмауэром пингуемого узла.

— невозможность подключения к удаленному узлу по протоколам TCP или UDP при наличии записей в таблице ARP для целевого IP, может служить признаком отсутствия служб обрабатывающих входящие подключения, или их блокировки брандмауэром (закрытые порты).

— ARP протокол работает в пределах локального сегмента сети. Поэтому, если выполнить ping на внешний узел ( например ping yandex.ru ), то в таблице ARP будет присутствовать запись для IP — адреса маршрутизатора, через который выполняется отправка пакета во внешнюю сеть.

При использовании команды ARP для отображения таблицы, не помещающейся на экране, удобно пользоваться командой постраничного вывода more или перенаправлением стандартного вывода в файл:

arp -a | more

arp -a > C:\myarp.txt

Утилита IPCONFIG .

    Утилита командной строки IPCONFIG присутствует во всех версиях Windows. Некоторые параметры командной строки не поддерживаются в версиях предшествующих Windows Vista/Windows 7

Команда IPCONFIG используется для отображения текущих настроек протокола TCP/IP и для обновления некоторых параметров, задаваемых при автоматическом конфигурировании сетевых интерфейсов при использовании протокола Dynamic Host Configuration Protocol (DHCP).

Синтаксис:


ipconfig [/allcompartments] [/all] [/renew[Adapter]] [/release[Adapter]] [/renew6[Adapter]] [/release6[Adapter]] [/flushdns] [/displaydns] [/registerdns] [/showclassidAdapter] [/setclassidAdapter [ClassID]]

Параметры:

/? — отобразить справку по использованию IPCONFIG

/all — отобразить полную конфигурацию настроек TCP/IP для всех сетевых адаптеров. Отображение выполняется как для физических интерфейсов, так и для логических, как например, dialup или VPN подключения.

/allcompartments — вывести полную информацию о конфигурации TCP/IP для всех секций. Применимо для Windows Vista/Windows 7 .

/displaydns — отобразить содержимое кэш службы DNS — клиент.

/flushdns — сбросить содержимое кэш службы DNS — клиент.

/registerdns — инициировать регистрацию записей ресурсов DNS для всех адаптеров данного
компьютера. Этот параметр используется для изменения настроек DNS сетевых подключений без перезагрузки компьютера.

/release[Adapter] — используется для отмены автоматических настроек сетевого адаптера, полученных от сервера DHCP. Если имя адаптера не указано, то отмена настроек выполняется для всех адаптеров.

/release6[Adapter] — отмена автоматических настроек для протокола IPv6

/renew[Adapter] — обновить конфигурацию для сетевого адаптера настроенного на получение настроек от сервера DHCP. Если имя адаптера не указано, то обновление выполняется для всех адаптеров.

/renew6[Adapter] — как и в предыдущем случае, но для протокола IPv6

/showclassid Adapter и /setclassid Adapter[ ClassID] — эти параметры применимы для Windows Vista / Windows 7 и используются для просмотра или изменения идентификатора Class ID, если он получен от DHCP — сервера при конфигурировании сетевых настроек.

    Изменение сетевых настроек с помощью команды IPCONFIG, в основном, применимо к тем сетевым адаптерам, которые настроены на автоматическое конфигурирование с использованием службы динамической настройки основных параметров на сетевом уровне DHCP (Dynamic Host Configuration Protocol) или службы автоматической настройки приватных IP — адресов APIPA (Automatic Private IP Addressing) .

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

Для имен адаптеров применимо использование символа * в качестве шаблона:

* — любое имя

Локальн* — имя адаптера начинается с » Локальн «

* сети * — имя адаптера содержит строку » сети »

Примеры использования:

ipconfig — отобразить базовые сетевые настройки для всех сетевых адаптеров. BR>

ipconfig /all — отобразить все сетевые настройки для всех сетевых адаптеров.

ipconfig /renew «Подключение по локальной сети 2» — обновить сетевые настройки, полученные от DHCP — сервера только для адаптера с именем » Подключение по локальной сети 2″

ipconfig /dysplaydns — вывести на экран содержимое кэш службы разрешения имен DNS

ipconfig /showclassid «Подключение по локальной сети» — отобразить все допустимые для этого адаптера идентификаторы классов DHCP.

ipconfig /setclassid «Local Area Connection» TEST — установить для адаптера с именем «Local Area Connection» идентификатор класса DHCP «TEST». Если идентификатор класса DHCP не указан, то он будет удален.

Пример отображаемой конфигурации сетевого адаптера :


Ethernet adapter Подключение по локальной сети :
— имя адаптера

DNS-суффикс подключения . . . . . :

— DNS-суффикс из настроек сетевого подключения


Описание. . . . . . . . . . . . . : Realtek 8139d Adapter #2
— описание адаптера.


Физический адрес. . . . . . . . . : 00-14-02-7B-ED-67
— MAC- адрес данного адаптера.

DHCP включен. . . . . . . . . . . : Да

— признак использования DHCP для конфигурирования сетевого адаптера


Автонастройка включена. . . . . . : Да
— признак автоматической настройки параметров адаптера с использованием функции автоматического назначения адресов (APIPA) при отсутствии сервера DHCP. Режим определяется значением ключа реестра

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\GUID адаптера\IPAutoconfigurationEnabled

Значение 0 (тип DWORD) параметра IPAutoconfigurationEnabled отключает APIPA. Если значение этого параметра равно 1 , или параметр отсутствует в реестре, APIPA активируется.


Автонастройка IPv4-адреса . . . . : 169.254.254.18(Основной)
— автоматически полученный локальный адрес, если используется APIPA


Локальный IPv6-адрес канала . . . : fe80::7c22:e7f8:3a71:8249%16(Основной)
— локальный IPv6 адрес, если используется адресация IPv6


IPv4-адрес. . . . . . . . . . . . : 10.10.11.77(Основной)
— используемый для данного адаптера IPv4 — адрес.


Маска подсети . . . . . . . . . . : 255.255.224.0
— маска подсети.


Аренда получена. . . . . . . . . . : 2 марта 2012 г. 22:44:48
— дата и время получения сетевой конфигурации от сервера DHCP


Срок аренды истекает. . . . . . . . . . : 3 марта 2012 г. 2:31:27
— срок истечения аренды сетевых настроек. Определяется сервером DHCP.


Основной шлюз. . . . . . . . . : 10.10.11.1
— IP — адрес маршрутизатора, используемого в качестве шлюза по умолчанию.


Код класса DHCPv4. . . . . . . . . . : TEST
— код класса DHCP, если он существует.

DHCP-сервер. . . . . . . . . . . : 10.10.11.11 —

— IP-адрес DHCP-сервера, от которого получена сетевая конфигурация.

Следующие 2 параметра (идентификатор участников DHCP — DUID и идентификатор арендованного адреса IAID) присутствуют при автоматическом конфигурировании настроек протокола IPv6 . В крупных сетях могут присутствовать несколько серверов DHCPv6. При автоматическом конфигурировании сетевого адаптера, все они получают от клиента специальный запрос DHCP REQUEST. Каждый из них проверяет, ему ли был направлен запрос. Сервер не приступает к обработке пакетов с DUID, отличающимся от его собственного. При совпадении DUID, сервер помечает адрес как присвоенный и возвращает ответ DHCP REPLY. На этом обработка запроса завершается.

IAID — это специальный идентификатор арендуемого IPv6-адреса длиной 4 байта. Клиенту выделяется адрес на время, определенное сервером (срок аренды). Когда предпочитаемый срок действия адреса заканчивается, клиент отправляет серверу пакет DHCP RENEW с запросом на продление этого срока. В сообщение включается идентификатор IAID, код которого также хранится в базе данных DHCP сервера. Если сервер готов продлить срок действия адреса, он отправляет ответ DHCP REPLY и клиент получает возможность использования арендованного адреса без повторного получения настроек.


IAID DHCPv6 . . . . . . . . . . . : 234890384
— идентификатор арендованного адреса IAID


DUID клиента DHCPv6 . . . . . . . : 00-01-00-01-14-E2-78-C0-00-0C-1E-7C-29-E3
— идентификатор участников DHCP


DNS-серверы. . . . . . . . . . . : 94.25.128.74

                                              94.25.208.74

— адреса DNS — серверов, используемых для разрешения имен в IP-адреса узлов.


NetBios через TCP/IP. . . . . . . . : Включен
— режим использования NetBios через протокол TCP/IP.

Утилита GETMAC .

    Утилита командной строки GETMAC присутствует в версиях Windows XP и старше. Используется для получения аппаратных адресов сетевых адаптеров (MAC-адресов) как на локальном, так и на удаленном компьютере.

Синтаксис:


GETMAC [/S <система> [/U <пользователь> [/P <пароль>]]] [/FO <формат>]
[/NH] [/V]

Параметры:

/S <система> — имя или IP-адрес удаленного компьютера.

/U [<домен>\]<пользователь> Имя пользователя. Если не задано, то используется текущая учетная запись.

/P [<пароль>] — Пароль. Если задан параметр /U и не задан пароль, то он будет запрошен.

/FO <формат> — Формат, в котором следует отображать результаты запроса. Допустимые форматы: «TABLE» (таблица), «LIST» (список), «CSV» (разделяемые запятыми поля). Если параметр не задан, то используется вывод в виде таблицы (TABLE) .

/NH — Указывает, что строка заголовков столбцов не
должна отображаться в результирующем файле.
форматов TABLE и CSV.

/V — Отображение подробной информации. В отображаемой информации присутствует имя сетевого подключения и название сетевого адаптера.

/? — Вывод справки по использованию команды.

Примеры:

GETMAC /? — отобразить краткую справку об использовании GETMAC.

GETMAC /FO csv — выдать информации о MAC-адресах всех существующих на локальном компьютере сетевых адаптеров в формате CSV (полей с разделителями в виде запятой)

GETMAC /S COMPUTER /NH /V — получить MAC адреса сетевых адаптеров для удаленного компьютера COMPUTER, не отображать заголовки столбцов в таблице и использовать отображение подробной информации. Для подключения к удаленному компьютеру используется текущая учетная запись пользователя.

GETMAC /S 192.168.1.1 /NH /V — то же самое, но вместо имени компьютера задан его IP-адрес.

GETMAC /S COMPUTER /U user /P password — получить MAC — адрес адаптеров удаленного компьютера COMPUTER. Для подключения к нему используется имя пользователя «user» и пароль «password»

GETMAC /S COMPUTER /U mydomain\user — для подключения к удаленному компьютеру используется учетная запись пользователя «user» в домене «mydomain». Пароль пользователя вводится по запросу.

GETMAC /S COMPUTER /U mydomain\user /P password — то же самое, что и в предыдущем случае, но пароль задан в командной строке.

Пример выводимой информации по GETMAC без параметров:


Физический адрес             Имя транспорта

=================== ==========================================================

00-00-DB-CE-97-9C            \Device\Tcpip_{85E2B831-859B-45D4-9552-0E6DCFB57391}

00-2E-20-6B-0D-07             \Device\Tcpip_{158A50DF-F6F2-4909-8F15-DF94B51A81FF}

По имени транспорта можно найти в реестре записи, связанные с данным сетевым адаптером.

http://ab57.ru/cmdlist.html

Привет.

Многие думают, что если протокол мелкий и незаметный, то про него не надо ничего знать. Нетрудно догадаться, что это не так, и именно детальное знание подобных низкоуровневых и “простых” технологий является тем, что отличает профессионала от гуглоиксперта или фанатика, верующего, что в его любимой ОС всё работает “само по себе и априори идеально”.

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

Семейка протоколов ARP

  • Протокол ARP
    • Вкратце про сам протокол и формат заголовка
    • Базовые настройки и тюнинг – тайм-ауты и кэш
    • ARP и QoS
    • ARP и NLB
    • ARP и SNAP
    • ARP и NUD
    • ARP и DAD
    • ARP и WOL
    • ARP и РПГ-7
  • Протокол RARP
  • Протокол InARP
  • Протокол UNARP
  • Протокол SLARP
  • Протокол DirectedARP
  • Безопасность ARP
  • Механизм Proxy ARP
  • Что такое и как работает Gratuitous ARP
  • Cisco ARP Optimization Feature – что это?

Начнём.

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

Протокол Address Resolution Protocol (ARP) используется для простой задачи – выяснить по известному адресу сетевого уровня (IPv4) неизвестный адрес канального уровня (обычно это MAC-адрес 802.3, но возможны и другие варианты).

Данные ARP вкладываются в протокол канального уровня (что напрямую, что через SNAP-заголовок) и являются, если рассуждать по логике “уровень протокола определяется по глубине вложения”, уже не протоколом канального уровня, а вот по функционалу ARP остаётся протоколом канального уровня, т.к. работает в пределах домена широковещания. Это я к тому, что модель OSI надо знать не хорошо, а очень хорошо, и различать два варианта определения “на каком уровне работает данный протокол”.

Например протокол RIPv2 занимается передачей маршрутной информации. Данные этого протокола вкладываются внутрь UDP, и по “глубине вложения” RIP будет “внутри транспортного уровня”. Только вот решать задачу он будет сетевого уровня – маршрутизацию. А допустим его коллега OSPF будет для передачи своих данных использовать не UDP или какой-либо другой протокол транспортного уровня, а напрямую вкладывать свои данные в IP-датаграммы, имея свой личный код вложения. Но при этом заниматься опять-таки будет задачей сетевого уровня – маршрутизации.

Так что будьте внимательны в терминологии – и “протокол выполняет задачи уровня N модели OSI” – это одно, а “протокол технически реализуется как вложение уровня N модели OSI” – другое.

Продолжим про ARP. Для идентификации ARP внутри кадра (в случае с 802.3 Ethernet надо учитывать, что они – кадры – бывают разные) будет использоваться код вложения 0x0806. В состав ARP-пакета будет входить следующие интересные поля:

  • Тип оборудования (длина поля – 2 байта): Код, обозначающий тип среды, в которой идёт работа. Для Ethernet’ов это будет единица, готы могут ставить 5 (для протокола Chaos), эстеты – 149.
  • Тип протокола сетевого уровня, про который идёт речь в ARP-пакете (длина поля – 2 байта): Стандартный код протокола, такой же, как в 802.3, например. То есть для IPv4 – это 0x0800.
  • Длина адреса канального уровня (длина поля – 1 байт): Сколько байт в адресе канального уровня. Например, для 802.3 это будет 6.
  • Длина адреса сетевого уровня (длина поля – 1 байт): Сколько байт в адресе сетевого уровня. Например, для IPv4 это будет 4.
  • Код операции ARP (длина поля – 2 байта): У операции ARP Request это единица, у ARP Response – двойка. Да, такой вот обильный в плане функционала протокол. :)
  • Адрес канального уровня отправителя (SRC MAC, говоря проще) – уникастовый MAC-адрес интерфейса, с которого отправляется запрос.
  • Адрес сетевого уровня отправителя (SRC IP, говоря проще) – уникастовый IP-адрес интерфейса, с которого отправляется запрос. В случае нескольких IP-адресов на интерфейсе – основной адрес интерфейса (primary).
  • Искомый адрес канального уровня – в случае ARP – широковещательный 802.3 адрес вида FF-FF-FF-FF-FF-FF. Ведь очевидно, что раз делается ARP-запрос вида “я знаю только искомый IP-адрес”, то искомый адрес канального уровня неизвестен, поэтому сюда пишется “заглушка” из броадкаста. На фактическое распространение она не влияет, т.к. в самом Ethernet-кадре, в котором вложен ARP-запрос, уже указан броадкаст как DST MAC.
  • Искомый адрес сетевого уровня – в случае ARP – тот самый IP-адрес, для которого надо найти соответствующий MAC.

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

Базовые настройки и операции с ARP на Windows-системах

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

Кэш: arp -d

Запись: arp -d ip-адрес

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

arp -s ip-адрес mac-адрес

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

arp -a -v

Будут видны все типы записей – и static, и dynamic, и invalid. Сам вывод будет разбит по критерию привязки записей к интерфейсам – в начале каждого раздела будет выводиться primary IP интерфейса, а потом его внутренний идентификатор (Вы можете посмотреть табличку интерфейсов и их ID командой netsh int ipv4 sh int).

Есть и более современный вариант отображения кэша:netsh interface ipv4 show nei. В этой команде вывод также разбит по интерфейсам (правда, пишутся их человеческие названия, а не primary IP), статические и системные записи будут называться Permanent, обычные – Reachable (если доступны), Unreacheable (если нет) и Stale (если запись устарела).

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

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

(config)#arp ip-адрес или “vrf имя-vrf” mac-адрес тип-вложения тип-интерфейса

Из интересного тут разве что тип вложения – можно указать, какой именно вариант вложения (из реально возможных сейчас – ARPA или SNAP) будет у записи. Параметр “Тип интерфейса” можно не указывать.

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

(config-if)#arp arpa или frame-relay или snap

Как понятно, обычно тип ARP будет ARPA и в модификации нуждаться тоже особо не будет. Внимание – типы не являются взаимоисключающими – т.е. можно сделать и arp arpa и arp snap, и это лишь покажет, что на данном интерфейсе надо обрабатывать и тот и тот варианты.

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

(config-if)#arp timeout секунды

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

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

Весь:

#clear arp-cache

Отдельную запись:

#clear arp-cache ip-адрес

Все записи, привязанные к конкретному интерфейсу:

#clear arp-cache интерфейс

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

Данные настройки будут нужны, чтобы задать поведение системы в случае “Я точно знаю, что есть сосед с таким IP-адресом, но у меня нет его MAC-адреса”.

Вы можете задать общее число таких адресов, находящихся “в процессе поиска”, а также количество попыток

Включение:

(config)#ip arp incomplete enable

Количество адресов:

(config)#ip arp incomplete entries число

Количество попыток:

(config)#ip arp incomplete retry число

Базовый тюнинг ARP – тайм-ауты и кэш

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

  • Есть кэш “соседей” – для IPv4 и IPv6
  • Запись туда идёт после получения ARP-ответа, после чего у строки кэша появляется статус “Reachable”
  • Статус теряется в случае отказа интерфейса или по тайм-ауту – если прошло более “ReachableTime” секунд, то статус меняется на “Stale”
  • Если хочется отправить пакет узлу, строка кэша для которого находится в состоянии “Stale”, то предварительно надо отправить ARP-запрос

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

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

Параметры, от которых идёт вычисление, выглядят так: BaseReachableTime = 30 секунд, MIN_RANDOM_FACTOR = 0.5, а MAX_RANDOM_FACTOR – 1.5. Параметр BaseReachableTime изменяем командой:

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

Заметьте, для каждого интерфейса это устанавливается отдельно. Ранее действовавшее общесистемное значение по умолчанию в 120 секунд, таким образом, теперь не актуально. Я бы рекомендовал увеличить это значение до тех же 2х минут, что были раньше – количество трафика снизится, а минусов практически нет – узлы, которые сменят MAC за время устаревания кэша, сами об этом уведомят.

В случае работы с оборудованием Cisco, данный параметр – тайм-аут записи в ARP-кэше – задаётся на интерфейсе командой:

arp timeout время в секундах

и имеет базовое значение в 14400 (это 4 часа).

Суммарный же объём кэша 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

Чтобы ARP дружил с NLB, он должен обрабатывать ситуацию, когда придёт ARP-запрос с не-юникастового адреса. То есть, смотрите ситуацию. Допустим, есть NLB, который работает в мультикастовом режиме. Два хоста, соответственно, прикидываются одним IP-адресом, отвечая на ARP-запросы про этот адрес общим мультикастовым MAC’ом, и потом договариваясь друг меж другом, что делать с пришедшим трафиком. Вот чтобы эта схема работала, надо, чтобы когда этот “общий виртуальный узел”, который обладает виртуальным IP и мультикастовым MAC, решил узнать через ARP чей-то MAC, ему вообще ответили. Потому что есть тонкость – у мультикастового MAC есть характерный вид, по которому понятно, что он мультикастовый. А не-юникастовые source MAC в общем-то не являются нормальной ситуацией и нуждаются в особой обработке. Соответственно, для этого надо явно включить обработку ситуации “к нам пришёл ARP-запрос от товарища, у которого обратный MAC-адрес не-юникастовый”. Делается это путём установки параметра:

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

в единицу. Если она будет в нуле – в ряде ситуаций поимеете проблемы с NLB.

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

NUD – это Neighbor Unreachability Detection. По умолчанию включается на интерфейсах, которые смотрят в broadcast-среды, и выключается на других. Помогает узнать о том, что сосед (что обычный, что шлюз) перешёл в нефункциональное состояние до времени, пока его запись в ARP-кэше стала Stale. Механизм полезный, поэтому его рекомендуется включать в явном виде. Делается это командой:

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

ARP и DAD

DAD – это Duplicate Address Detection. То самое, что не даёт взять себе адрес, который уже есть у кого-то. Проводится путём отправки Gratuious ARP, про который чуть ниже. Тюнингуется достаточно просто, двумя параметрами:

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

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

По умолчанию retransmittime – т.е. время между попытками обнаружить соседа, который уже занял адрес – 1 секунда, количество попыток dadtransmits – 3. Можете сократить их, если уверены, что все соседи отвечают достаточно быстро, это уменьшит время инициализации интерфейса – система не будет ждать “вдруг кто проснётся и скажет, что адрес уже занят”.

ARP и WOL

Функция Wake-On-Lan, думается, хорошо Вам известна. Она нужна, чтобы узел “проснулся” в определённый момент – когда увидит на сетевом интерфейсе соответствующие неким условиям данные. Обычно это данные, напрямую идущие на данный узел, притом содержащие некую последовательность – Magic Pattern. Так вот, можно заранее указать условие – будет ли данный Magic Pattern искаться вообще во всех сетевых данных, которые попадут на нужный узел, либо только не некоторых. В частности, так как статья про ARP, есть настройка, позволяющая установить для интерфейса условие – анализировать ли на предмет наличия Magic Pattern’а пакеты протоколов ARP (для IPv4) и ND (для IPv6). Включается следующим образом:

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

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

Протокол RARP

RARP – это как ARP, только наоборот. Логично. По сути, RARP – это очень сильно простой сервис по динамическому конфигурированию узлов. Он ведь отрабатывает задачу, обратную ARP.

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

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

Вообще, RARP сейчас практически не используется, но если хотите почитать – есть RFC 903.

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

Её нет. Если хочется стороннее решение, то можно скачать RARP windows server быстро бесплатно без sms.

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

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

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

(config)#arp ip-адрес mac-адрес-клиента arpa

Шаг второй: Разрешаем на интерфейсе, в качестве параметра – тот адрес на интерфейсе, от которого отправляем RARP-ответы.

(config-if)#ip rarp-server ip-адрес

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

InARP – специальная модификация ARP для не-broadcast сетей (например, Frame Relay или ATM). Суть проста – в сетях, где нет широковещания, обычный ARP работать не сможет, а задачи, которые им решаются, никуда не пропадают. Соответственно, нужна схема работы. Она будет достаточно интересна и проста. Узел, который поддерживает InARP, будет самостоятельно с указанной периодичностью отправлять в субинтерфейсы, поддерживающие InARP (например, в FR’овские), InARP-сообщения, в которых будет указано что-то вида “привет, я от узла с сетевым адресом таким-то”. Соответственно, принимающая сторона, получая такое сообщение из-под субинтерфейса с DLCI=abc, будет записывать у себя в таблицу – “За DLCI abc живёт товарищ с IP xyz“. В общем-то и всё.

Другие отличия будут состоять в использовании других кодов операций – 8 для запроса InARP, 9 для ответа. Ну и в механизме вложения – понятное дело, в Q.922 вкладываться – это не в 802.3

Протокол UnARP

Предлагался в RFC 1868. Суть проста – сам формат пакета ARP не менялся, добавлялся лишь новый тип сообщения – сообщение вида “Я ушёл из сети”. Т.е. задачей дополнения UNARP являлось то, что узлы, которые отключаются, могут послать сообщение “Стирайте меня все из ARP-кэшей”, чтобы остальные не ждали время окончания кэширования записей. К сожалению, не поддерживается (основная причина – небезопасен, т.к. такое сообщение легко подделать).

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

Специальный субпротокол, работающий внутри цисковского варианта HDLC (который обычно cHDLC). Используемый код вложения – 0x8035. Протокол простой, но интересный тем, что может делать две штуки – проверять состояние канала, периодически передавая кадры, и назначать IPv4-адреса в случае, если с одной стороны serial link адрес IPv4 есть, а с другой – нет. Адрес назначается по логике “Если у меня последний бит адреса 1, предложить такой же, но с нулём, и наоборот”. Маска предлагается такая же, как у себя.

Формат кадра будет такой:

  • Адрес (один байт) – стандартный адрес вида b1111111 из xHDLC/PPP.
  • Контроль (один байт) – то же самое, опять LLC3, т.е. b00000011.
  • Код протокола вложения (два байта) – личный номер SLARP, 0x8035.
  • Код операции (один байт) – вариант или Address request(0x00), или address reply (0x01), или Keep-alive (0x02).
  • IPv4-адрес и маска (два раза по 4 байта) – предлагаемый партнёру по serial link адрес.
  • Резерв (один байт) – вечно 0xFF.
  • FCS в варианте CRC-16 (два байта)
  • Флаг (один байт) – стандартный флаг xHDLC вида b0111110.

Протокол DirectedARP

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

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

В общем-то, в ARP нет никаких встроенных средств безопасности. Это очень простой служебный протокол, поэтому о какой-то отдельной защите его говорить трудно. Можно высказать лишь общие мысли – например, что в случае малого количества хостов проще ввести все их IP-MAC соответствия как статические – в этом случае ARP они передавать перестанут (в кэше-то записи про соседей будут всё время), а если кто-то злонамеренный специально передаст поддельный ARP-ответ, то никакого влияния он не окажет – динамически полученный ARP-ответ не перезапишет собой статическую запись.

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

arp authorized

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

Для ряда моделей оборудования (например, на старших линейках маршрутизаторов – это 7600) можно задать в режиме глобальной конфигурации максимальный размер ARP-кэша для устройства (по умолчанию он не ограничен и составляет 256.000 записей):

ip arp entry learn количество

Есть, в общем-то, множество доп.механизмов безопасности ARP – тот же DAI или ARP ACL, про которые, возможно, я тоже допишу сюда.

Механизм Proxy ARP

Суть механизма Proxy ARP, детально обозначенного в RFC 1027, проста – дать возможность узлу, который в силу каких-то причин (например, у него не указан шлюз по умолчанию) не может понять, куда маршрутизировать трафик для других сетей, всё же сделать это. Притом сделать просто – используя то, что в сегменте с этим узлом присутствует добрый узел, на котором включен Proxy ARP, и который, увидев что узел пытается через ARP-запрос найти получателя трафика, “прикинется” этим получателем и ответит на запрос.

Т.е. вот есть маршрутизатор, на котором включен Proxy ARP. Он получает ARP-запрос на разрешение адреса узла, который находится в другом сегменте относительно спрашивающего и помогает – просто отвечает ему от имени этого узла. Соответственно, этот роутер и будет передавать трафик между данными узлами, а отправитель будет думать, что отправляет трафик напрямую.

Данный механизм включен “по умолчанию” на большинстве систем и нуждается в отключении – т.е. описанная ситуация, в общем-то, по производственной необходимости возникает довольно-таки редко.

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

Зайдите на нужный интерфейс и введите там команду:

(config-if)#ip proxy-arp

Выключить глобально – (config)#ip arp proxy disable.

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

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

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

Это страшное слово переводится как “самопроизвольный” ARP. Суть события в следующем. Любой узел, который инициирует новый интерфейс, на котором есть поддержка ARP, должен при завершении процесса конфигурирования IP-адреса (статически ли, по DHCP, через APIPA’у – без разницы) уведомить соседей о том, что он появился. Делается это при помощи отправки одиночного ARP Reply, в котором указывается, что логично, связка “мой MAC – мой новый IP”. Т.е. выглядит этот ARP-ответ несколько странно с точки зрения классической схемы работы ARP – узел рассылает на броадкастовый MAC и свой IP информацию о своём настоящем MAC и своём же IP. Т.е. совпадают SRC IP и DST IP.

Примечание: По сути, этот механизм – это “форсированное” обновление ARP-кэша соседей новой информацией – “теперь я по этому MAC-адресу”. Заодно, именно благодаря этому механизму, происходит обнаружение дублирующихся IP-адресов – тот, кто пытается присвоить себе IP-адрес, рассылая это уведомление “засветится”.

Но, в общем-то, мы и договорились, что это – исключительная и разовая ситуация. Казалось бы, в чём проблема-то?

Проблема в том, что когда такое происходит на сервере удалённого доступа, к которому подключено несколько клиентов (более 1, по сути), то этот сервер при подключении каждого своего клиента получает от него данный стартовый запрос ARP и ретранслирует запрос далее, выступая, по сути, прокси. В результате, допустим, порт коммутатора, в который включен этот сервер, впадает в тягостные размышления о здоровье сервера, который постоянно сообщает всей сети о том, что за его MAC-адресом интерфейса (того, который воткнут в коммутатор) очень много IP-адресов, и все они разные. И каждый раз, когда клиент будет подключаться (например, VPN-канал переподключит, или другим способом вызовет переход через NCP-фазу PPP), такой ARP-ответ будет создаваться и отправляться серверу, а тот будет отдавать его дальше – чтобы уведомить сеть, что трафик на такой-то IP-адрес надо отправлять на его, сервера, MAC, а дальше он уж сам разберется.

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

Примечание: На самом деле, делать это надо с умом, как и всё остальное. Есть ситуации, когда gratuitous ARP является штатным и нужным. Например, у Вас сделан HSRP-балансировщик. Активный узел упал – второй становится активным. И в этот момент он тоже “просто так, внезапно” отправит gratuitous ARP – чтобы сразу уведомить всю сеть, что теперь у виртуального IP новый MAC, а не ждать, пока у всех узлов кончится тайм-аут кэша.

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

Включить:

router(config)#ip gratuitous-arps

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

Отключить приём всех gratuitous ARP’ов:

router(config)#ip arp gratuitous none

Включить приём только gratuitous ARP’ов, source которых из connected-сетей:

router(config)#ip arp gratuitous local

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

Для указанного сценария с RRaS – никак. Ваш RRaS-сервер не будет передавать стартовый ARP-запрос, полученый от PPP-клиента, в другие сети, поэтому ситуация, описанная выше, просто не возникнет.

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

HKLM\System\CurrentControlSet\Services\TcpIp\Parameters

а в нём – параметр ArpRetryCount типа DWORD32. Если поставить этот параметр в нуль, то механизм будет выключен. По умолчанию Windows-хосты делают Gratuitous ARP три раза – сразу после инициализации адреса, потом через 1/2 секунды, потом через ещё 1/10 секунды. Можете поставить единицу, если уверены в качестве работы сети и её не-критичной загруженности на момент выхода ARP Reply – “сэкономите трафик”.

Примечание: Считаются фактически отправленные ARP, а не попытки. Т.е. если среда была недоступна, то все равно отправят три, просто чуть позже.

Примечание: Если поставить нуль, то вдобавок отвалится функция обнаружения конфликтов DHCP, но это будет в другой истории.

Cisco ARP Optimization Feature – что это?

Это достаточно полезное архитектурное изменение, появившееся в релизах IOS 12.0 – 12.2 и закрепившееся в более поздних. Идея проста. Устройство хранит информацию о связках IP-MAC-интерфейс в отдельной таблице. Эта таблица организована для быстрого поиска информации по известному IP-адресу. Соответственно, этот механизм эффективен, когда надо обработать единичный пакет. В ситуации же, когда интерфейс попеременно переходит из состояния включения в выключенное и наоборот (interface flapping), надо сразу же обработать в этой таблице все ARP-записи, относящиеся ко всем IP и MAC, находящимся за данным интерфейсом. Вот фича Cisco ARP Optimization как раз умеет делать эту операцию – например, очистить все записи за соответствующий интерфейс. Выигрыш – резко сниженная загрузка CPU, которому надо обработать событие “падение интерфейса”.

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

Никак – это просто другая структура хранения данных ARP в оперативной памяти, используемая в современных версиях IOS.

Заключение

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

An ARP (Address Resolution Protocol) is a communication protocol that works on a “Physical (Data-Link)” layer of a TCP/IP stack and is used to discover a MAC address of a device on a LAN (local-area network) based on its IP address.

An ARP table is used to store the discovered pairs of the MAC and IP addresses.

In this note i will show how to display the ARP table and how to clear the ARP cache using the Windows arp command.

Cool Tip: How to show a routing table in Windows! Read more →

Show ARP Table

To display the current ARP table in Windows, use the arp command with the -a option:

C:\> arp -a

Interface: 192.168.1.31 --- 0x7
  Internet Address    Physical Address     Type
  192.168.1.1         60-35-c0-6b-a2-b7    dynamic
  192.168.1.255       ff-ff-ff-ff-ff-ff    static
  224.0.0.22          01-00-5e-00-00-16    static
  224.0.0.252         01-00-5e-00-00-fc    static

Show the ARP table in a verbose mode:

C:\> arp -av

To record an IP and MAC address of a device on a LAN to the ARP table, simply ping it:

C:\> ping 192.168.1.95

Pinging 192.168.1.95 with 32 bytes of data:
Reply from 192.168.1.952: bytes=32 time=18ms TTL=64

C:\> arp -a

Interface: 192.168.1.31 --- 0x7
  Internet Address    Physical Address     Type
  192.168.1.1         60-35-c0-6b-a2-b7    dynamic
  192.168.1.95        d6-58-01-33-dd-bc    dynamic
  192.168.1.255       ff-ff-ff-ff-ff-ff    static
  224.0.0.22          01-00-5e-00-00-16    static
  224.0.0.252         01-00-5e-00-00-fc    static

To discover all the devices on a LAN, you can ping them all using this one-liner (adjust the IP of your network):

C:\> FOR /L %i IN (1,1,254) DO ping -n 1 -w 100 192.168.1.%i | FIND /i "Reply"

Clear ARP Cache

To clear an ARP cache it is required to open an elevated command prompt, otherwise you may receive an error as follows: “The ARP entry deletion failed: The requested operation requires elevation.”

To start the elevated command prompt, press the ⊞ Win keybutton to open the start menu, type in cmd to search for the command prompt and press the Ctrl + Shift + Enter to start the command prompt as an administrator.

To clear the ARP cache in Windows, use the arp command with the -d option:

C:\> arp -d

How Does ARP Work – Explained

When one computer wants to communicate with another computer on the same LAN, it creates an IP packet with the source and destination IP addresses carrying the data from an application and encapsulates it in an Ethernet frame with the source and destination MAC addresses.

Address Resolution Protocol: The sending computer obviously knows its source MAC address, but how does it know the destination MAC address? That’s where ARP comes into play!

To find out a MAC address of the destination computer (if it is not in the ARP cache yet), it sends an ARP request to the broadcast MAC address ff:ff:ff:ff:ff:ff (to the all devices on the LAN), and is basically asking:

Who has IP 192.168.1.95 and what is your MAC address?

The destination computer receives the message and replies with an ARP reply:

That’s me! And my MAC address is xx:xx:xx:xx:xx:xx

The source computer adds the MAC and IP addresses of the destination computer to its ARP table and starts sending the data.

Cool Tip: Check if TCP port is opened in PowerShell! Read more →

Was it useful? Share this post with the world!

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как установить сири на windows
  • Как в windows установить по умолчанию открытие файлов pdf программой adobe acrobat
  • Windows запускается только после перезагрузки
  • Windows vienna transformation pack
  • Windows 10 одновременное подключение нескольких пользователей по rdp