Linux Netfilter discussions
 help / color / mirror / Atom feed
* owner based routing
@ 2005-10-11 13:57 Ignatich
  2005-10-11 14:07 ` /dev/rob0
  2005-10-12 20:57 ` Henrik Nordstrom
  0 siblings, 2 replies; 6+ messages in thread
From: Ignatich @ 2005-10-11 13:57 UTC (permalink / raw)
  To: netfilter

Hello,

I have a following problem. My goal is to allow traffic originating
from specific user/group to be routed via different gateway.

Here's my setup:
eth0 - default internet interface, ip z.z.z.z
eth1 - LAN, ip y.y.y.y

In LAN I have a hardware ADSL router with ip x.x.x.x.

Since ipt_owner does not work in PREROUTING chain and fwmark is
pointless, I thought that ipt_ROUTE from p-o-m can help me.

Here's what I did:

iptables -t mangle -A OUTPUT -o eth0 -m owner --gid-owner adsl -j
ROUTE --gw x.x.x.x --oif eth1

But it did not work. I belive this happened because matched packets
still had z.z.z.z as their source address.

So i tried that:

iptables -t mangle -A OUTPUT -o eth0 -m owner --gid-owner adsl -j
ROUTE --gw x.x.x.x --oif eth1 --continue
iptables -t nat -A POSTROUTING -o eth1 -m owner --gid-owner adsl -j
SNAT --to-source y.y.y.y

But still no luck. :(

Any ideas how to solve my problem?

-- 
 Ignatich                          mailto:ignatich@gmail.com



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

* Re: owner based routing
  2005-10-11 13:57 owner based routing Ignatich
@ 2005-10-11 14:07 ` /dev/rob0
  2005-10-12 20:57 ` Henrik Nordstrom
  1 sibling, 0 replies; 6+ messages in thread
From: /dev/rob0 @ 2005-10-11 14:07 UTC (permalink / raw)
  To: netfilter

On Tuesday 2005-October-11 08:57, Ignatich wrote:
> Since ipt_owner does not work in PREROUTING chain and fwmark is
> pointless, I thought that ipt_ROUTE from p-o-m can help me.

Why is fwmark pointless?

> Any ideas how to solve my problem?

I would try -j MARK --set-mark $UID for your -m owner matched packets 
and use a ip rule / ip route combination. I've not done this, but I 
don't see why it wouldn't work.
-- 
    mail to this address is discarded unless "/dev/rob0"
    or "not-spam" is in Subject: header


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

* Re: owner based routing
@ 2005-10-11 14:25 Ignatich
  2005-10-11 14:46 ` /dev/rob0
  0 siblings, 1 reply; 6+ messages in thread
From: Ignatich @ 2005-10-11 14:25 UTC (permalink / raw)
  To: netfilter

Hello,

dr> On Tuesday 2005-October-11 08:57, Ignatich wrote:
>> Since ipt_owner does not work in PREROUTING chain and fwmark is
>> pointless, I thought that ipt_ROUTE from p-o-m can help me.

dr> Why is fwmark pointless?

>> Any ideas how to solve my problem?

dr> I would try -j MARK --set-mark $UID for your -m owner matched packets
dr> and use a ip rule / ip route combination. I've not done this, but I
dr> don't see why it wouldn't work.

It's pointless because ipt_owner does not work in PREROUTING table. So
even if I mark packet routing decision is already made.

-- 
 Ignatich                          mailto:ignatich@gmail.com



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

* Re: owner based routing
  2005-10-11 14:25 Ignatich
@ 2005-10-11 14:46 ` /dev/rob0
  0 siblings, 0 replies; 6+ messages in thread
From: /dev/rob0 @ 2005-10-11 14:46 UTC (permalink / raw)
  To: netfilter

On Tuesday 2005-October-11 09:25, Ignatich wrote:
> dr> Why is fwmark pointless?
>
> It's pointless because ipt_owner does not work in PREROUTING table.
> So even if I mark packet routing decision is already made.

The mangle table OUTPUT chain is consulted before routing.

root@room101:~# iptables -vt mangle -A OUTPUT -m owner --uid-owner rob0 -j MARK --set-mark 0x80
MARK  all opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  OWNER UID match 1000 MARK set 0x80

Did you try this?
-- 
    mail to this address is discarded unless "/dev/rob0"
    or "not-spam" is in Subject: header


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

* Re: owner based routing
@ 2005-10-11 22:46 Ignatich
  0 siblings, 0 replies; 6+ messages in thread
From: Ignatich @ 2005-10-11 22:46 UTC (permalink / raw)
  To: netfilter

Hello,

> The mangle table OUTPUT chain is consulted before routing.
>
> root@room101:~# iptables -vt mangle -A OUTPUT -m owner --uid-owner rob0 -j MARK --set-mark 0x80
> MARK  all opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  OWNER UID match 1000 MARK set 0x80
>
> Did you try this?

Yes, i overlooked this. Thank you very much, it solved my problem.

-- 
 Ignatich                          mailto:ignatich@gmail.com



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

* Re: owner based routing
  2005-10-11 13:57 owner based routing Ignatich
  2005-10-11 14:07 ` /dev/rob0
@ 2005-10-12 20:57 ` Henrik Nordstrom
  1 sibling, 0 replies; 6+ messages in thread
From: Henrik Nordstrom @ 2005-10-12 20:57 UTC (permalink / raw)
  To: Ignatich; +Cc: netfilter

On Tue, 11 Oct 2005, Ignatich wrote:

> Since ipt_owner does not work in PREROUTING chain and fwmark is
> pointless, I thought that ipt_ROUTE from p-o-m can help me.

Using ipt_owner in PREROUTING is pointless as PREROUTING never sees any 
packets sent by a local application.

PREROUTING sees packets coming in from the network before any decision on 
what to do with the packet has been made.

ipt_owner can be used in OUTPUT/INPUT only (at least I think it can be 
used in INPUT, maybe not..).

CONNMARK may be what you are looking for. Allows you to mark the 
connection in OUTPUT and then reuse this mark in PREROUTING when packets 
comes back on the same connection.

> Here's what I did:
>
> iptables -t mangle -A OUTPUT -o eth0 -m owner --gid-owner adsl -j
> ROUTE --gw x.x.x.x --oif eth1
>
> But it did not work. I belive this happened because matched packets
> still had z.z.z.z as their source address.

You need to SNAT/MASQUERADE them.

> So i tried that:
>
> iptables -t mangle -A OUTPUT -o eth0 -m owner --gid-owner adsl -j
> ROUTE --gw x.x.x.x --oif eth1 --continue
> iptables -t nat -A POSTROUTING -o eth1 -m owner --gid-owner adsl -j
> SNAT --to-source y.y.y.y

Any specific reason why you have the owner match in POSTROUTING? Shouldn't 
all traffic going out on eth1 be NAT:ed?

Note: You generally also need to use policy routing to keep this traffic 
on eth1.

Regards
Henrik


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

end of thread, other threads:[~2005-10-12 20:57 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-11 13:57 owner based routing Ignatich
2005-10-11 14:07 ` /dev/rob0
2005-10-12 20:57 ` Henrik Nordstrom
  -- strict thread matches above, loose matches on Subject: below --
2005-10-11 14:25 Ignatich
2005-10-11 14:46 ` /dev/rob0
2005-10-11 22:46 Ignatich

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox