Мне нужно найти MAC-адрес в локальной сети, и я использую Linux. То, что я делаю, - отправить запрос ARP с помощью libnet, но после отправки 3 запросов кеш все равно не будет обновляться. Я использую wirehark, чтобы поймать пакеты. Из wirehark я получил 3 ARP-повтора после каждого моего запроса ARP. Кто-нибудь знает, почему кеш ARP не будет обновляться?с помощью libnet для отправки запроса ARP, но кеш arp не будет обновляться после получения ответа ARP.
5
A
ответ
4
Ядро Linux не принимает нежелательный ARP по умолчанию. Поскольку запрос был отправлен вашим приложением пользователя, а не ядром, ядро видит ответ как «незапрашиваемый».
Вы можете изменить это значение по умолчанию в /proc/sys/net/ipv4/conf/*/arp_accept
(либо для каждого устройства, либо для всех устройств).
Спасибо за быстрый ответ !!! Теперь я вижу. Тем не менее, есть ли другой способ сделать это, а затем изменить/proc/sys/net/ipv4/conf/*/arp_accept? по ioctl? – Aitjcize
Зачем вам нужен другой способ? Что случилось с этим? Вы можете использовать «все» вместо *, если вы не знаете, какой интерфейс установить. – camh
@Aitjcize: '/ proc/sys /' - это интерфейс для sysctl, но это * предпочтительный * интерфейс в Linux. Вы можете изменить его программно с помощью простого 'fopen(); fprintf(); fclose(); 'sequence. – caf