Re: Internal NAT Translation:

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

 



On Wed, 2004-06-30 at 21:45, Bryan Martin wrote:
> Setup looks like this
> 
>             Internet
>                  ^
> Redhat 9 iptables nat/masq    (200.200.200.200 public address = eth1;
> 192.168.2.1 private address = eth0)
>                  ^
> windows web server (192.168.2.254) | windows clients.    (all 192.168.2.X)
> 
> 
> Now the rh box is masquerading for the private boxes.  Only thing not
> standard is that any inbound http connections to the public address
> 200.200.200.200 is being dnatted to 192.168.2.254 which is the address of
> the windows server.  This is working as expected.  The problem arises when a
> internal client tries to connect to the public website.
> 
> For instance client request www.mycompany.com and DNS says go here
> 200.200.200.200 which would be correct if I was sitting on the outside
> looking in.  I need iptables to basically say if any http request comes from
> the internal network addressed to my public address dnat the public
> 200.200.200.200 to the private address.  I have tried the following without
> success.  Only other thing I know is to setup a internal DNS just so the
> internal clients get the internal address.  That would however be an extreme
> waste of resources.
> 
> -A PREROUTING -i eth1 -d 200.200.200.200 -p tcp --dport 80 -j
> DNAT --to-destination 192.168.2.254
> 
> Can someone help?
> 
> Bryan
I see a couple of potential problems here.  The simple solution is to
add SNAT rules, one that says all traffic coming from 192.168.2.254 and
going out eth1 is translated to 200.200.200.200 and the other which says
that any traffic from your internal network destined for 192.168.2.254
is translated to 200.200.200.200.  I would imagine that the PREROUTING
rule you created is working but when the web server gets the packets, it
sees the original source address, identifies the packets as belonging to
the local network and sends them directly back with it own internal
source address.  The reply packets will not be recognized since the
local workstations sent to packets to 200.200.200.200 and not
192.168.2.254.

However, I have some concerns about this architecture.  Are you allowing
public traffic into your web server and placing that web server directly
on the internal network? If so and if anyone every compromises it, they
may have free reign on your internal network.  If that server is exposed
to the Internet, I would very much recommend placing it on DMZ behind a
third NIC in your firewall.  I believe that will also take care of the
NAT problems.

Regarding split DNS, that is the approach I usually take.  Are you using
an internal DNS? If so, I assume it is not being used by the world to
locate the web server as that would create another major exposure.  You
could thus simply set it to distribute the private address of the web
server.

Hope this helps - John
-- 
John A. Sullivan III
Chief Technology Officer
Nexus Management
+1 207-985-7880
john.sullivan@xxxxxxxxxxxxx
---
If you are interested in helping to develop a GPL enterprise class
VPN/Firewall/Security device management console, please visit
http://iscs.sourceforge.net 



[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