* UDP port redirect
@ 2007-07-31 23:04 thiago
2007-08-01 6:07 ` Martijn Lievaart
2007-08-01 7:05 ` Покотиленко Костик
0 siblings, 2 replies; 5+ messages in thread
From: thiago @ 2007-07-31 23:04 UTC (permalink / raw)
To: netfilter
Hello all,
I got a problem when redirecting a UDP port. The rules are:
# TCP port redirect - working fine:
iptables -t nat -A PREROUTING -i <ext_if> -p tcp -d <ext_ip> --dport 22 -j
DNAT -m state --state NEW --to <int_ip>:1194
iptables -A FORWARD -i <ext_if> -p tcp -d <int_ip> --dport 1194 -m state
--state NEW -j ACCEPT
# UDP port redirect - not going through
iptables -t nat -A PREROUTING -i <ext_if> -p udp -d <ext_ip> --dport 22 -j
DNAT -m state --state NEW --to <int_ip>:1194
iptables -A FORWARD -i <ext_if> -p udp -d <int_ip> --dport 1194 -m state
--state NEW -j ACCEPT
I hit the nat/prerouting rule, but never reach the filter/forward one.
As you can see the only change I've made from the tcp rule to udp rule, is
just the matching protocol.
I can debug it a little more, but also would like to hear from you guys if
you have any hints.
iptables v1.3.8
2.6.16.36-default
Thanks !
Thiago.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: UDP port redirect
2007-07-31 23:04 UDP port redirect thiago
@ 2007-08-01 6:07 ` Martijn Lievaart
2007-08-01 7:05 ` Покотиленко Костик
1 sibling, 0 replies; 5+ messages in thread
From: Martijn Lievaart @ 2007-08-01 6:07 UTC (permalink / raw)
To: thiago; +Cc: netfilter
thiago@powers.com.br wrote:
> Hello all,
>
> I got a problem when redirecting a UDP port. The rules are:
>
> # TCP port redirect - working fine:
>
> iptables -t nat -A PREROUTING -i <ext_if> -p tcp -d <ext_ip> --dport 22 -j
> DNAT -m state --state NEW --to <int_ip>:1194
> iptables -A FORWARD -i <ext_if> -p tcp -d <int_ip> --dport 1194 -m state
> --state NEW -j ACCEPT
>
> # UDP port redirect - not going through
>
> iptables -t nat -A PREROUTING -i <ext_if> -p udp -d <ext_ip> --dport 22 -j
> DNAT -m state --state NEW --to <int_ip>:1194
> iptables -A FORWARD -i <ext_if> -p udp -d <int_ip> --dport 1194 -m state
> --state NEW -j ACCEPT
>
> I hit the nat/prerouting rule, but never reach the filter/forward one.
> As you can see the only change I've made from the tcp rule to udp rule, is
> just the matching protocol.
> I can debug it a little more, but also would like to hear from you guys if
> you have any hints.
>
Not sure why this doesn't work, but you don't need the state match in
the NAT rule.
iptables -t nat -A PREROUTING -i <ext_if> -p udp -d <ext_ip> --dport 22 -j DNAT --to <int_ip>:1194
iptables -A FORWARD -i <ext_if> -p udp -d <int_ip> --dport 1194 -m state --state NEW -j ACCEPT
should work.
You may want to add an explicit LOG rule:
iptables -A FORWARD -i <ext_if> -p udp -d <int_ip> --dport 1194 -j LOG --log-prefix "WRONG: "
or even
iptables -A FORWARD -p udp --dport 1194 -j LOG --log-prefix "WRONG: "
after the ACCEPT rule to debug this.
M4
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: UDP port redirect
2007-07-31 23:04 UDP port redirect thiago
2007-08-01 6:07 ` Martijn Lievaart
@ 2007-08-01 7:05 ` Покотиленко Костик
1 sibling, 0 replies; 5+ messages in thread
From: Покотиленко Костик @ 2007-08-01 7:05 UTC (permalink / raw)
To: thiago; +Cc: netfilter
В Вто, 31/07/2007 в 20:04 -0300, thiago@powers.com.br пишет:
> Hello all,
>
> I got a problem when redirecting a UDP port. The rules are:
>
> # TCP port redirect - working fine:
>
> iptables -t nat -A PREROUTING -i <ext_if> -p tcp -d <ext_ip> --dport 22 -j
> DNAT -m state --state NEW --to <int_ip>:1194
> iptables -A FORWARD -i <ext_if> -p tcp -d <int_ip> --dport 1194 -m state
> --state NEW -j ACCEPT
"-m state --state NEW" - what is this for? Nat table only sees packets
initiating connection, isn't it?
> # UDP port redirect - not going through
>
> iptables -t nat -A PREROUTING -i <ext_if> -p udp -d <ext_ip> --dport 22 -j
> DNAT -m state --state NEW --to <int_ip>:1194
> iptables -A FORWARD -i <ext_if> -p udp -d <int_ip> --dport 1194 -m state
> --state NEW -j ACCEPT
You accepting NEW packets in filter table, consider make sure rest would
pass through.
> I hit the nat/prerouting rule, but never reach the filter/forward one.
> As you can see the only change I've made from the tcp rule to udp rule, is
> just the matching protocol.
> I can debug it a little more, but also would like to hear from you guys if
> you have any hints.
Also, I've experiensed situation for UDP when nat rules doesn't match because
there was such connection before the rule inserted and conntrack already saw
it and has it counted. UDP connection tracking (since it's a connectionless
protocol) goes by src/dst ports. Packets can belong to different
"connections". The solution for me was to stop UDP connection for several
minutes to make conntrack forget it and then try again.
> iptables v1.3.8
> 2.6.16.36-default
>
> Thanks !
>
> Thiago.
>
>
>
--
Покотиленко Костик <casper@meteor.dp.ua>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: UDP port redirect
@ 2007-08-01 12:52 Thiago Lucas
0 siblings, 0 replies; 5+ messages in thread
From: Thiago Lucas @ 2007-08-01 12:52 UTC (permalink / raw)
To: netfilter
Покотиленко Костик <casper@meteor.dp.ua> gravou em 01/08/2007 04:05:05:
> В Вто, 31/07/2007 в 20:04 -0300, thiago@powers.com.br пишет:
> > Hello all,
> >
> > I got a problem when redirecting a UDP port. The rules are:
> >
> > # TCP port redirect - working fine:
> >
> > iptables -t nat -A PREROUTING -i <ext_if> -p tcp -d <ext_ip> --dport
22 -j
> > DNAT -m state --state NEW --to <int_ip>:1194
> > iptables -A FORWARD -i <ext_if> -p tcp -d <int_ip> --dport 1194 -m
state
> > --state NEW -j ACCEPT
>
> "-m state --state NEW" - what is this for? Nat table only sees packets
> initiating connection, isn't it?
You got it right, there's no need for that. I made that change in a
previous search & replace.. forget about it.
>
> > # UDP port redirect - not going through
> >
> > iptables -t nat -A PREROUTING -i <ext_if> -p udp -d <ext_ip> --dport
22 -j
> > DNAT -m state --state NEW --to <int_ip>:1194
> > iptables -A FORWARD -i <ext_if> -p udp -d <int_ip> --dport 1194 -m
state
> > --state NEW -j ACCEPT
>
> You accepting NEW packets in filter table, consider make sure rest would
> pass through.
Good remind, but it is stateful, for sure.
>
> > I hit the nat/prerouting rule, but never reach the filter/forward one.
> > As you can see the only change I've made from the tcp rule to udp
rule, is
> > just the matching protocol.
> > I can debug it a little more, but also would like to hear from you
guys if
> > you have any hints.
>
> Also, I've experiensed situation for UDP when nat rules doesn't match
because
> there was such connection before the rule inserted and conntrack already
saw
> it and has it counted. UDP connection tracking (since it's a
connectionless
> protocol) goes by src/dst ports. Packets can belong to different
> "connections". The solution for me was to stop UDP connection for
several
> minutes to make conntrack forget it and then try again.
Had the same (not pleasant) experience with that before, too. Conntrack
tunables in /proc/sys/net/ipv4/netfilter/ helped me a lot.
Thanks anyway !
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: UDP port redirect
@ 2007-08-01 12:52 Thiago Lucas
0 siblings, 0 replies; 5+ messages in thread
From: Thiago Lucas @ 2007-08-01 12:52 UTC (permalink / raw)
To: netfilter
Hello Martijn,
Martijn Lievaart <m@rtij.nl> gravou em 01/08/2007 03:07:23:
> Not sure why this doesn't work, but you don't need the state match in
> the NAT rule.
That state match in nat/prerouting, my mistake.. it shouldn't be there.
But I don't believe that was the problem, as it just does nothing..
> iptables -t nat -A PREROUTING -i <ext_if> -p udp -d <ext_ip> --dport
> 22 -j DNAT --to <int_ip>:1194
> iptables -A FORWARD -i <ext_if> -p udp -d <int_ip> --dport 1194 -m
> state --state NEW -j ACCEPT
>
> should work.
It should ! :-)
>
> You may want to add an explicit LOG rule:
>
> iptables -A FORWARD -i <ext_if> -p udp -d <int_ip> --dport 1194 -j
> LOG --log-prefix "WRONG: "
>
> or even
>
> iptables -A FORWARD -p udp --dport 1194 -j LOG --log-prefix "WRONG: "
The connection never goes through :/
fw:/etc/iptables # iptables -t nat -L PREROUTING -n -v | grep -E
'udp.*22.*1194'
1 70 DNAT udp -- eth0 * 0.0.0.0/0 <ext_ip> udp
dpt:22 to:192.168.10.254:1194
fw:/etc/iptables # iptables -L FORWARD -n -v | grep -E 'LOG.*udp.*1194'
0 0 LOG udp -- eth0 * 0.0.0.0/0 192.168.10.254
udp dpt:1194 LOG flags 0 level 4 prefix `WRONG: '
>
>
> after the ACCEPT rule to debug this.
>
> M4
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2007-08-01 12:52 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-31 23:04 UDP port redirect thiago
2007-08-01 6:07 ` Martijn Lievaart
2007-08-01 7:05 ` Покотиленко Костик
-- strict thread matches above, loose matches on Subject: below --
2007-08-01 12:52 Thiago Lucas
2007-08-01 12:52 Thiago Lucas
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.