Я работаю над проектом, чтобы обеспечить возможность перехвата сетевых подключений, исходящих и поступающих на машины Linux на различных этапах жизненного цикла сетевых подключений.
Эти этапы включают следующее:
- Непосредственно перед установлением исходящего сетевого подключения, т. е. при отправке первого пакета SYN.
- Сразу после установления исходящего сетевого соединения.
- Сразу после разрыва связи.
- При установлении входящего соединения — т.е. при получении первого SYN-пакета извне.
Для вышеуказанных требований я оценивал netfilter_queue для получения пакетов в пользовательском пространстве, а затем выносил вердикт, разрешать или отбрасывать пакет.
Меня больше всего беспокоит то, что как только я закончу регистрацию netfilter_queue, я начну получать все пакеты. Но меня интересуют только управляющие пакеты, и я не хочу, чтобы пакеты данных отправлялись в пользовательское пространство.
Итак, мой вопрос: существует ли какой-либо существующий способ сообщить модулю ядра netfilter_queue отправлять только управляющие пакеты, а не пакеты данных? Также можно ли получать уведомления об установлении и прекращении соединения?
Если нет готового способа достичь вышеизложенного, то имеет ли смысл изменить libnfnetfilter_queue и модуль ядра netfilter_queue, чтобы предоставлять только контрольные пакеты в зависимости от установленного режима конфигурации, т.е. ввести NFQNL_COPY_CONTROL_PACKET для копирования только контрольных пакетов в пространство пользователя?
Извините, если мои вопросы кажутся наивными, поскольку я все еще изучаю netfilter_queue.
Я отправил тот же вопрос в список рассылки netfilter, но пока не получил ответа :(
Спасибо за помощь.
Гаурав