From: Alex Samad <alex@samad.com.au>
To: lartc@vger.kernel.org
Subject: Re: [LARTC] One machine, two net feeds, outbound route selection
Date: Thu, 25 Oct 2007 21:16:13 +0000 [thread overview]
Message-ID: <20071025211613.GP26246@samad.com.au> (raw)
In-Reply-To: <59f980d60710241725p5ca9cca2ueb5edc12675f62e3@mail.gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 2715 bytes --]
On Thu, Oct 25, 2007 at 02:00:14PM -0400, Ben Scott wrote:
> On 10/25/07, Peter Rabbitson <rabbit+list@rabbit.us> wrote:
> > Unfortunately not easy without doing local NAT (from the local interface
> > to another local interface).
Can you use marking, mark the packet in the mangle table, us iptables to select
the which packets and then use ip rules fw mark -> routing table (sorry about
the syntax)
>
> I thought that might be the case. I even started to write a rule
> about how the NAT might work... but then I ran into brain pain trying
> to figure out how, because I didn't know when the packets get what
> address/interface info assigned to them, and I didn't know how SNAT
> would interact with the routing tables. Normally, I do SNAT in the
> POSTROUTING chain, but by then the routing rules have already run,
> right? So the packet would still be bound for the wrong interface,
> even if the source address is translated. No?
>
> In other words, let's say $DEF_ADDR is the IP address of the
> interface that is going to be picked by the default routing table, but
> I really want the packets to go out the $ALT_ADDR interface. So I try
> this:
>
> iptables -t nat -A POSTROUTING -s $DEF_ADDR -p tcp --dport smtp -j
> SNAT --to $ALT_ADDR
>
> But the whole point of changing the source address/interface is to
> influence which routing rules match, and those have already been
> applied by the time the packet transverses the POSTROUTING chain,
> right? In any event, that didn't work.
>
> So then I thought, well, maybe I can do SNAT in the PREROUTING chain
> for this? But in that case, the kernel won't have assigned it an
> address yet, right? So there's nothing to SNAT. And I can't do "-s
> 0/0" because that actually means "match all packets", right?
>
> So then I thought, well, maybe I can mark the packet in the OUTPUT
> chain of the mangle table, and match that in the routing rules, and
> *also* match that in the POSTROUTING chain:
>
> iptables -t mangle -A OUTPUT -s $DEF_ADDR -p tcp --dport smtp -j MARK
> --set-mark 42
> ip rule add fwmark 42 table 42
> iptables -t nat -A POSTROUTING -m mark --mark 42 -j SNAT --to-source $ALT_ADDR
>
> I think I tried that and it didn't work either. It was getting late
> and my maintenance window was closing and my brain hurt.
>
> If this is just one of those "you can't do that" situations, I'm
> willing to accept that answer. But if there is a way, I'd like to
> know what it is. :)
>
> -- Ben
> _______________________________________________
> LARTC mailing list
> LARTC@mailman.ds9a.nl
> http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
>
[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
next prev parent reply other threads:[~2007-10-25 21:16 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-25 0:25 [LARTC] One machine, two net feeds, outbound route selection Ben Scott
2007-10-25 9:09 ` Peter Rabbitson
2007-10-25 15:39 ` Ben Scott
2007-10-25 17:03 ` Peter Rabbitson
2007-10-25 18:00 ` Ben Scott
2007-10-25 21:16 ` Alex Samad [this message]
2007-10-25 21:25 ` Peter Rabbitson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071025211613.GP26246@samad.com.au \
--to=alex@samad.com.au \
--cc=lartc@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.