RHEL에서 (다른 개방형 소켓에 의해 라우팅되거나 처리되지 않고) 커널에서 직접 모든 레벨 2 패킷을 훔치는 원시 소켓을 생성하기 위한 애플리케이션(가능한 경우 모듈 또는 사용자 수준)을 개발하고 싶습니다. 프로그래밍 방식으로 특정 패킷 유형을 처리하기 위해 패킷을 pcap에 공급하고 싶습니다. 이를 수행하는 가장 좋은 방법은 무엇입니까? 제로 복사 네트워킹, pcap, BPF에 대한 기사를 본 적이 있지만 모두 패킷 캡처/복사를 다루는 것 같아요.
답변1
인터페이스에 대한 IP 주소를 지정하지 마십시오. 그냥 켜고 libpcap을 사용하여 패킷을 캡처하세요. IP 주소가 없으면 우려되는 경우 커널은 이를 무시합니다.
인터페이스가 커널에 의해 처리되는 IP 주소를 갖고 특정 IP 패킷만 애플리케이션으로 리디렉션되도록 하려면 netfilter를 사용하면 됩니다. NFQUEUE 또는 NFLLOG iptables 대상을 확인하세요.
패킷 캡처 성능에 관심이 있다면 다음을 확인하세요.PF_RING.
그렇지 않으면, 나에게는 명확하지 않기 때문에 당신이 원하는 것이 무엇인지 더 자세히 설명할 수 있을 것입니다.