* about ROUTE target
@ 2002-09-17 15:24 Toshihiro Sonoda
2002-09-18 10:57 ` Cédric de Launois
0 siblings, 1 reply; 5+ messages in thread
From: Toshihiro Sonoda @ 2002-09-17 15:24 UTC (permalink / raw)
To: netfilter-devel
Hi,
I want to re-route the packet to tunneling device in spite of the
packet's destination address. I know the ipt_ROUTE target, so
I set up the iptables and tunneling device in the following environment.
[ local pc]- LAN ->[ router ] <- WAN -> [ target pc ]
LAN's network is 192.168.7.0/24.
WAN's network is 192.168.1.0/24.
LAN side IP address of the router is 192.168.7.1.
WAN side IP address of the router is 192.168.1.2.
target pc IP address is 192.168.1.3.
router is 2.4.18 kernel and I did p-o-m for ipt_ROUTE to the router.
I set the following command on the router.
# modprobe ip_gre
# iptunnel add tundev mode gre remote 192.168.1.3
# ifoconfig tundev 192.168.1.2
#
# modprobe ipt_ROUTE
# iptables -t nat -A PREROUTING -p icmp -j ROUTE --iface tundev
and I executed "ping" to anather pc(ex, 192.168.1.10) on the local pc.
# ping 192.168.1.10
then, router(linux) was freezed.
I confirmed that ipt_route_target(), which is in "ipt_ROUTE.c", hook function
in the ROUTE target was called in the router's linux kernel,
and ipgre_tunnel_xmit() in gre's tunneling device(ip_gre.c) was called.
But, the at the IPTUNNLE_XMIT() called in the ipgre_tunnel_xmit(), linux
was freezed.
Do I mistake how to use the ROUTE target ?
thanks for your advice.
-
T.Sono
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: about ROUTE target
2002-09-17 15:24 about ROUTE target Toshihiro Sonoda
@ 2002-09-18 10:57 ` Cédric de Launois
2002-09-18 16:12 ` Toshihiro Sonoda
0 siblings, 1 reply; 5+ messages in thread
From: Cédric de Launois @ 2002-09-18 10:57 UTC (permalink / raw)
To: Toshihiro Sonoda; +Cc: Netfilter Development Mailinglist
> I confirmed that ipt_route_target(), which is in "ipt_ROUTE.c", hook function
> in the ROUTE target was called in the router's linux kernel,
> and ipgre_tunnel_xmit() in gre's tunneling device(ip_gre.c) was called.
>
> But, the at the IPTUNNLE_XMIT() called in the ipgre_tunnel_xmit(), linux
> was freezed.
>
> Do I mistake how to use the ROUTE target ?
It seems you found a bug. I'll take a look to this problem as soon as
possible. Thanks for having reported this bug.
Cédric de Launois
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: about ROUTE target
2002-09-18 10:57 ` Cédric de Launois
@ 2002-09-18 16:12 ` Toshihiro Sonoda
2002-09-19 12:43 ` Cédric de Launois
0 siblings, 1 reply; 5+ messages in thread
From: Toshihiro Sonoda @ 2002-09-18 16:12 UTC (permalink / raw)
To: Cédric de Launois; +Cc: Netfilter Development Mailinglist
Hi, Launois.
In the following case, while ipt_ROUTE action, which is
the ipt_route_target(), is processing, another netfiter action is called.
Is it able to call one netfiter action during processing another one?
ROUTE action is called when PRE_ROUTING rule is matched, after
that, in the PRE_ROUTING action, OUTPUT and POST_ROUTING
is called. so, nf_hook_slow() is nested.
Is that ok??
thanks for your advice.
> > I confirmed that ipt_route_target(), which is in "ipt_ROUTE.c", hook function
> > in the ROUTE target was called in the router's linux kernel,
> > and ipgre_tunnel_xmit() in gre's tunneling device(ip_gre.c) was called.
> >
> > But, the at the IPTUNNLE_XMIT() called in the ipgre_tunnel_xmit(), linux
> > was freezed.
> >
> > Do I mistake how to use the ROUTE target ?
>
> It seems you found a bug. I'll take a look to this problem as soon as
> possible. Thanks for having reported this bug.
>
> Cédric de Launois
>
>
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: about ROUTE target
2002-09-18 16:12 ` Toshihiro Sonoda
@ 2002-09-19 12:43 ` Cédric de Launois
2002-09-19 14:35 ` Toshihiro Sonoda
0 siblings, 1 reply; 5+ messages in thread
From: Cédric de Launois @ 2002-09-19 12:43 UTC (permalink / raw)
To: Toshihiro Sonoda; +Cc: Netfilter Development Mailinglist
> In the following case, while ipt_ROUTE action, which is
> the ipt_route_target(), is processing, another netfiter action is called.
> Is it able to call one netfiter action during processing another one?
>
> ROUTE action is called when PRE_ROUTING rule is matched, after
> that, in the PRE_ROUTING action, OUTPUT and POST_ROUTING
> is called. so, nf_hook_slow() is nested.
>
> Is that ok??
I could not reproduce the bug. I'm using here a kernel 2.4.19.
I also tested your configuration in a User-Mode Linux, running
a kernel 2.4.18, but I didn't get any problem.
However, I traced the journey of a packet matching the ROUTE
target. Function nf_hook_slow() is effectively nested as you
said (see the backtrace below). But this behaviour is the same as the
one of the ipt_MIRROR target (ROUTE target was based on its code),
which works well.
I don't know if this behaviour is desirable. Anyway, I don't know
about a method to avoid it.
Maybe someone on the mailing list can help us ?
Here is the backtrace of the packet :
#0 dev_queue_xmit (skb=0xa1050980) at dev.c:1011
#1 0xa00bdd6d in ip_finish_output2 (skb=0xa1050980) at ip_output.c:173
#2 0xa00b2a66 in nf_hook_slow (pf=2, hook=4, skb=0xa1050980, indev=0x0,
outdev=0xa08be000,
okfn=0xa00bdcf0 <ip_finish_output2>) at netfilter.c:493
#3 0xa00bdcc4 in ip_finish_output (skb=0x0) at
/usr/src/uml/linux/include/linux/list.h:112
#4 0xa00e8680 in do_ip_send (skb=0x0) at ip_gre.c:672
#5 0xa00b2a66 in nf_hook_slow (pf=2, hook=3, skb=0xa1050980, indev=0x0,
outdev=0xa08be000,
okfn=0xa00e8650 <do_ip_send>) at netfilter.c:493
#6 0xa00e7ac4 in ipgre_tunnel_xmit (skb=0xa1050980, dev=0xa08e8800) at
ip_gre.c:886
#7 0xa00abf96 in dev_queue_xmit (skb=0xa104d5e0) at dev.c:1044
#8 0xa28cf494 in ip_direct_send (skb=0xa104d5e0) at ipt_ROUTE.c:99
#9 0xa28cf26e in ipt_route_target (pskb=0xa1050980, hooknum=0,
in=0xa08be000, out=0x0, targinfo=0xa28d10d0,
userinfo=0x0) at ipt_ROUTE.c:193
#10 0xa28b62dd in ipt_do_table (pskb=0xa018baf4, hook=0, in=0xa08be000,
out=0x0, table=0xa1050980, userdata=0x0)
at ip_tables.c:363
#11 0xa28c67cd in ip_nat_rule_find (pskb=0xa018baf4, hooknum=0,
in=0xa08be000, out=0x0, ct=0xa074e1c0,
info=0xa074e290) at ip_nat_rule.c:279
#12 0xa28c615b in ip_nat_fn (hooknum=0, pskb=0xa018baf4, in=0xa08be000,
out=0x0, okfn=0xa00ba280 <ip_rcv_finish>)
at ip_nat_standalone.c:106
#13 0xa00b2769 in nf_iterate (head=0xa01d22e0, skb=0xa018baf4, hook=0,
indev=0xa08be000, outdev=0x0,
i=0xa018bad4, okfn=0xa00ba280 <ip_rcv_finish>) at netfilter.c:350
#14 0xa00b2a22 in nf_hook_slow (pf=2, hook=0, skb=0xa104d5e0,
indev=0xa08be000, outdev=0x0,
okfn=0xa00ba280 <ip_rcv_finish>) at netfilter.c:484
#15 0xa00ba024 in ip_rcv (skb=0xa104d5e0, dev=0xa08be000, pt=0xa0193398)
at /usr/src/uml/linux/include/linux/list.h:112
#16 0xa00ac66f in net_rx_action (h=0xa01ab610) at dev.c:1509
Cédric
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: about ROUTE target
2002-09-19 12:43 ` Cédric de Launois
@ 2002-09-19 14:35 ` Toshihiro Sonoda
0 siblings, 0 replies; 5+ messages in thread
From: Toshihiro Sonoda @ 2002-09-19 14:35 UTC (permalink / raw)
To: Cédric de Launois; +Cc: Netfilter Development Mailinglist
Hi, Launois. Thanks for your comments and trial.
but, I feel sad, because I can not use ROUTE . (T_T;
I tried linux 2.4.19, too, but the result was same.
I cannot trace in kernel, because linux is freezed.
If you can, let me know how to config your environment on
linux 2.4.18 or 19. I want to try ROUTE on the just your
same environmet.
And, at one more time, I explain my detail environment.
[local pc] <-LAN-> [ router ] <-WAN->[ target pc]
LAN: 192.168.7.0/24
WAN: 192.168.1.0/24
[local-pc]
eth0: 192.168.7.2
[router]
eth1: 192.168.7.1(LAN interface)
eth0: 192.168.1.2(WAN interface)
[target pc]
eth0: 192.168.1.3
on the router, I did following command.
# modprobe ip_gre
# iptunnel add tundev mode gre remote 192.168.1.3
# ifconfig tundev 192.168.1.2
# iptables -t nat -A POSTROUTING -o eth0 \
-s 192.168.7.0/24 -j MASQUERADE
# iptables -t nat -A PREROUTING -p icmp -j ROUTE --iface tundev
and I executed the "ping " command from the [local pc] to another pc
# ping 192.168.1.10
mmm.. I don't know why you can, but i cannot.
> > In the following case, while ipt_ROUTE action, which is
> > the ipt_route_target(), is processing, another netfiter action is called.
> > Is it able to call one netfiter action during processing another one?
> >
> > ROUTE action is called when PRE_ROUTING rule is matched, after
> > that, in the PRE_ROUTING action, OUTPUT and POST_ROUTING
> > is called. so, nf_hook_slow() is nested.
> >
> > Is that ok??
>
> I could not reproduce the bug. I'm using here a kernel 2.4.19.
> I also tested your configuration in a User-Mode Linux, running
> a kernel 2.4.18, but I didn't get any problem.
>
> However, I traced the journey of a packet matching the ROUTE
> target. Function nf_hook_slow() is effectively nested as you
> said (see the backtrace below). But this behaviour is the same as the
> one of the ipt_MIRROR target (ROUTE target was based on its code),
> which works well.
> I don't know if this behaviour is desirable. Anyway, I don't know
> about a method to avoid it.
>
> Maybe someone on the mailing list can help us ?
>
> Here is the backtrace of the packet :
>
> #0 dev_queue_xmit (skb=0xa1050980) at dev.c:1011
> #1 0xa00bdd6d in ip_finish_output2 (skb=0xa1050980) at ip_output.c:173
> #2 0xa00b2a66 in nf_hook_slow (pf=2, hook=4, skb=0xa1050980, indev=0x0,
> outdev=0xa08be000,
> okfn=0xa00bdcf0 <ip_finish_output2>) at netfilter.c:493
> #3 0xa00bdcc4 in ip_finish_output (skb=0x0) at
> /usr/src/uml/linux/include/linux/list.h:112
> #4 0xa00e8680 in do_ip_send (skb=0x0) at ip_gre.c:672
> #5 0xa00b2a66 in nf_hook_slow (pf=2, hook=3, skb=0xa1050980, indev=0x0,
> outdev=0xa08be000,
> okfn=0xa00e8650 <do_ip_send>) at netfilter.c:493
> #6 0xa00e7ac4 in ipgre_tunnel_xmit (skb=0xa1050980, dev=0xa08e8800) at
> ip_gre.c:886
> #7 0xa00abf96 in dev_queue_xmit (skb=0xa104d5e0) at dev.c:1044
> #8 0xa28cf494 in ip_direct_send (skb=0xa104d5e0) at ipt_ROUTE.c:99
> #9 0xa28cf26e in ipt_route_target (pskb=0xa1050980, hooknum=0,
> in=0xa08be000, out=0x0, targinfo=0xa28d10d0,
> userinfo=0x0) at ipt_ROUTE.c:193
> #10 0xa28b62dd in ipt_do_table (pskb=0xa018baf4, hook=0, in=0xa08be000,
> out=0x0, table=0xa1050980, userdata=0x0)
> at ip_tables.c:363
> #11 0xa28c67cd in ip_nat_rule_find (pskb=0xa018baf4, hooknum=0,
> in=0xa08be000, out=0x0, ct=0xa074e1c0,
> info=0xa074e290) at ip_nat_rule.c:279
> #12 0xa28c615b in ip_nat_fn (hooknum=0, pskb=0xa018baf4, in=0xa08be000,
> out=0x0, okfn=0xa00ba280 <ip_rcv_finish>)
> at ip_nat_standalone.c:106
> #13 0xa00b2769 in nf_iterate (head=0xa01d22e0, skb=0xa018baf4, hook=0,
> indev=0xa08be000, outdev=0x0,
> i=0xa018bad4, okfn=0xa00ba280 <ip_rcv_finish>) at netfilter.c:350
> #14 0xa00b2a22 in nf_hook_slow (pf=2, hook=0, skb=0xa104d5e0,
> indev=0xa08be000, outdev=0x0,
> okfn=0xa00ba280 <ip_rcv_finish>) at netfilter.c:484
> #15 0xa00ba024 in ip_rcv (skb=0xa104d5e0, dev=0xa08be000, pt=0xa0193398)
> at /usr/src/uml/linux/include/linux/list.h:112
> #16 0xa00ac66f in net_rx_action (h=0xa01ab610) at dev.c:1509
>
> Cédric
>
>
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2002-09-19 14:35 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-09-17 15:24 about ROUTE target Toshihiro Sonoda
2002-09-18 10:57 ` Cédric de Launois
2002-09-18 16:12 ` Toshihiro Sonoda
2002-09-19 12:43 ` Cédric de Launois
2002-09-19 14:35 ` Toshihiro Sonoda
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.