В любом случае, Netfilter_queue предоставляет только контрольные пакеты

Я работаю над проектом, чтобы обеспечить возможность перехвата сетевых подключений, исходящих и поступающих на машины Linux на различных этапах жизненного цикла сетевых подключений.

Эти этапы включают следующее:

  1. Непосредственно перед установлением исходящего сетевого подключения, т. е. при отправке первого пакета SYN.
  2. Сразу после установления исходящего сетевого соединения.
  3. Сразу после разрыва связи.
  4. При установлении входящего соединения — т.е. при получении первого SYN-пакета извне.

Для вышеуказанных требований я оценивал netfilter_queue для получения пакетов в пользовательском пространстве, а затем выносил вердикт, разрешать или отбрасывать пакет.

Меня больше всего беспокоит то, что как только я закончу регистрацию netfilter_queue, я начну получать все пакеты. Но меня интересуют только управляющие пакеты, и я не хочу, чтобы пакеты данных отправлялись в пользовательское пространство.

Итак, мой вопрос: существует ли какой-либо существующий способ сообщить модулю ядра netfilter_queue отправлять только управляющие пакеты, а не пакеты данных? Также можно ли получать уведомления об установлении и прекращении соединения?

Если нет готового способа достичь вышеизложенного, то имеет ли смысл изменить libnfnetfilter_queue и модуль ядра netfilter_queue, чтобы предоставлять только контрольные пакеты в зависимости от установленного режима конфигурации, т.е. ввести NFQNL_COPY_CONTROL_PACKET для копирования только контрольных пакетов в пространство пользователя?

Извините, если мои вопросы кажутся наивными, поскольку я все еще изучаю netfilter_queue.

Я отправил тот же вопрос в список рассылки netfilter, но пока не получил ответа :(

Спасибо за помощь.

Гаурав


person Gaurav    schedule 03.10.2013    source источник


Ответы (1)


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

ip6tables -I INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j QUEUE

Параметры --tcp-flags описаны на этой странице: http://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO-7.html#ss7.3

person sep332    schedule 06.01.2014