Linux Netfilter discussions
 help / color / mirror / Atom feed
From: "Carlo Florendo" <carlo@hq.astra.ph>
To: George Vieira <georgev@citadelcomputer.com.au>,
	netfilter@lists.netfilter.org
Subject: Re: local DNAT with bind,postfix,and iptables
Date: Thu, 16 Oct 2003 14:49:57 -0800	[thread overview]
Message-ID: <005a01c39437$d2e5e620$200aa8c0@thorin> (raw)
In-Reply-To: 09B04A55822EFF4DA48D2E0BB2941D4A15C4F3@wardrive.citadelcomputer.com.au

Thanks a lot George.  This postfix solution is new to me.   I'll be trying
it out in a few minutes.  But is there any way to do this with iptables?
(Just curious..)


> ----- Original Message -----
> From: "George Vieira"
>
>
> Oh OK.. sorry, must've skipped a line somewhere there..
>
> OK, this is even simpler solution. Use sendmails "mailertable" or postfixs
> "transport" to redirect the domain to a different IP..
>
> mailertable use:
> mx.my.company.org esmtp:[192.168.0.3]
>
> postfix use:
> mx.my.company.org smtp:[192.168.0.3]
>
> this effects this server only and if mail is sent via sendmail.postfix
> which
> the domain MX is overriding the DNS..
>
> this is a mail server resolution and not iptables if noone noticed.. ;P
>
> Thanks,
> ____________________________________________
> George Vieira
> Systems Manager
> georgev@citadelcomputer.com.au
>
> Citadel Computer Systems Pty Ltd
> http://www.citadelcomputer.com.au
>
> Phone   : +61 2 9955 2644
> HelpDesk: +61 2 9955 2698
>
>
>> -----Original Message-----
>> From: Carlo Florendo [mailto:carlo@hq.astra.ph]
>> Sent: Friday, 17 October 2003 4:11 AM
>> To: George Vieira; netfilter@lists.netfilter.org
>> Subject: Re: local DNAT with bind,postfix,and iptables
>>
>>
>> ----- Original Message -----
>> From: "George Vieira"
>>
>> > You must DNAT to the internal IP address which is what
>> you've already done
>> > for external to mx.<domain> and you must do the same for
>> the internal
>> > clients with once extra step, you must change the source
>> like you do if
>> > the
>> > client were MASQUERADED to the outside world. My must treat the
>> > mx.<domain>
>> > as if it was outside too..
>> >
>> > iptables -t nat -A PREROUTING -i <internal_iface> -d 219.21.114.34 \
>> >     -j DNAT --to 192.168.0.3
>> >
>> > # Masquerade the internal client so packets are forced back via the
>> > firewall
>> > iptables -t nat -A POSTROUTING -s <internal_subnet> -d 192.168.0.3 \
>> >     -j SNAT --to 192.168.0.1
>>
>> I'm sorry for not making myself very clear.   You were the
>> one actually who
>> taught me how to do this bermuda triangle routing when I long
>> ago posted a
>> message "DNAT from an IP address that does not exist, etc..."  :)
>>
>> This solution works if the smtp connection is initiated from
>> any of the
>> internal hosts but 192.168.0.1.  In this case however, it is
>> 192.168.0.1
>> that initiates the connection.
>>
>> The problem is that the smtp server (postfix) which the
>> internal hosts use
>> is 192.168.0.1.  It is that smtp server which queries bind
>> (DNS) for the mx
>> entry (bind and postfix in the same machine).  Since bind returns
>> 210.21.114.34 when postfix queries for the mx entry, postfix tries to
>> initiate a connection to 210.21.114.34.
>>
>> However, since 210.21.114.34 is actually 192.168.0.3, the
>> smtp connection
>> from 192.168.0.1 should be DNATted to 192.168.0.3.  That is, machine
>> 192.168.0.1, the same machine where iptables runs, should
>> DNAT 210.21.114.34
>> to 192.168.0.3.
>>
>> In other words, if I do a telnet from 192.168.0.1 to port 25 of
>> 210.21.114.34, there should be a connection.
>> However, this does not happen.
>>
>> If I do a telnet to port 25 of 210.21.114.34 from any of the
>> 192.168.0.0/24
>> machines in the internal network, with the exception of
>> 192.168.0.1, I get a
>> connection.   Thanks to the solution you posted :)
>>
>> How is it possible to DNAT to 210.21.114.34 from 192.168.0.1
>> if iptables
>> runs in 192.168.0.1 itself?
>>
>> Thanks so much!
>>
>> Best Regards,
>>
>> Carlo
>> ------
>> Carlo Florendo
>> Astra Philippines Inc.
>> www.astra.ph
>>
>>
>> >>
>> >> Hello,
>> >>
>> >> I have a box which runs bind, postfix, and iptables.  (Box A)
>> >> This box has 2 interfaces.  One facing the net and the other
>> >> the internal
>> >> network
>> >>
>> >> There's another box behind the firewall that runs postfix and
>> >> is part of the
>> >> internal network.  (Box B).
>> >>
>> >> Here's the setup.
>> >>
>> >> -------------
>> >> |    Internet   |
>> >> --------------
>> >>         |
>> >>         |
>> >>         |             host: my.company.org
>> >> -------------  Pub. IP: 219.21.114.33
>> >> |    Box A    |  runs bind, iptables, postfix
>> >> --------------  Pri. IP: 192.168.0.1
>> >>         |
>> >>         |
>> >> ------------- host: mx.my.company.org
>> >> |    Box  B   | runs postfix
>> >> ------------- Pri. IP 192.168.0.3
>> >>
>> >> There is an mx entry in bind, in box A, which maps the IP address
>> >> 219.21.114.34 to mx.my.company.org (Box B).  Although Box B
>> >> has no interface
>> >> that listens as 219.21.114.34, I've done a DNAT from Box A to Box B
>> >> so that, when Box A receives a request for 219.21.114.34, it
>> >> does a DNAT to
>> >> 192.168.0.3.  With this way, Box B can
>> >> receive mails which it's supposed to receive.
>> >>
>> >> This is how it worked:
>> >>
>> >> iptables -t nat -A PREROUTING -i <public_iface> -d 219.21.114.34 \
>> >>     -j DNAT --to 192.168.0.3
>> >>
>> >> Now, here's my problem:
>> >>
>> >> Since the internal network have their mail clients configured
>> >> to use Box A
>> >> as their smtp server, there should be a way
>> >> for Box A to communicate with Box B using 219.21.114.34.
>> >>
>> >> I cannot use Box B's IP 192.168.0.3 since this would break
>> >> bind.  If I do
>> >> this, mail from outside would not reach Box B.
>> >> Since mx requests for mx.my.company.org would return
>> >> 192.168.0.3 which is
>> >> invalid within the internet.
>> >>
>> >> The only way to do this is for Box A to be able to DNAT to
>> box B using
>> >> locally generated connections (that is, connections that
>> >> would be initiated
>> >> by Box A's smtp server).
>> >>
>> >> The howto says that DNAT for locally generated packets is not
>> >> possible in
>> >> 2.4 kernels.  Does this still hold true?
>> >>
>> >> Is it possible to DNAT 219.21.114.34 to 192.168.0.3 if
>> >> connections originate
>> >> from 219.21.114.33 (DNAT for locally generated packets)?
>> >>
>> >> This solution obviously does does not work:
>> >>
>> >> iptables -t nat -s 127.0.0.1 -d 219.21.114.34 -j DNAT --to
>> 192.168.0.3




  reply	other threads:[~2003-10-16 22:49 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-16  2:17 local DNAT with bind,postfix,and iptables George Vieira
2003-10-16 22:49 ` Carlo Florendo [this message]
  -- strict thread matches above, loose matches on Subject: below --
2003-10-16  6:23 Gaby Schilders
2003-10-16  6:16 George Vieira
2003-10-16  6:07 Gaby Schilders
2003-10-16 22:53 ` Carlo Florendo
2003-10-16  1:09 George Vieira
2003-10-16 18:11 ` Carlo Florendo
2003-10-14 22:06 DNAT for locally generated packets Carlo Florendo
2003-10-16 16:55 ` local DNAT with bind,postfix,and iptables Carlo Florendo

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='005a01c39437$d2e5e620$200aa8c0@thorin' \
    --to=carlo@hq.astra.ph \
    --cc=georgev@citadelcomputer.com.au \
    --cc=netfilter@lists.netfilter.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