2010-07-29 7 views
5

로컬 네트워크에서 MAC 주소를 조회해야하며 Linux를 사용하고 있습니다. 내가하는 일은 libnet과 함께 ARP 요청을 보내지 만 3 개의 요청을 보낸 후에도 캐시가 업데이트되지 않습니다. 나는 wireshark를 사용하여 패킷을 잡습니다. wireshark에서 각 ARP 요청 후 3 회의 ARP 재생을 받았습니다. 누구도 ARP 캐시가 업데이트되지 않는 이유를 알고 있습니까?libnet을 사용하여 ARP 요청을 보내지 만 ARP 캐시가 ARP 응답을받은 후 업데이트되지 않습니다.

답변

4

Linux 커널은 기본적으로 원치 않는 ARP를 허용하지 않습니다. 요청은 커널이 아닌 사용자 공간 응용 프로그램에서 보낸 것이므로 커널은 응답을 "요청하지 않음"으로 간주합니다.

/proc/sys/net/ipv4/conf/*/arp_accept에서이 기본값을 변경할 수 있습니다 (장치별로 또는 모든 장치에서 변경할 수 있음).

+0

빠른 답장을 보내 주셔서 감사합니다 !!! 이제 알았어. 아직도/proc/sys/net/ipv4/conf/*/arp_accept를 바꾸는 다른 방법이 있습니까? ioctl에 의해? – Aitjcize

+0

왜 다른 방법이 필요합니까? 그게 뭐가 잘못 됐어? 어떤 인터페이스를 설정해야할지 모르는 경우 * 대신 "all"을 사용할 수 있습니다. – camh

+0

@Aitjcize :'/ proc/sys /'는 sysctl에 대한 인터페이스이지만, Linux에서는 * preferred * 인터페이스입니다. 간단한 fopen(); fprintf(); fclose();'시퀀스. – caf