Re: Conntrack insertion race conditions -- any workarounds?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6 September 2018 at 09:26, Florian Westphal <fw@xxxxxxxxx> wrote:
> What conntrack features do you use?

Basically whether or not the flow is in a NEW state. The idea is that
I want to process the first packet or so of a flow, but nothing else.

> Upon reinject the packet(s) should be picked up by conntrack.

This is true. However, when I queried conntrack in the raw table, it
never matched,
even for flows which were clearly established.

Basically, something like this:

iptables -t raw -N sniffer
iptables -t raw -A sniffer -m conntrack --ctstate RELATED,ESTABLISHED -j RETURN
iptables -t raw -A sniffer -j NFQUEUE --queue-num 0 --queue-bypass
iptables -t raw -A OUTPUT -j sniffer

I never returned out of the sniffer chain; all packets were queued. Is
it possible I was just doing something wrong?

I'm probably okay with doing this for DNS, but I wouldn't want to do
it in general for UDP; I can't afford the CPU time to process every
packet. I *hope* that other UDP protocols would be fairly resilient
to drops, but you never know what crazy stuff people are doing. :)



[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux