2013-07-20 4 views
4

저는 패킷 수집기를 구현하고 있지만 패킷 손실이 있습니다.libpcap은 특정 IP에서 일부 패킷을 버립니다.

내 바이너리는 특정 IP 영역에서 대부분의 패킷을 가져올 수 있습니다. (예 : 100.101.1.1, 100.101.2.1). 그러나 특정 IP 영역에서는 패킷을 가져올 수 없습니다. (예 200.201.1.1, 200.201.2.1)

그 시점에서 tcpdump는 모든 IP 영역에서 패킷을 가져올 수 있습니다.

struct bpf_program fp; 
pcap_t *pcd; 
char errbuf[PCAP_ERRBUF_SIZE]; 
bpf_u_int32 netp; 
char port[16], dev[16]; 
...... 
pcd = pcap_open_live(dev, BUFSIZ, PROMISCUOUS, -1, errbuf); 
pcap_compile(pcd, &fp, port, 0, netp); 
pcap_setfilter(pcd, &fp); 
while(1){ 
    packet = pcap_next(pcd, &hdr); 
} 

나를 위해 어떤 아이디어가 있습니까 : 내 구현에서

내 PCAP의 코드는 다음과 같다? 당신이, 당신이 매개 변수 dev에 대해 동일한 인터페이스 이름을 사용하고 같은 코드의 다음 줄은 모든 권리만큼 고려해야 할 tcpdump를를 사용하여 인터페이스의 모든 IP 패킷을 얻을 수 있음을 언급 한 이후

+2

'ifconfig'의 출력을 추가하고 tcpdump를 실행하는 데 사용하는 명령 줄을 추가하십시오. 찾고있는 IP가 현재 열려있는 인터페이스에 있지 않을 수 있습니까? –

+0

개발자는 무엇입니까? dev 대신 null 또는 any를 전달하면 모든 인터페이스에서 패킷을 캡처 할 수 있어야합니다. – Magn3s1um

답변