RE: local DNAT with bind,postfix,and iptables

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxxxxxxxxx

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@xxxxxxxxxxx]
> Sent: Friday, 17 October 2003 4:11 AM
> To: George Vieira; netfilter@xxxxxxxxxxxxxxxxxxx
> 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
> >>
> 
> 
> 



[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux