From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pablo Neira Subject: Introduce user space conntrack tool Date: Mon, 28 Mar 2005 01:56:40 +0200 Message-ID: <42474838.1080805@eurodev.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------060004080000010605030907" To: Netfilter Development Mailinglist List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: netfilter-devel-bounces@lists.netfilter.org Errors-To: netfilter-devel-bounces@lists.netfilter.org List-Id: netfilter-devel.vger.kernel.org This is a multi-part message in MIME format. --------------060004080000010605030907 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit I've started a tool to do common manipulation conntrack. Please, it is *very* raw yet, it still need work but I think that it could be interesting. Of course, it requires libctnetlink and libnfnetlink. An overview: o List conntrack table $ conntrack -L conntrack (Better that cat'ing /proc/net/ip_conntrack all day which is known to harm performance) o Get a conntrack $ conntrack -G conntrack --reply-src 85.136.102.173 \ --reply-dst 66.111.58.51 -p tcp --reply-port-src 44843 \ --reply-port-dst 993 -i 13 o Delete a conntrack $ conntrack -D conntrack --reply-src 85.136.102.173 \ --reply-dst 66.111.58.51 -p tcp --reply-port-src 44843 \ --reply-port-dst 993 -i 13 o Create a conntrack $ conntrack -I conntrack --orig-src 1.1.1.4 --orig-dst 2.2.2.3 \ --reply-src 2.2.2.3 --reply-dst 1.1.1.4 -p tcp --orig-port-src 20 \ --orig-port-dst 10 --reply-port-src 10 --orig-port-dst 20 \ -u ASSURED -t 100 o Flush conntrack table (not implemented) o Display events --------------060004080000010605030907 Content-Type: application/gzip; name="conntrack-0.1.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="conntrack-0.1.tar.gz" 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 K13pSle60pWudKUrXelKV1qW/wPWIO2CABgBAA== --------------060004080000010605030907--