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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox