2010-07-29 11 views
5

Ho bisogno di cercare l'indirizzo MAC nella rete locale e sto usando Linux. Quello che faccio è inviare una richiesta ARP con libnet, ma dopo aver inviato 3 richieste, la cache non si aggiornerà ancora. Io uso wireshark per catturare i pacchetti. Da wireshark, ho avuto 3 replay ARP, dopo ciascuna delle mie richieste ARP. Qualcuno sa come mai la cache ARP non verrà aggiornata?utilizzando libnet per inviare la richiesta ARP, ma la cache arp non si aggiornerà dopo aver ricevuto la risposta ARP

risposta

4

Il kernel Linux non accetta ARP non richiesto per impostazione predefinita. Poiché la richiesta è stata inviata dall'applicazione userspace e non dal kernel, il kernel vede la risposta come "non richiesta".

È possibile modificare questo valore predefinito in /proc/sys/net/ipv4/conf/*/arp_accept (su base per dispositivo o su tutti i dispositivi).

+0

Grazie per la rapida risposta !!! Ora vedo. Ancora, c'è un altro modo per farlo altro poi cambiando/proc/sys/net/ipv4/conf/*/arp_accept? di ioctl? – Aitjcize

+0

Perché hai bisogno di un altro modo? Cosa c'è di sbagliato in questo modo? Puoi usare "tutti" anziché * se non sai su quale interfaccia impostarlo. – camh

+0

@Aitjcize: '/ proc/sys /' è un'interfaccia per sysctl, tuttavia è l'interfaccia * preferred * su Linux. Puoi cambiarlo in modo programmatico con un semplice 'fopen(); fprintf(); fclose(); 'sequenza. – caf

Problemi correlati