The arp (address resolution protocol) is a simple Windows network command-line utility used to view and manage the arp cache. The arp cache is a collection of IP and MAC addresses of devices on your local network that your computer knows about. This tool is typically used in troubleshooting network issues.
The commands shown here are tested on computer with Windows 8 but most will work in other versions of Windows as well.
Почему ARP заменяется NDP в IPv6?
задан Anonymous Platypus
Получить IPv6-адрес компьютера с IPv4?
Информация о сопоставлении IP/MAC-адресов, полученная таким образом, кэшируется в локальной таблице ARP, так что процесс запроса ARP впоследствии может быть пропущен.
Проблемы могут возникнуть, когда по какой-либо причине хост X не получает ARP-ответы для целевого хоста Y, с которым он хочет установить связь. В других случаях ответы ARP приходят, но содержат MAC-адрес, связанный с неправильным хостом Z. Такие поврежденные ответы ARP приведут к перехвату трафика, когда трафик, который должен был быть отправлен на Y, в конечном итоге поступает на хост Z.
При работе с такими аномальными ситуациями, вызванными ARP, полезно иметь возможность вручную добавлять статические записи ARP в локально кэшированную таблицу ARP. Когда MAC-адрес хоста назначения Y найден в локальной таблице ARP, нет необходимости отправлять запросы ARP.
Я на Windows 7 и пытаюсь назначить статическую запись arp для моего шлюза по умолчанию с помощью команды:
arp -s 172.24.7.254 00-05-01-f9-28-00 172.24.1.20
Но я получаю следующую ошибку:
The ARP entry addition failed: Access is denied.
Вот то, что я нашел, и это прекрасно работает
arp -s: доступ запрещен. На шлюзе по умолчанию
Вот что я использовал:
netsh interface ip delete neighbors “Network card name here” “Gateway. IP.goes.here”
netsh interface ip add neighbors “Network card name here” “Gateway. IP.goes.here” “MAC-address-of-gateway-with-dash-here”
Чтобы установить arp static в Windows 7 64bit, вы должны использовать команду netsh следующим образом
введите эту команду
netsh interface ipv4 add neighbors “Local Area Connection” inetaddr MAC
netsh interface ipv4 add neighbors “Local Area Connection” 192.168.0.1 00-24-01-d2-3a-bd
(Если вы используете беспроводное, а не кабельное соединение локальной сети, используйте вместо этого “Беспроводное сетевое соединение”.)
ответ дан mostafa elkersh
Чтобы изменить информацию о маршрутизации, вы должны быть администратором.
Найдите командную строку в меню “Пуск”, щелкните ее правой кнопкой мыши и выберите “Запуск от имени администратора”.
Overview
Arp command (address resolution protocol) is used to view and manage the arp cache. The arp cache contains a dynamic list of IP addresses of the devices (computers, routers) your computer communicated with recently. More importantly, along with the IP address, the MAC address (the 6-byte ‘burned-in’ physical/hardware address) of the device is also stored in the cache.
The purpose for maintaining an arp cache is to improve network performance. When your computer communicates with a device, regardless of whether it is on your local network (e.g., file server) or is external to it (e.g., website, ftp server), your computer needs to know the MAC address of the device to communicate with it. In the case of external devices, your computer needs to communicate with your network router. Within the same network, all hosts communicate with each other by addressing each other by their MAC address.
By maintaining an arp table that maps an IP address to its associated MAC address of the device, your computer does not need to query the network for the MAC address each time it needs to communicate with it. When your computer needs to communicate with a device that is not in its arp cache, it will perform a network query (using arp) to get the MAC address. In essence, it asks “who has 192.168.128.64”. The device that has this IP will reply back with its MAC address. This IP and MAC address mapping is then stored on your computer’s arp cache for quick lookup in future communication.
Привет, привет! Помогите победить.
Есть два сети 192.168.0.0/24 и 192.168.10.0/24. Роутер в первой сети 192.168.0.100, во второй 192.168.10.1. Роутеры объединены посредством ipsec. Компы из первой сети отлично пингуют компы из второй, и на оборот. Проблема в единственном серваке на Gentoo.
Сервер Gentoo (192.168.0.94) из первой сети (192.168.0.0/24) не доступен из второй сети 192.168.10.0/24. Причем странность в том, что если сервер перезагрузить доступ к нему временно появляется. Но после нескольких минут снова доступ пропадает.
После долгих поисков выяснил что проблема как то связанна с arp, привожу кусок arp кэша с сервера Gentoo
192.168.0.21 ether 6c:f0:49:55:de:ea C eth0
192.168.0.18 ether 6c:f0:49:56:4e:8a C eth0
srv-dc-02.domain.com ether 00:0c:29:d0:b5:65 C eth0
lt-009.domain.com ether 00:1e:68:08:4f:87 C eth0
ul-000082.domain.com ether 00:1e:8c:9d:2c:75 C eth0
srv-dc-04.domain.com (incomplete) eth0
для примера: srv-dc-04 пк находящийся в сети два (192.168.10.0/24), который пытается пинговать этот самый gentoo.
Записи вида incomplete заполняют кэш, и сами не очищаются. После перезагрузки кэш снова чистый и пинги ходят нормально, несколько минут.
Для примера есть второй сервер на centos в сети один, там записи incomplete так же есть но они самоочищаются через несколько секунд, и пинг до этого сервера из сети два не пропадает.
Описание команды ARP.
1.1. Формат командной строки ARP:
В IP-сетях существует три способа отправки пакетов от источника к приемнику:
– одноадресная передача (Unicast);
– широковещательная передача (Broadcast);
– многоадресная рассылка (Multicast).
Примеры использования ARP.
2.1. Отобразить таблицу соответствия IP и MAC адресов для данного компьютера
C: arp -a
2.2. То же, что и в предыдущем случае, но с отображением информации в постраничном режиме:
2.3. Пример отображаемой таблицы ARP:
C: arp
Интерфейс: 127.0.0.1 — 0x1
адрес в Интернете Физический адрес Тип
224.0.0.22 статический
224.0.0.251 статический
239.255.255.250 статический
Интерфейс: 192.168.1.133 — 0x1c
адрес в Интернете Физический адрес Тип
192.168.1.1 c8-2b-35-9a-a6-1e динамический
192.168.1.132 00-11-92-b3-a8-0d динамический
192.168.1.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 статический
2.4. Добавить в таблицу ARP запись, задающую соответствие IP адреса 192.168.1.1 и физического адреса 00-08-00-62-F6-19 :
C: arp -s 192.168.1.1 00-08-00-62-F6-19
C: arp -d 192.168.1.1
C: arp -d 192.168.1.*
Если вы начинающий системный администратор, думаю, вам понадобится утилита ip. Она позволяет посмотреть сетевые интерфейсы и IP адреса им присвоенные, посмотреть и настроить таблицу маршрутизации, включать или отключать сетевые интерфейсы, управлять маршрутизацией и ARP, а также многое другое.
Раньше вместо неё использовалось несколько других утилит, одна из них – ipconfig. Однако потом им на замену пришла ip. Сейчас она уже поставляется во всех дистрибутивах, а со временем старые утилиты будут удалены, поэтому разобраться с ней стоит.
Сначала рассмотрим синтаксис команды. Утилита довольно многофункциональная, поэтому и синтаксис её вызова непростой:
Опции – это глобальные настройки, которые сказываются на работе всей утилиты независимо от других аргументов, их указывать необязательно.
Дальше рассмотрим все еще более подробно:
Теперь давайте рассмотрим самые важные объекты.
Конечно, это не все объекты которые поддерживает команда ip Linux, но на первое время вам хватит. Во время ввода имя объекта может быть сокращено до одной буквы. При неоднозначности используется алфавитный порядок. Например, ip a show, расшифровывается как ip address show. Тогда как в ip r show, r – означает route.
Теперь рассмотрим доступные команды, с помощью которых может быть выполнена настройка сети linux. Они зависят от объекта, к которому будут применяться. Вот основные команды: add, change, del или delete, flush, get, list или show, monitor, replace, restore, save, set, и update. Если команда не задана, по умолчанию используется show (показать).
Здесь тоже поддерживается сокращение и в большинстве случаев для выполнения нужного действия достаточно нескольких символов. Но алфавитный порядок соблюдается не всегда. Например, ip a s, означает ip address show, а не ip address set, к сожалению.
Arp /d – Delete the Entire Arp Cache
If you display the cache once the delete command is issued, you will see the entire cache is empty (or near empty), as illustrated in the screenshot below. Depending on how soon you are viewing your arp cache after performing the delete command, you may already see your cache being re-populated as your computer continues re-learns them as it communicates with devices on your network.
Tips
Вот теперь мы дошли к самому интересному – примерам использования утилиты ip Linux. То что я здесь опишу на самом деле лишь маленькая капля из всего того что может утилита ip.
Просмотр IP адресов
Чтобы посмотреть все IP адреса, связанные с сетевыми интерфейсами используйте такую команду:
ip addr show
Для просмотра информации в кратком виде используйте опцию -br:
ip -br a show
Можно посмотреть IP адреса только по определённому сетевому интерфейсу, например: enp0s3:
ip a show enp0s3
ip a show dev enp0s3
Можно отобразить только статические IP адреса:
ip a show dev enp0s3 permanent
Или только динамические:
ip a show dev enp0s3 dynamic
Добавление IP адреса
Чтобы присвоить IP адрес для устройства нужно использовать команду add. Её общий синтаксис такой:
$ ip addr /
Например, давайте присвоим тому же интерфейсу enp0s3 IP адрес 10.0.2.100 с маской подсети 255.255.255.0:
ip addr add 10.0.2.100/255.255.255.0 dev enp0s3
Маску можно указать и в сокращённом виде:
ip addr add 10.0.2.100/24 dev enp0s3
Удаление IP адреса
Чтобы удалить IP адрес из интерфейса надо использовать команду del. Синтаксис её очень похож на предыдущую команду. Например, удалим IP адрес 10.0.2.100:
ip addr del 10.0.2.100/255.255.255.0 dev enp0s3
Можно удалять IP адреса по одному или удалить все сразу с помощью команды flush:
ip a flush
Или же можно удалить адреса только определённой подсети:
sudo ip a flush to 10.0.2.0/24
Если вы будете применять эти команды к интерфейсу, с помощью которого у вас работает сеть, то сеть пропадёт и чтобы её вернуть надо будет перезагрузить сетевые службы.
Список интерфейсов
Чтобы посмотреть список сетевых интерфейсов используйте объект link:
ip link show
Включение или выключение интерфейсов
Для решения этой задачи тоже используется объект link, но с командой set. Синтаксис её такой:
$ ip link
В качестве действия можно использовать up или down. Например, чтобы отключить интерфейс enp0s3 выполните:
ip link set dev enp0s3 down
А чтобы включить его обратно:
ip link set dev enp0s3 up
Настройка MTU
Параметр MTU означает размер одного пакета, передаваемого по сети. Этот размер можно изменить с помощью команды set. Например, увеличим MTU для enp0s3 до 4000 тысяч байт:
ip link set mtu 4000 dev enp0s3
Настройка MAC адреса
Адрес MAC – это физический адрес, который используется для определения какому устройству надо передать сетевой пакет в локальной сети. Прежде чем настраивать MAC адрес ваше устройство надо отключить:
sudo ip link set dev enp0s3 down
sudo ip link set dev enp0s3 address AA:BB:CC:DD:EE:FF
А потом включить интерфейс обратно:
sudo ip link set dev enp0s3 up
Таблица ARP
Именно протокол ARP отвечает за преобразование IP адресов в низкоуровневые MAC адреса. Для того чтобы не отправлять ARP запросы каждый раз в сеть, кэш хранится в таблице ARP на протяжении 20-ти минут. Чтобы посмотреть содержимое таблицы ARP используйте такую команду:
ip neigh show
Добавление записи в таблицу ARP
Обычно записи в эту таблицу попадают автоматически, но вы можете добавить их и вручную. Для этого используйте команду add объекта neigh:
sudo ip neigh add 192.168.0.105 lladdr b0:be:76:43:21:41 dev enp0s3
В этом примере я заставил компьютер думать, что узел с IP 192.168.0.105 это 192.168.0.1. Теперь можно попытаться выполнить ping по этому адресу и оно будет работать, несмотря на то, что реально такого узла в сети нет.
Очистка таблицы ARP
Вы можете удалять IP адреса по одному с помощью команды del:
sudo ip neigh del dev enp0s3 192.168.0.105
Можно удалить все записи для определённого сетевого интерфейса:
ip neigh flush dev enp0s3
Или очистить таблицу полностью командой flush:
Просмотр таблицы маршрутизации
Для просмотра таблицы маршрутизации используйте объект route и команду show:
ip route show
Добавление маршрута
Синтаксис добавления нового маршрута в таблицу маршрутизации такой:
Вместо шлюза можно указать сетевой интерфейс с помощью которого надо отправлять пакеты:
sudo ip route add 169.255.0.0 via 169.254.19.153
Или можно указать сетевой интерфейс через который надо отправлять пакеты для определённой сети:
sudo ip route add 169.255.0.0 dev enp0s3
Удаление маршрута
Удалить маршрут можно командой с аналогичным синтаксисом, только вместо add надо использовать del:
sudo ip route del 169.255.0.0 via 169.254.19.153
Постоянное добавление статических записей ARP в Linux
Обратите внимание, что любая запись ARP, добавленная командой arp во время выполнения, как указано выше, не постоянно сохраняется после перезагрузки. Чтобы постоянно добавить статическую запись ARP, вы можете автоматически загружать записи ARP из внешнего файла при включенном сетевом интерфейсе. Для этого сначала создайте файл, содержащий статические записи ARP.
$ sudo vi /etc/ethers
00:0c:29:c0:94:bf 10.0.0.2
00:0c:59:44:f0:a0 10.0.0.5
. . . .
Команда arp позволяет загрузить любой внешний файл с помощью опции -f.
$ sudo arp -f /etc/ethers
Теперь вам нужно настроить автоматический запуск приведенной выше команды при включении данного сетевого интерфейса (например, eth0). Существуют специфичные для дистрибутива способы запуска команды запуска для сетевых интерфейсов. Ниже приведены примеры для конкретных дистрибутивов.
Здесь я предполагаю, что вы не используете Network Manager в своей системе Linux. Поэтому, если вы используете Network Manager, вам придется сначала отключить его.
В Ubuntu, Debian или Mint добавьте следующую запись в /etc/network/interfaces:
iface wlan0 inet dhcp
. . .
post-up arp -f /etc/ethers
В CentOS, RHEL или Fedora создайте следующий исполняемый скрипт, как описано в этом руководстве:
$ sudo vi /sbin/ifup-local
Сделайте скрипт исполняемым:
$ sudo chmod +x /sbin/ifup-local
Example Usage
There are a variety of switches (sub commands) available with the arp utility that will alter how it will function. At the most basic, the arp is used with teh /a switch to display the arp cache table of a computer.
Dynamic versus Static Entries
In an arp cache table, you will typically find two types of entries – dynamic and static. A dynamic entry is an IP to MAC address pair that your computer has learned of itself during recent communication with that device. A static entry on the hand is one that was manually entered (or by the operating system) into the cache. Static entries will remain in the cache indefinitely unless explicitly removed. Dynamic entries will stay in cache unless they have not been used recently and the ARP cache timeout has expired.
Table of Content
$ sudo arp -s 10.0.0.2 00:0c:29:c0:94:bf
$ arp -a -n
Как вы можете видеть выше, статически настроенная запись ARP отображается правильно, помеченная как PERM в таблице ARP.
Arp /a – Displays the Arp Cache Table for all Interfaces
The screenshot example below is the arp output of a particular computer. The output of your result will differ. In our screenshot example, it shows 9 entries in the table.
The arp cache results are dynamic and displays the IP and MAC address of devices (computers, routers) your computer network communicated (e.g., ping, internal website) with recently that are on your network. The table does not display the IP address of websites, servers and other devices outside of your network. It will however, show the IP and MAC address of your router as it is the device your computer communicate with on your internal network to get to the external server.
Arp /s — добавление записи в кэш Arp вручную
arp/s 192.168.128.100 00-11-22-AA-BB-CC
Если вы отобразите кеш после выполнения команды добавления, вы увидите, что кеш теперь показывает добавленную вами запись, как показано на снимке экрана ниже. Кроме того, поскольку эта запись добавляется вручную, она помечается как статическая.
Резюме
Скорее всего, вам не понадобится исследовать кэш ARP для большей части вашей работы по устранению неполадок. Тем не менее, понимание цели и использования ARP имеет основополагающее значение для любого специалиста по сетевым технологиям, поскольку он использует основные концепции связи TCP/IP.
Как открыть командную строку
Чтобы использовать эту утилиту, вам нужно запустить окно командной строки. Три распространенных способа запуска окна командной строки:
Параметры ARP
Удалить статическую запись ARP из приложения таблицы ARP
$ sudo arp -d 10.0.0.2
Arp /d Inetaddr — Удалить запись Arp
arp /d 192.168.1.100
Если вы отобразите кеш после выполнения команды удаления, вы увидите, что запись больше не указана в списке, как показано на снимке экрана ниже.
Выводы
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Рекомендуемое чтение
Повысить уверенность и производительность труда
Повышение производительности и эффективности