arp - видалити не видаляє запис; просто позначає запис "неповним"


10
$ sudo arp -avn
? (10.10.7.30) at 00:cc:cc:bb:dd:86 [ether] on eth0
...

$ sudo arp --delete 10.10.7.30

$ sudo arp -avn
? (10.10.7.30) at <incomplete> [ether] on eth0

Після того, як --deleteя не очікував вступу для 10.10.7.30. Несподівано запис залишається і позначається <incomplete>.

Використання Ubuntu 10.04 .

Відповіді:


10

Запис буде видалено, будьте терплячі.

(Якщо ви хочете якомога коротшу відповідь: неповна == видалено)

Скажімо, «видалити» - неправильне слово для дії. Що насправді відбувається тут, це те, що запис встановлюється вручну в режимі "запит надісланий, жодної відповіді" (таким чином, "неповний" процес ARP), як ніби машина була б дійсно недосяжною.

Тепер запис буде повністю видалено незабаром, якщо він тим часом не отримає нову дійсну відповідь ARP. У такому випадку запис буде доданий у будь-якому разі, навіть якщо він був видалений, а не позначений як неповний. Тож немає такої фактичної позитивної чи протилежної поведінки.

Але майте на увазі, що ми говоримо про кеш. Видалення речей з кеш-книжок складно і дорого. Це набагато ефективніше визнати недійсним запис та чекати, якщо його замінять, перш ніж його остаточно видалити. Але для системи абсолютно немає різниці, якщо запис залишився зі списку або просто позначений неповним.


І немає способу дійсно видалити його, щоб подальша потреба знати призначення викликала б "новий" ARP-запит?
— Скаперен

1
Але саме так і тут. Якщо щось шукає запис, позначений як "неповний", надсилається новий запит ARP. Якщо на нього відповіли, запис оновлюється і більше не є "неповним". Якщо відповідь не повертається, запис буде видалено зі списку через деякий час. (Ось чому я вважаю, що "маркувати" запис вручну досить марно. Якщо машина живе, запис буде оновлений. Якщо він дійсно відсутній, то чому "- видалити" запис вручну в будь-якому випадку?)
— Карма Fusebox

... мені спадає на думку, що ви можете "змінити" ARP-адресу на IP-адресу. У цьому спеціальному випадку ви можете "--прибрати" вручну і наступним запитом ARP повернути нову адресу. Але для цього сценарію, це зовсім не має значення, чи запис видимо видалено зі списку чи позначено "неповним". Для залучених технологій це те саме.
— Karma Fusebox

@KarmaFusebox Ви знаєте, де існує цей кеш? Це в пам'яті процесів? Якщо так, то який процес? або це підтримується ядром? У файлі на диску? в іншому місці?
— JamesThomasMoon1979

@KarmaFusebox Видалення запису має сенс, якщо записи також додавати вручну (і тому встановити постійний прапор)
— cha5on

7

Просто для доповнення до всіх інших відповідей, я вважав це посилання дуже корисним .

У деяких випадках використання ipдоцільніше, як команда:

# ip -s -s neigh flush all

Результати можуть залежати від вашого Linux ядра.


Це прекрасно працювало для мене. Кожен, хто має проблеми з іншими відповідями, повинен спробувати це.
— jackgu1988

3

Окрім інших тонких відповідей, варто згадати, що можна повністю звільнити кеш арпу, видаливши його. Один з менш болісних способів:

ip link set arp off dev eth0 ; ip link set arp on dev eth0

Це повинно видалити всі записи, будь вони в будь-якому стані.

Альтернативні методи включають завантаження та оновлення інтерфейсу та подібні способи зробити кеш арпу повністю видалити та відтворити.


1
Це правильна відповідь. Мені потрібно було саме це. Не просто позначення якогось запису "неповним" або "деяким часом не досягнуто". Дякую.
— Джон Гамільтон

0

Я знаю, що це може здатися очевидним, але, для тих, хто не звик працювати з оболонкою, це моя пропозиція:

Починаючи з відповіді @KarmaFusebox, чому б просто не зібрати результати ...? :

arp -a | grep "incomplet" -i -v

Він покаже лише наявні / активні записи кеша.
Я думаю, що це команда, сумісна з POSIX . І це сценарій , якщо це те, що вам потрібно.


Я шукаю розумне пояснення, чому так arpповодиться. Це здається своєрідним. Тангенціально, чи можуть arpбути примушені видалити <incomplete>записи?
— JamesThomasMoon1979

Ну, @ JamesThomasMoon1979, я скоріше скажу, що в системах, які, здається, не так поводяться (тобто: консоль Windows), вони насправді є. Єдина відмінність полягає в тому, що вони не показують incompleteзаписи в команді архів списку кешу.
— Sopalajo de Arrierez
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.