Очистка ARP-таблицы
Модем выдает внешний адрес (с маской 255.255.255.255, это нормально?), через какое-то время /var/log/messages забивается Neigbour table overflow, arp выдает кучу хостов с одинаковыми HWaddr, которые не удаляются. arp выдает (пример) cm218-253-218-19.hkcabl: Неизвестный хост SIOCDARP(priv): Сеть недоступна. Вопрос: откуда берутся сотни хостов с одинаковыми маками и как форсированно очистить arp-таблицу?
flagist0
06.01.08 18:38:01 MSK
1 «Нормально». Посмотри, твой нейбор со стороны провайдера, скорее всего, относится к другой подсети — потому и маска такая, провайдер адресное пространство экономит на ppp линках.
2 Кучи хардварных адресов в арп-таблице — ненормально, вероятнее всего, результат многочисленных переконнектов без перезагрузки роутера (твой внешний МАК + твои же внешние айпи за несколько последних соединений). У меня на ДЛинке аналогичным образом засирается таблица маршрутов (правда, работать оно не мешает): # ip route show х.113.88.х via 127.0.0.1 dev lo scope link х.113.87.х via 127.0.0.1 dev lo scope link х.113.123.х via 127.0.0.1 dev lo scope link х.113.74.х via 127.0.0.1 dev lo scope link х.113.93.х via 127.0.0.1 dev lo scope link х.113.80.х via 127.0.0.1 dev lo scope link х.113.68.х via 127.0.0.1 dev lo scope link х.113.91.х via 127.0.0.1 dev lo scope link х.113.82.х via 127.0.0.1 dev lo scope link . и т.д.
3 for addr in $(arp -n | awk »); do arp -d $addr; done Коряво, но ничего лучше не придумалось
anonymous
( 06.01.08 22:54:41 MSK )

Вроде, все записи из таблицы можно очистить с помощью
ip neig flush all
Можно увеличить размер arp-таблицы, например до 8192
echo 8192 > /proc/sys/net/ipv4/neigh/default/gc_thresh3
echo 8192 > /proc/sys/net/ipv4/neigh/eth0/gc_thresh3
Еще можно попробовать уменьшить время нахождения записи в кеше, хотя может и не надо.
>Вопрос: откуда берутся сотни хостов с одинаковыми маками
Запустите «tcpdump -n arp» и посмотрите, arp-ответы приходят в ответ на запросы вашего компьютера или возникают сами по себе.
P.S. Какова таблица маршрутизации и функции компьютера (десктоп или маршрутизатор).
mky ★★★★★
( 06.01.08 23:06:31 MSK )
Ответ на: комментарий от mky 06.01.08 23:06:31 MSK
Да, вариант mky (ip neigh flush all) должен сработать, а мой вариант — скорее нет, т.к. на ADSL-девайсах (речь ведь о таком?) система обычно сильно порезанная.
Как очистить ARP таблицу
ARP (Address Resolution Protocol — протокол разрешения адресов) — протокол сетевого уровня (Network Link layer), предназначенный для преобразования IP- адресов (адресов сетевого уровня) в MAC -адрес- адреса (адреса канального уровня) в сетях TCP/IP. Он определён в RFC 826.
Утилита arp:
Ключи консольной утилиты arp:
arp -a выводит содержимое таблицы ARP. arp host> выводит ARP-запись для заданного хоста. arp -d host> удаляет запись, соответствующую хосту. arp -d -a удаляет все записи таблицы. arp -s host> MAC-address> добавляет запись. arp -f file> добавляет записи из файла соответствия file>.
В Linux полностью очистить ARP таблицу штатными средствами нельзя. Можно использовать скрипт вида, соответственно видоизменив его под свои нужды ethers.local
#!/bin/sh I=1 while [ $I -le 254 ] do arp -d 192.168.1.$ arp -s 192.168.1.$ 0:0:0:0:0:0 I=`expr $I + 1` done arp -f /etc/ethers.local
Использование и примеры маршрутизации Linux. Эта команда для всех пунктов состояния задает failed. В дальнейшем ядро операционной системы удалить помеченные MAC адреса.
ip neigh flush all
gratuitous ARP
В рамках протокола ARP возможны самообращенные запросы (gratuitous ARP). При таком запросе инициатор формирует пакет, где в качестве IP используется его собственный адрес. Это бывает нужно, когда осуществляется стартовая конфигурация сетевого интерфейса. В таком запросе IP-адреса отправителя и получателя совпадают.
Самообращенный запрос позволяет ЭВМ решить две проблемы. Во-первых, определить, нет ли в сети объекта, имеющего тот же IР-адрес. Если на такой запрос придет отклик, то ЭВМ выдаст на консоль сообщение Dublicate IP address sent from Ethernet address . Во-вторых, в случае смены сетевой карты производится корректировка записи в АRP-таблицах ЭВМ, которые содержали старый МАС-адрес инициатора. Машина, получающая ARP-запрос c адресом, который содержится в ее таблице, должна обновить эту запись.
Вторая особенность такого запроса позволяет резервному файловому серверу заменить основной, послав самообращенный запрос со своим МАС-адресом, но с IP вышедшего из строя сервера. Этот запрос вынудит перенаправление кадров, адресованных основному серверу на резервный. Клиенты сервера при этом могут и не знать о выходе основного сервера из строя. При этом возможны и неудачи, если программные реализании в ЭВМ не в полной мере следуют регламентациям протокола ARP.
Как в Windows очистить кэш ARP
Чтобы обеспечить более быстрое соединение устройств в локальной сети, Windows сохраняет установленные при первом подключении устройств друг к другу соответствия IP — и MAC -адресов в специальный кэш, именуемый ARP . По сути, это база данных в форме таблицы, в которую записываются как раз эти самые адреса устройств. Ошибки в записях таблицы ARP возникают редко, а если это всё же происходит, у пользователя возникают проблемы соединения устройств в локальной сети.
Разумеется, любой сбой подключения в локальной сети вовсе не означает, что имело место повреждение кэша Address Resolution Protocol, просто такой сценарий нужно иметь ввиду.
Чтобы исключить неполадки в работе кэша, нужно очистить последний. Сделать это можно с помощью классической командной строки.
Запустите консоль от имени администратора и выполните в ней команду netsh interface IP delete arpcache либо arp -d , как вам удобнее. Перезагрузите компьютер.

