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.