All of lore.kernel.org
 help / color / mirror / Atom feed
* CONNLIMIT Questions
@ 2009-01-18 18:32 Peter Renzland
  2009-01-19 15:34 ` Sitaram Chamarty
  0 siblings, 1 reply; 6+ messages in thread
From: Peter Renzland @ 2009-01-18 18:32 UTC (permalink / raw)
  To: netfilter

What I want to do is limit the total number of (mostly) outgoing  
(mostly UDP) connection (attempts) by LAN IP.  This is because of out- 
of-control BT (etc.) configurations and clients that will try to set  
up thousands of connections in a few seconds, almost all of which will  
fail and time out.  With a dozen LAN users doing this simultaneously,  
the router is toast.


I have seen the following two rules suggested frequently:


iptables -I FORWARD -p tcp --syn -m iprange --src-range  
192.168.0.100-192.168.0.199 -m connlimit --connlimit-above 100 -j DROP

iptables -I FORWARD -p ! tcp -m iprange --src-range  
192.168.0.100-192.168.0.199 -m connlimit --connlimit-above 50 -j DROP


My questions:

1. Is REJECT any better than DROP?  (Will anything or anyone actually  
get the reject message and learn anything from it?)

2. Is the "--syn" necessary?  The manual says:

     "--syn
         Only match TCP packets with the SYN bit set and the ACK,RST  
and FIN bits cleared. Such packets are used to request TCP connection  
initiation; for example, blocking such packets coming in an interface  
will prevent incoming TCP connections, but outgoing TCP connections  
will be unaffected"

      When limiting connections with CONNLIMIT, can I not rely on  
CONNTRACK's logic to determine that a new connection is about to be  
tracked?  Why should I have to duplicate part of this effort?  Does  
the logic of the text of that paragraph accurately reflect the  
program's logic?


3. Is there not a single rule that will limit connections regardless  
of protocol?  Why does:

     iptables -I FORWARD  -m iprange --src-range  
192.168.0.100-192.168.0.199 -m connlimit --connlimit-above 50 -j DROP

     fail with "Invalid argument"?

     This man page ( http://linux.die.net/man/8/iptables ) states:

    "connlimit
	Allows you to restrict the number of parallel TCP connections to a  
server per client IP address (or address block)."


     And all examples are for TCP, and all specify "--syn".


     So, is "! tcp" just a kludge to get around a "tcp-only" design  
limitation?  Or is there some "good" reason? :-)


     (After all, the concept of connection in connection-tracking is  
much broader than the concept of connection in TCP.  What might I be  
missing? :-)


4. Here is the BIG question:

     The manual says: "restrict the number of parallel TCP connections  
to a server".

     But that is not at all what I want to do.   I want to restrict  
the number of greatly *divergent* connections to many, many different  
servers.



Perhaps there is a better (effective) way to limit connection attempts  
by LAN IP?
In any direction and for any protocol.


Thanks much!

Peter Renzland

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-01-21 19:25 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-18 18:32 CONNLIMIT Questions Peter Renzland
2009-01-19 15:34 ` Sitaram Chamarty
2009-01-21 17:54   ` Peter Renzland
2009-01-21 18:43     ` Gáspár Lajos
2009-01-21 18:57       ` Peter Renzland
2009-01-21 19:25     ` Peter Renzland

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.