Очистить таблицу ARP linux
Обновлено: 21.11.2024
ARP (сокращение от "Протокол разрешения адресов") – это сетевой протокол, используемый для сопоставления сетевого IP-адреса с соответствующим аппаратным MAC-адресом. Когда хост X хочет связаться с хостом Y, X сначала передает запрос ARP в своей локальной сети, чтобы получить MAC-адрес Y. Как только X получает ответ ARP, содержащий MAC-адрес Y, X использует эту информацию для создания кадров Ethernet, предназначенных для Y .
Информация о сопоставлении IP/MAC-адресов, полученная таким образом, кэшируется в локальной таблице ARP, поэтому процесс запроса ARP впоследствии может быть пропущен.
Проблемы могут возникнуть, когда по какой-либо причине хост X не получает ARP-ответы для целевого хоста Y, с которым он хочет установить связь. В других случаях ARP-ответы приходят, но содержат MAC-адрес, связанный с некорректным хостом Z. Такие поврежденные ARP-ответы приведут к перехвату трафика, когда трафик, который должен был быть отправлен на Y, окажется на хосте Z .
При работе с подобными аномальными ситуациями, вызванными ARP, полезно иметь возможность вручную добавлять статические записи ARP в локально кэшированную таблицу ARP. Когда MAC-адрес целевого хоста Y найден в локальной таблице ARP, нет необходимости отправлять запросы ARP.
Добавить статическую запись ARP в локальную таблицу ARP
Приведенные выше команды сообщают локальной таблице ARP, что хост с IP-адресом 10.0.0.2 имеет MAC-адрес 00:0c:29:c0:94:bf . После того как вы настроили статическую запись ARP, вы можете это проверить.
Как вы можете видеть выше, статически настроенная запись ARP отображается правильно, помеченная как PERM в таблице ARP.
Удалить статическую запись ARP из локальной таблицы ARP
Постоянное добавление статических записей ARP в Linux
Обратите внимание, что любая запись ARP, добавленная командой arp во время выполнения, как описано выше, не постоянно сохраняется после перезагрузки. Чтобы добавить статическую запись ARP на постоянной основе, вы можете автоматически загружать записи ARP из внешнего файла при включенном сетевом интерфейсе. Для этого сначала создайте файл, содержащий статические записи ARP.
Команда arp позволяет загружать любой внешний файл с помощью параметра -f.
Теперь вам нужно настроить автоматический запуск приведенной выше команды при включении данного сетевого интерфейса (например, eth0 ). Существуют специфичные для дистрибутива способы запуска команды запуска для сетевых интерфейсов. Ниже приведены примеры для конкретных дистрибутивов.
Здесь я предполагаю, что вы не используете Network Manager в своей системе Linux. Поэтому, если вы используете Network Manager, вам придется сначала отключить его.
В Ubuntu, Debian или Mint добавьте следующую запись в /etc/network/interfaces:
В CentOS, RHEL или Fedora создайте следующий исполняемый скрипт, как описано в этом руководстве:
Сделайте скрипт исполняемым:
Поддержка Xmodulo
Этот веб-сайт стал возможен благодаря минимальной рекламе и вашему любезному пожертвованию через PayPal (кредитная карта) или биткойн ( 1M161JGAkz3oaHNvTiPFjNYkeABox8rb4g ).
Есть несколько причин, по которым вам может понадобиться очистить кэш ARP. В системах Linux есть два распространенных способа, обычно с использованием утилиты arp или ip. В зависимости от вашего дистрибутива Linux и доступности мы предлагаем использовать инструмент ip.
Очистка кеша с помощью ip
В новых дистрибутивах Linux есть утилита ip. Инструмент ip имеет более продвинутый способ очистки всего кеша ARP.
Первая опция -s обеспечивает более подробный вывод. Добавив еще одну, мы можем выбрать соседнюю таблицу. Таблица соседей с командой ip эквивалентна кешу ARP и NDISC. Обратите внимание, что параметры -s доступны не во всех версиях команды ip. Если они не поддерживаются для вашей версии ip, то просто удалите их из команды.
Вывод команды flush all будет выглядеть следующим образом.
Кэш ARP очищен, выводится подробный вывод
Очистка кеша командой arp
Утилита arp не поддерживает возможность полной очистки кэша. Вместо этого он позволяет удалять записи, найденные с помощью параметра -d.
После удаления снова посмотрите с помощью утилиты arp, чтобы увидеть новый список:
В выходных данных этой команды обычно отображаются активные записи ARP.
Запись 192.168.1.1 теперь отображается как incomplete, что означает, что запись ARP будет обновлена, когда она понадобится снова.
Заключение
В зависимости от вашего дистрибутива утилита ip работает быстрее, если вы хотите очистить весь кеш ARP. Для отдельных записей инструмент arp выполнит эту работу так же быстро. Оба инструмента доступны для большинства дистрибутивов, включая Arch Linux, CentOS, Debian, Fedora, RHEL и Ubuntu.
Эта статья об очистке кэша ARP помогла вам?Замечательный! Станьте частью сообщества и поделитесь этим в социальных сетях, чтобы другие знали. Есть вопросы или предложения? Присоединяйтесь к нам в комментариях.
И еще одно.
Продолжайте учиться
Значит, вас интересует безопасность Linux? Присоединяйтесь к учебной программе Linux Security Expert, практической лабораторной тренировочной площадке. Для тех, кто хочет стать (или остаться) экспертом по безопасности Linux.
Сканирование системы безопасности с помощью Lynis и Lynis Enterprise
Запустите автоматическое сканирование системы безопасности и повысьте свою защиту. Lynis — это инструмент безопасности с открытым исходным кодом для проведения углубленного аудита. Это помогает повысить безопасность системы, обнаружить уязвимости и обеспечить соответствие требованиям.
Продолжить чтение
Назначение файла /etc/networks
Руководство по безопасности Linux для защиты IPv6
Список сетевых интерфейсов в Linux
Какой процесс Linux использует определенный сетевой порт?
5 комментариев
Мне нужно применить флеш-очистку таблицы arp, и иметь один вариант как Winsock для случая win7 и, если существует, очистить реестр как Ccleaner, потому что у меня проблема ;
ubuntu@ubuntu:~ $ netstat -nat
Активные подключения к Интернету (серверы и установленные)
Proto Recv-Q Send-Q Локальный адрес Внешний адрес Состояние
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 ::1:631 . * LISTEN
tcp6 1 0 ::1:53003 ::1:631 CLOSE_WAIT
Как решить этот случай, в противном случае появляется следующее: Я думаю, что нужно почистить, путем "прослушивания"< br />Proto Recv-Q Send-Q Локальный адрес Внешний адрес Состояние
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* ПРОСЛУШИВАТЬ
tcp 0 0 172.252.37.7:46799 94.31.29.192:80 УСТАНОВЛЕНО
tcp 0 0 172.252.37.7:51130 91.189.94.232:443 УСТАНОВЛЕНО
tcp 0 0 172.25:2 .95.69:80 УСТАНОВЛЕНО
tcp 0 0 172.252.37.7:44964 149.210.134.182:443 УСТАНОВЛЕНО
tcp 0 0 172.252.37.7:45270 91.189.95.69:80 УСТАНОВЛЕНО
0.2t2p.2 /ESTABLISHED
37.7:60107 64.233.176.95:80 TIME_WAIT
tcp 0 0 172.252.37.7:35899 216.58.219.110:80 TIME_WAIT
tcp 0 78 172.252.37.7:40483 />tcp
219.58.21 0 0 172.252.37.7:59036 216.58.219.67:80 time_wait
TCP 0 78 172.252.37.7:38157 64.233.185.94:443 Last_ack
TCP 0 0 172.252.37.9:45275 91.189.95.69:0 бр /> TCP 0 0 172.252.37 .7:51127 91.189.94.232:443 УСТАНОВЛЕНО
tcp 0 0 172.252.37.7:45271 91.189.95.69:80 УСТАНОВЛЕНО
tcp 0 0 172.252.37.7:41876 /br />ESTABLIED
216.58.819. TCP 0 0 172.252.37.7:43539 64.233.18539 64.233.185.154:80 Основана
TCP 0 0 172.252.37.7:45272 91.189.95.69:80 Установлено
TCP 0 0 172.252.37.7:39388 24.139.135.147:0
tcp 0 0 172.252.37.7:60106 64.233.176.95:80 TIME_WAIT
tcp 0 0 172.252.37.7:51131 91.189.94.232:443 ESTABLISHED
tcp 0 0 172.587.76:332.3 219.78:80 TIME_WAIT
tcp 0 0 172.252.37.7:59708 216.58.219.66:80 ESTABLISHED
tcp 0 0 172.252.37.7:51586 173.194.219.95:80 TIME_WAIT
1p
2.72 tc :51128 91.189.94.232:443 ESTABLISHED
tcp 0 0 172.252.37.7:37227 216.58.219.98:80 TIME_WAIT
tcp 0 0 172.252.37.7:45274 /cpEDLISH
tcpEST 805.69:805.69 0 172.252.37.7:51587 173.194.219.95:80 TIME_WAIT
tcp 0 0 172.252.37.7:35809 64.233.176.94:80 ESTABLISHED
tcp 0 0 172.252.37.6:281003.5TIME _Wait
TCP 0 0 172.252.37.7:51132 91.189.94.232:43 Установлено
TCP 0 0 172.252.37.7:51129 91.189.94.232:44 91.189.94.232:44 3
TCP 0 0 0 172.252.37.7:35666 216.58 .219.110:80 TIME_WAIT
tcp 0 0 172.252.37.7:34426 173.194.219.94:80 ESTABLISHED
tcp6 0 0 ::1:631 . * ПРОСЛУШИВАТЬ
tcp6 1 0 ::1:53003 ::1:631 CLOSE_WAIT
Спасибо за внимание,
Это ваши активные подключения (к программному обеспечению вашего веб-сервера). ARP — это протокол на один уровень ниже этих сетевых подключений. Подробнее об очистке таблицы ARP см. в статье о том, как это сделать. Чтобы легко сбросить активные подключения, перезагрузите демон вашего веб-сервера (Apache, nginx и т. д.). На портах со статусом LISTEN запущен демон (53 = DNS, 631 = SAMBA или CUPS).
Утверждение «Второй определяет соседнюю таблицу» неверно. Оба -s предназначены для многословия (предоставление 2 увеличивает его). Основная команда — это просто «ip neigh flush all»
В зависимости от вашей версии утилиты ip параметр -s может быть недоступен. Текст был расширен, чтобы отразить это. Спасибо за отзыв!
ip neigh flush all не очищает кэш полностью, т. е. не удаляет записи из соседней таблицы. Вместо этого он только очищает кэшированные MAC-адреса в соседней таблице, т. е. устанавливает для всех записей состояние FAILED. Но записи с IP и адресом IPv6 по-прежнему хранятся в кеше.В прежние времена срок действия записей ядра истекал через некоторое время без использования, но, к сожалению, это больше не делается, и, похоже, нет возможности удалить записи вручную.
Даже обычный пользователь может заполнить соседний кеш большим количеством записей, которые останутся до следующей перезагрузки. Например. с «для n в ; выполнить ping -c1 10.0.0.$n; готово”
Оставить ответ Отменить ответ
Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.
Об аудите Linux
Этот блог является частью нашей миссии: помочь отдельным лицам и компаниям сканировать и защищать их системы. Мы просто любим безопасность Linux, укрепление системы и вопросы, касающиеся соответствия требованиям.
Помимо блога, у нас есть инструмент для аудита безопасности Lynis. Открытый исходный код, GPL и бесплатное использование.
Для тех, у кого есть корпоративные потребности или кто хочет провести аудит нескольких систем, существует версия Enterprise.
"Единое решение по обеспечению безопасности для аудита, укрепления и защиты ваших систем Linux/UNIX."
Преимущества:
Наслаждайтесь статьями!
Автоматизация безопасности Linux и UNIX
Lynis – это бесплатный сканер безопасности с открытым исходным кодом. Это помогает тестировать защиту ваших систем Linux, macOS и Unix. Типичные варианты использования этого программного обеспечения включают усиление защиты системы, сканирование уязвимостей и проверку соответствия стандартам безопасности (PCI-DSS, ISO27001 и т. д.).
Последние записи
Контакт
Этот блог является частью нашей миссии по распространению ценных советов по безопасности Linux. Мы доступны через @linuxaudit
Информация о компании
CISOfy
De Klok 28,
5251 DN, Влеймен, Нидерланды
+31-20-2260055
Вместо того, чтобы очищать кеш arp, они просто делают записи недействительными (они будут отображаться как неполные). Даже через несколько минут кэш ARP выглядит так:
(MAC шлюза был обновлен - это нормально)
Как я могу действительно очистить кэш ARP, например, "удалить все записи из таблицы"? Я не хочу оставлять неполные записи, я хочу, чтобы они были удалены. Возможно ли это?
Это моя система:
Не хватает записей в таблице arp? Может быть, есть программа, запрашивающая этот IP-адрес, таким образом обновляя эту запись. Проверьте с помощью wireshark или tcpdump .
@MichaelMartinez, потому что проблема xy. Похоже, что этот вопрос не является основной проблемой, и может быть какая-то основная проблема, над которой вместо этого должен работать OP.
Причина, по которой этой информации нет в вопросе, заключается в том, что она не актуальна. Я хочу чистый кеш ARP. Полная остановка. Вы не верите мне, что я этого хочу, но это ваша проблема, а не моя. Уверяю вас: мне нужен чистый ARP-кеш.
4 ответа 4
Обязательно делайте это сразу, чтобы не нарушить подключение к сети до того, как вы снова включите ARP.
Примечание. Точки с запятой позволяют сократить эту команду до однострочника, но в блоке кода на SO она выглядит ужасно.
Пример вывода на Raspbian
Нужно делать это либо в сценарии оболочки, либо на компьютере, так как это, похоже, прерывает соединение после первой команды.
Я сделал это в одной строке, и это сработало: dev=eth2; ip link set arp off dev $dev; спать 1; ip link set arp на dev $dev . Сон может не понадобиться.
Ваше первое решение работает, просто требуется немного времени (5-10 секунд в моем тесте на Kali), чтобы перейти от "(незавершенного)" к отсутствию записей.
Предположительно, он находится в каком-то переходном состоянии перед удалением.
У меня (Ubuntu 14.04) такого не было: записи долго (навсегда?) хранятся в незавершенном состоянии. Я еще раз проверю это сегодня.
Проверено: даже через несколько минут записи все еще существуют в незавершенном состоянии (arp 1.88, net-tools 1.60)
Ну, тогда ваша проблема, безусловно, связана с нестандартным поведением, возможно, характерным для Ubuntu 14.04. Правильный способ сделать это в Linux просто не работает для вас. Надеюсь, вы скоро найдете свой ответ. Можете удалить этот, если хотите.
Нет, оставьте это, это дает информацию для других. Но я предполагаю, что более «стандартное» поведение можно найти в Ubuntu, а не в Kali, который является дистрибутивом для тестирования на проникновение и имеет значения по умолчанию, специально настроенные для этого варианта использования.
Упомянутое вами решение является правильным и безопасным подходом к очистке таблицы ARP:
IP Neigh сбросить все [dev ]
Если определенные записи становятся недействительными, это временно и является частью протокола ARP. Важным аспектом является то, что сопоставление исчезло, запись ARP, помеченная как неполная, не является записью IP-MAC в таблице.
Я только что попробовал это, и в моем случае это сразу очистило таблицу и не оставило неполных записей.
В некоторых (неясных) случаях ip neigh flush all недостаточно.В моем случае не удалялись записи, добавленные с помощью arp -s.
Я предпочитаю это моему собственному ответу выше, с дополнительным предостережением относительно статических записей ARP, в зависимости от желаемого поведения.
В некоторых системах команда ip недоступна.
Итак, это альтернатива набору IP-ссылки arp off dev eth0; ip link set arp по команде dev eth0.
Если вы хотите удалить все записи из таблицы одной командой, используйте цикл for, как в следующем примере.
ДО
УДАЛЕНИЕ ARP С ПОМОЩЬЮ ARP -D КОМАНДЫ
ПОСЛЕ: MAC-АДРЕС УДАЛЕН ИЗ ЗАПИСЕЙ С НЕПОЛНЫМ СООБЩЕНИЕМ
Это правда, что при удалении arp с помощью команды arp -d записи arp остаются с незавершенным сообщением.
Чтобы решить эту проблему, используйте ifconfig ethx up/down следующим образом
ДО
ОТКЛЮЧИТЬ И ВКЛЮЧИТЬ ИНТЕРФЕЙСЫ ETH1 И ETH2 ОДНОЙ КОМАНДОЙ
Протокол разрешения адресов (ARP) — очень важная часть IP-сетей. ARP используется для подключения OSI Network Later (уровень 3) к канальному уровню OSI (уровень 2).
Для связи с любым устройством в сети устройство должно иметь MAC-адрес Ethernet.
Оглавление
Что такое ARP-кэш?
Кэш ARP работает как библиотека динамических записей ARP. Записи ARP создаются, когда IP-адреса преобразуются из имен хостов, а затем в MAC-адреса. Этот процесс отвечает за то, чтобы устройства могли обмениваться данными с другими устройствами, используя IP-адреса.
Причины, по которым вам следует очистить кэш ARP с вашего компьютера
Очистка кеша ARP не является необходимой задачей, в большинстве случаев перезагрузки маршрутизатора или коммутатора достаточно для устранения проблем с подключением.
Но со временем база данных arp устаревает, и новые записи не всегда могут переопределять записи с истекшим сроком действия в базе данных. Таким образом, это может повлиять на производительность сети и вызвать ошибки, которые могут повлиять на вашу систему.
Как определить, есть ли проблема с кэшем ARP в вашей системе?
- Вы не можете пропинговать определенные IP-адреса, если знаете, что они работают правильно.
- Вы не можете загружать веб-сайты, которые работают хорошо или правильно работают на разных устройствах.
Если вы столкнулись с такими знаками, вам следует очистить кеш ARP прямо сейчас!
Очистка кеша ARP заставит все запросы в вашей базе данных пройти весь процесс ARP еще раз.
Как очистить кеш ARP в Linux?
Для поиска записей в кэше arp мы можем использовать командную утилиту arp в Linux. Выполните следующую команду, чтобы вывести список всех доступных записей:
Обратите внимание, что у нас есть три записи кеша arp, доступные в таблице кеша. Далее мы очистим таблицу кеша arp.
В основном существует два метода очистки кэша ARP на компьютере с Linux.
Обе командные утилиты доступны в большинстве дистрибутивов Linux, таких как Kali linux, Ubuntu, Arch Linux, CentOS, Debian, Fedora, RHEL и т. д.
Очистка кеша командой arp
arp — это утилита командной строки, доступная в Linux для управления кэшем системы. Команда arp позволит пользователям очистить определенные записи кэша. Мы можем выбрать, какие записи кэша следует сбросить или очистить.
Просто используйте параметр -d, чтобы очистить показанные записи
Чтобы подтвердить, какие объекты удалены, выполните следующую команду
Обратите внимание, что запись кэша для 192.168.1.240 очищена.
это означает, что запись ARP будет обновляться всякий раз, когда это необходимо.
Проблема: иногда команда arp -d используется для удаления кеша, она оставляет таблицу с записями, где HWaddress помечен как (неполный), но запись все еще остается там. Итак, вопрос в том, как полностью удалить запись arp из таблицы ИЛИ сделать таблицу пустой?
Мы можем использовать утилиту ip command для решения этого типа проблемы. Прочтите следующий пункт «Очистка кэша с помощью команды ip (полностью очистить кэш arp)»
Очистка кеша с помощью команды ip (полностью очистить кеш arp)
Очистка кеша ARP с помощью команды ip является наиболее предпочтительным способом в Linux, так как он может очистить весь кеш ARP за один раз. Команда ip встроена в новые дистрибутивы Linux.
используйте следующую команду, чтобы полностью очистить кэш arp с помощью утилиты ip:
Первый параметр -s обеспечивает более подробный вывод.
Второй -s для выбора соседней таблицы. Таблица соседей с командой ip эквивалентна кешу ARP и NDISC.
Эта команда за один раз полностью удалит кэш ARP из системы.
Чтобы подтвердить это, просто выполните следующую команду
Как очистить кеш ARP в Windows?
Очистка кеша arp в Windows — очень простая задача. Мы будем использовать командную строку, чтобы очистить кеш arp или сбросить кеш arp из системы Windows. Этот метод можно применить к любой ОС Windows, например Windows 7, Windows 8, Windows 10 и т. д.
Здесь требуется запустить командную строку (cmd) от имени администратора.Если вы находитесь в учетной записи администратора, все в порядке, вы можете запустить cmd напрямую. Но если вы не вошли в систему как системный администратор, вам нужно запустить cmd от имени администратора, чтобы команда NetShell работала.
Чтобы просмотреть кеш Windows arp, просто запустите команду arp -a в командной строке.
Чтобы очистить кеш arp, просто запустите следующую команду netsh
После очистки кеша arp подтвердите это, повторно запустив команду arp -a.
Обратите внимание на сообщение «Записи ARP не найдены», что означает, что кэш Windows ARP очищен или сброшен.
Мы также можем использовать arp -d для очистки кеша arp для определенной записи только в Windows.
Читайте также: