netfilter.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* newbie question on netfilter-conntrack
@ 2010-06-20 11:41 Pete Kay
  2010-06-20 11:56 ` Andrew Beverley
  2010-06-20 12:15 ` Jan Engelhardt
  0 siblings, 2 replies; 7+ messages in thread
From: Pete Kay @ 2010-06-20 11:41 UTC (permalink / raw)
  To: netfilter

Hi,

I am new to netfilter-conntrack so please excuse me for my simple question.

I am trying to set up a rule such that any UDP packet coming from a
specific IP:port will be redirected to another IP:port.  Could someone
please give me an example how this can be done?

Also, I would like to know if it is possible to monitor the proxying
of the UDP packet to obtain information such as jitter and packet
lost.  How can I do that?


Thanks,
P

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

* Re: newbie question on netfilter-conntrack
  2010-06-20 11:41 newbie question on netfilter-conntrack Pete Kay
@ 2010-06-20 11:56 ` Andrew Beverley
  2010-06-20 12:15 ` Jan Engelhardt
  1 sibling, 0 replies; 7+ messages in thread
From: Andrew Beverley @ 2010-06-20 11:56 UTC (permalink / raw)
  To: Pete Kay; +Cc: netfilter

Pete,

> I am trying to set up a rule such that any UDP packet coming from a
> specific IP:port will be redirected to another IP:port.  Could someone
> please give me an example how this can be done?

You'll need something like:

iptables -t nat -A PREROUTING -p udp --sport 1234 --source 1.2.3.4 \
	-j DNAT --to-destination 4.3.2.1:4321

If you do 'man iptables' you will see details of all these options. You
may also find that this simple kernel routing diagram helps:

http://www.docum.org/docum.org/kptd/

> Also, I would like to know if it is possible to monitor the proxying
> of the UDP packet to obtain information such as jitter and packet
> lost.  How can I do that?

Not sure about that I'm afraid; maybe somebody else can help.

Andy



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

* Re: newbie question on netfilter-conntrack
  2010-06-20 11:41 newbie question on netfilter-conntrack Pete Kay
  2010-06-20 11:56 ` Andrew Beverley
@ 2010-06-20 12:15 ` Jan Engelhardt
  2010-06-21  2:53   ` Pete Kay
  2010-06-21  7:49   ` Pete Kay
  1 sibling, 2 replies; 7+ messages in thread
From: Jan Engelhardt @ 2010-06-20 12:15 UTC (permalink / raw)
  To: Pete Kay; +Cc: netfilter

On Sunday 2010-06-20 13:41, Pete Kay wrote:

>Hi,
>
>I am new to netfilter-conntrack so please excuse me for my simple question.
>
>I am trying to set up a rule such that any UDP packet coming from a
>specific IP:port will be redirected to another IP:port.  Could someone
>please give me an example how this can be done?

Why not just directly connect to the right tuple?

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

* Re: newbie question on netfilter-conntrack
  2010-06-20 12:15 ` Jan Engelhardt
@ 2010-06-21  2:53   ` Pete Kay
  2010-06-21  7:49   ` Pete Kay
  1 sibling, 0 replies; 7+ messages in thread
From: Pete Kay @ 2010-06-21  2:53 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: netfilter

Hi,

I need to do a fast UDP proxy, so i am looking for ways that I can
insert/remove 1000 entries/s.   I tried iptable but it is too slow.
Therefore, I am looking to use conntrack-tool to insert the entry to
see if it can be faster.  Does anyone know if that is possible?  I
have trouble figure out how to use the conntrack-tool's conntrack
command ( -I option).  Can someone please give me an example?

Thanks,
P

On Sun, Jun 20, 2010 at 8:15 PM, Jan Engelhardt <jengelh@medozas.de> wrote:
> On Sunday 2010-06-20 13:41, Pete Kay wrote:
>
>>Hi,
>>
>>I am new to netfilter-conntrack so please excuse me for my simple question.
>>
>>I am trying to set up a rule such that any UDP packet coming from a
>>specific IP:port will be redirected to another IP:port.  Could someone
>>please give me an example how this can be done?
>
> Why not just directly connect to the right tuple?
>

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

* Re: newbie question on netfilter-conntrack
  2010-06-20 12:15 ` Jan Engelhardt
  2010-06-21  2:53   ` Pete Kay
@ 2010-06-21  7:49   ` Pete Kay
  2010-06-21  9:20     ` Pete Kay
  1 sibling, 1 reply; 7+ messages in thread
From: Pete Kay @ 2010-06-21  7:49 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: netfilter

Hi Jan,

Thanks for your hint.  Could you share with me how to "connect to the
right tuple"?

Is there any C library that I can use?

thanks,
P

On Sun, Jun 20, 2010 at 8:15 PM, Jan Engelhardt <jengelh@medozas.de> wrote:
> On Sunday 2010-06-20 13:41, Pete Kay wrote:
>
>>Hi,
>>
>>I am new to netfilter-conntrack so please excuse me for my simple question.
>>
>>I am trying to set up a rule such that any UDP packet coming from a
>>specific IP:port will be redirected to another IP:port.  Could someone
>>please give me an example how this can be done?
>
> Why not just directly connect to the right tuple?
>

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

* Re: newbie question on netfilter-conntrack
  2010-06-21  7:49   ` Pete Kay
