pcap и raw socket

Я хочу разработать приложение (если возможно, модуль или пользовательский уровень), чтобы создать сырой сокет в RHEL, крадущем все пакеты уровня 2 непосредственно из ядра (без маршрутизации или обработки другими открытыми сокетами). Я хотел бы передать пакеты pcap для программной обработки некоторых типов пакетов. Что было бы лучше всего? Я видел статьи о нулевой сети копирования, pcap, BPF, но я думаю, они все работают с захватами / копиями пакетов?

Не предоставляйте интерфейсу IP-адрес. Просто поднимите его и захватите пакеты с помощью libpcap. Если у него нет IP-адреса, ядро ​​оставит его в покое, если это вас беспокоит.

Если вы хотите, чтобы интерфейс имел IP-адрес, обработанный ядром, и перенаправлял только некоторые IP-пакеты в ваше приложение, netfilter может это сделать. Посмотрите на цель NFQUEUE или NFLOG iptables.

Если производительность захвата пакетов является вашей проблемой, посмотрите на PF_RING .

В противном случае, возможно, вы сможете более подробно объяснить, что вы пытаетесь сделать, поскольку это неясно мне.