Re: NAT question (forwarding with subdomains)

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

 



On May 13, 2004 02:17 pm, John A. Sullivan III wrote:
> On Thu, 2004-05-13 at 13:52, Paul F. Bernal B. - EasyTeck wrote:
> > Hi!,
> >
> > I got an internal 192.168.0.0/24 LAN with about 5 web servers including
> > the one which has iptables running and internet output ...
> >
> > in the firewall script:
> > * INTERNALIF="eth1"
> > * INTERNALNET="192.168.0.0/24"
> > * INTERNALBCAST="192.168.0.255"
> > * EXTERNALIF="eth0"
> > * MYADDR="200.107.XXX.XXX"
> >
> > got a rule that works fine that forwards the mail packets to the
> > 192.168.0.2 machine:
> > $IPTABLES -A PREROUTING -t nat -i $EXTERNALIF -p tcp -d $MYADDR --dport
> > 25 \ -j DNAT --to 192.168.0.2:25
> > $IPTABLES -A FORWARD -i $EXTERNALIF -p tcp -d 192.168.0.2 --dport 25 -j
> > ACCEPT
> >
> > I have a couple subdomains pointing to MYADDR sub1.mydomain.com,
> > sub2.mydomain.com, etc...
> >
> > What I need to do is:
> >
> > When someone in the Internet asks for http://sub1.mydomain.com/ respons
> > the 192.168.0.3 machine (wich has a web server running port 80)
> >
> > When someone in the Internet asks for http://sub2.mydomain.com/ responds
> > the 192.168.0.4 machine (wich has a web server running port 80)
> >
> > etc., etc., etc...
> >
> > I've tried something like this, but doesn't works !!!
> >
> > $IPTABLES -A PREROUTING -t nat -i $EXTERNALIF -p tcp -d sub1.mydomain.com
> > --dport 80 \
> >                       -j DNAT --to 192.168.0.3:80
> > $IPTABLES -A FORWARD -i $EXTERNALIF -p tcp -d 192.168.0.3 --dport 80 -j
> > ACCEPT
> >
> > Pliz give me a hand on this, thanks in advance ...
> >
> > ----------
> > don pool
>
> If I understand you correctly, sub1.mydomain.com and sub2.mydomain.com
> both point to the same public address even though you want them to map
> to different internal servers.  Publicly, they are only distinguished by
> url and not IP.  Is that correct?
>
> If so, iptables will resolve the names to IP addresses when it loads.
>
> >From then on, it will use the IP address to identify the destination and
>
> not the url.  If you want to NAT on the url, you will need some
> functionality to read the url from the data portion of the packet and
> not the IP portion.  I do not know if there is a iptables patch
> available to do that or how such a patch would be used.  Does anyone
> else know?


	Antony is right in this case, especially since there *might* already be a 
webserver running on the firewall ... apache can forward the url requests to 
the appropriate physical hardware ... not something that one wants to do with 
string match since packet fragments will cause *huge* problems (a la POST 
method) 

	This will require *some* sort of proxy -- apache can do this itself, or there 
are a couple of other products that can do this ... but I'd recommend apache 
cache/forward/acceleration methods ...

	Please note  -- I haven't done this recently, but last I tried it didn't 
require forward rules, it required rules in INPUT and OUTPUT since apache 
(local) is actually issuing the request to apache (internal) -- they aren't 
reallly being forwarded by iptables.

	Alistair.


[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