@ 2010-06-21  9:20     ` Pete Kay
  2010-06-21  9:50       ` Pablo Neira Ayuso
  0 siblings, 1 reply; 7+ messages in thread
From: Pete Kay @ 2010-06-21  9:20 UTC (permalink / raw)
  To: netfilter

Hi,

Sorry for posting multiple times.  This should be my last one.

I modified the conntrack_create_nat.c to redirect udp traffic coming
from a specific IP:port to another IP, but the program gives error,
the result of ret is (-1).  Does anyone know what's wrong?

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

#include <libnetfilter_conntrack/libnetfilter_conntrack.h>
#include <libnetfilter_conntrack/libnetfilter_conntrack_udp.h>

int main()
{
	int ret;
	struct nfct_handle *h;
	struct nf_conntrack *ct;

	ct = nfct_new();
	if (!ct) {
		perror("nfct_new");
		return 0;
	}

	nfct_set_attr_u8(ct, ATTR_L3PROTO, AF_INET);
	nfct_set_attr_u32(ct, ATTR_IPV4_SRC, inet_addr("192.168.1.12"));
	nfct_set_attr_u32(ct, ATTR_IPV4_DST, inet_addr("192.168.1.102"));
	
	nfct_set_attr_u8(ct, ATTR_L4PROTO, IPPROTO_UDP);
	nfct_set_attr_u16(ct, ATTR_PORT_SRC, htons(5060));
	nfct_set_attr_u16(ct, ATTR_PORT_DST, htons(5060));

	nfct_setobjopt(ct, NFCT_SOPT_SETUP_REPLY);
	//nfct_set_atrr_u8(ct, ATTR_UDP_STATE, UDP_CONNTRACK_SYN_SENT);
	//nfct_set_attr_u8(ct, ATTR_TCP_STATE, TCP_CONNTRACK_SYN_SENT);
	nfct_set_attr_u32(ct, ATTR_TIMEOUT, 100);

	nfct_set_attr_u32(ct, ATTR_SNAT_IPV4, inet_addr("192.168.1.13"));

	h = nfct_open(CONNTRACK, 0);

	if (!h) {
		perror("nfct_open");
		return -1;
	}

	ret = nfct_query(h, NFCT_Q_CREATE, ct);

	printf("TEST: create conntrack ");

	if (ret == -1)
		printf("(%d)\n", ret);
	else
		printf("(OK)\n");

	nfct_close(h);

	ret == -1 ? exit(EXIT_FAILURE) : exit(EXIT_SUCCESS);
}

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

* Re: newbie question on netfilter-conntrack
  2010-06-21  9:20     ` Pete Kay
@ 2010-06-21  9:50       ` Pablo Neira Ayuso
  0 siblings, 0 replies; 7+ messages in thread
From: Pablo Neira Ayuso @ 2010-06-21  9:50 UTC (permalink / raw)
  To: Pete Kay; +Cc: netfilter

Pete Kay wrote:
> Hi,
> 
> Sorry for posting multiple times.  This should be my last one.
> 
> I modified the conntrack_create_nat.c to redirect udp traffic coming
> from a specific IP:port to another IP, but the program gives error,
> the result of ret is (-1).  Does anyone know what's wrong?

# ./a.out
TEST: create conntrack (OK)
decadence:/tmp# conntrack -L -p udp
udp      17 92 src=192.168.1.12 dst=192.168.1.102 sport=5060 dport=5060
packets=0 bytes=0 [UNREPLIED] src=192.168.1.102 dst=192.168.1.13
sport=5060 dport=5060 packets=0 bytes=0 mark=0 secmark=0 use=2
conntrack v0.9.14 (conntrack-tools): 1 flow entries have been shown.

It works fine here with 2.6.34 and libnetfilter_conntrack 0.0.101

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

end of thread, other threads:[~2010-06-21  9:50 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-20 11:41 newbie question on netfilter-conntrack Pete Kay
2010-06-20 11:56 ` Andrew Beverley
2010-06-20 12:15 ` Jan Engelhardt
2010-06-21  2:53   ` Pete Kay
2010-06-21  7:49   ` Pete Kay
2010-06-21  9:20     ` Pete Kay
2010-06-21  9:50       ` Pablo Neira Ayuso

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).