Re: Connections with SYN aren't NEW

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

 



On Sunday 14 December 2003 4:23 pm, Loïc Minier wrote:

>  I face a problem with some TCP connections: I want to accept new
>  TCP connections only if they match both --syn and -m state --state
>  NEW. This turns out to be a bad practice in some case where I see
>  legitimate new TCP connections with correct flags matching --syn but
>  which do not match -m state --state NEW.
>
>    This happens a lot with HTTP clients and with DNS requests, and I
>  think this is because of port reuse:
>    - the HTTP client opens a connection from port xyz to port 80
>    - it finishes the session and closes the connection
>    - it reopens another connection with the same port xyz to the same
>      host on port 80
>
>  Am I wrong in thinking the connections should match -m state --state
>  NEW, even if a connection happened with the same ports/ips a few
>  seconds ago? What can I change to fulfill my wishes?

It depends what happens at the second stage in your description above "it 
finishes the session and closes the connection".

Basically, netfilter will match NEW if there isn't an entry in the 
conntracking table for the packet (ie: it's not ESTABLISHED, nor RELATED).

An entry will only get removed from the conntrack table after being 
ESTABLISHED if netfilter:

 - sees the FIN packet/s, or
 - sees a RST packet, or
 - times out (after 5 days....)

So, if your HTTP client is just dropping a connection without closing it 
nicely (using FIN, or even RST) then netfilter will think it is still 
ESTABLISHED.

I don't know if this explains the problem you are seeing, but it's a reason 
why netfilter may think the connection is in a different state than the 
client does.

Antony.

-- 
In science, one tries to tell people
in such a way as to be understood by everyone
something that no-one ever knew before.

In poetry, it is the exact opposite.

 - Paul Dirac

                                                     Please reply to the list;
                                                           please don't CC me.



[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