Для просмотра содержимого кэша используется команда arp -a .
Если сразу после очистки кэша вы просмотрите его содержимое и увидите в нём данные, это не означает, что очистка не была выполнена. Просто в нём появились свежие записи, так что это нормальное явление.

Кстати, вы можете изменить время жизни кэша, отредактировав параметры ArpCacheLife и ArpCacheMinReferencedLife в реестре Windows.
Для этого в редакторе Regedit разверните ветку HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters , найдите справа эти параметры и установите в качестве их значений время существования кэша в секундах.

Какое время устанавливать?
Несколько минут, этого вполне будет достаточно.
Не забудьте только переключиться в десятичную систему счисления.
Если параметры отсутствуют, создайте их вручную.

Тип они должны иметь DWORD .
Как очистить arp таблицу
Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012
Отображает и изменяет записи в кэше протокола разрешения адресов (ARP). Кэш ARP содержит одну или несколько таблиц, которые используются для хранения IP-адресов и разрешенных физических адресов Ethernet или токенов. На компьютере установлена отдельная таблица для каждого сетевого адаптера Ethernet или token Ring. Используется без параметров, arp отображает сведения справки.
Синтаксис
arp [/a [] [/n ]] [/g [] [-n ]] [/d []] [/s []]
Параметры
| Параметр | Описание |
|---|---|
| [/a [] [/n ] | Отображает текущие таблицы кэша arp для всех интерфейсов. Параметр /n учитывает регистр. Чтобы отобразить запись кэша arp для определенного IP-адреса, используйте arp /a с параметром inetaddr, где inetaddr является IP-адресом. Если inetaddr не указан, используется первый применимый интерфейс. Чтобы отобразить таблицу кэша arp для определенного интерфейса, используйте параметр /n ifaceaddr в сочетании с параметром /a, где inetaddr является IP-адресом, назначенным интерфейсу. |
| [/g [] [/n ] | Идентичен /a. |
| [/d [] | Удаляет запись с определенным IP-адресом, где inetaddr — IP-адрес. Чтобы удалить запись в таблице для определенного интерфейса, используйте параметр ifaceaddr, где ifaceaddr является IP-адресом, назначенным интерфейсу. Чтобы удалить все записи, используйте дикую звездочку (*), карта символ вместо inetaddr. |
| [/s [] | Добавляет статическую запись в кэш arp, который разрешает IP-адрес inetaddr в физический адрес etheraddr. Чтобы добавить запись статического кэша arp в таблицу для определенного интерфейса, используйте параметр ifaceaddr, где ifaceaddr является IP-адресом, назначенным интерфейсу. |
| /? | Отображение справки в командной строке. |
Замечания
- IP-адреса для inetaddr и ifaceaddr выражаются в точечной десятичной нотации.
- Физический адрес для etheraddr состоит из шести байтов, выраженных в шестнадцатеричной нотации и разделенных дефисами (например, 00-AA-00-4F-2A-9C).
- Записи, добавленные с параметром /s , являются статическими и не выходят из кэша arp. Записи удаляются, если протокол TCP/IP остановлен и запущен. Чтобы создать постоянные записи статического кэша arp, поместите соответствующие команды arp в пакетный файл и используйте запланированные задачи для запуска пакетного файла при запуске.
Примеры
Чтобы отобразить таблицы кэша arp для всех интерфейсов, введите следующее:
arp /a
Чтобы отобразить таблицу кэша arp для интерфейса, которому назначен IP-адрес 10.0.0.99, введите:
arp /a /n 10.0.0.99
Чтобы добавить запись статического кэша arp, которая разрешает IP-адрес 10.0.0.80 на физический адрес 00-AA-00-4F-2A-9C, введите:
arp /s 10.0.0.80 00-AA-00-4F-2A-9C