On 6/27/05, Hans-Werner Hilse <[EMAIL PROTECTED]> wrote:
> Hi,
> 
> On Mon, 27 Jun 2005 11:20:53 -0400
> Travis Osterman <[EMAIL PROTECTED]> wrote:
> 
> > I cut all port forwarding rules but port 80 and all mac filtering less
> > one and commented as such to keep the length down.  Thanks again for
> > any suggestions.
> 
> I'll comment below...
> 
> > *nat
> > # [...]
> > # snipped other DNAT
> > -A PREROUTING -i ppp0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 
> > 192.168.1.20
> > -A PREROUTING -i ppp0 -p udp -m udp --dport 80 -j DNAT --to-destination 
> > 192.168.1.20
> 
> Never heard of http-via-udp... But the problem will show up here:
> The PREROUTING should apply also for packets coming from eth1 (LAN).
> Otherwise they'll hit the router's own tcp stack - where there's
> supposedly no http and such the connection would be resetted.
> 
> 
> The problem atm seems to be, pointed out:
> 
> 1. both external clients and internal clients can correctly resolve
> http://my-dynamic-name.no-ip.com to the ppp0's IP.
> 2.a. external clients' requests hit the router coming from ppp0
> 2.b. internal clients' requests hit the router coming from eth1
> 3. nat/PREROUTING:
> 3.a. The packets from 2.a. get rewritten to dst 192.168.1.20
> 3.b. The other ones don't get rewritten
> 4. Routing is performed (filter/FORWARD, nat/POSTROUTING):
> 4.a. The packets from 2.a. will get routed to 192.168.1.20 and leave
>   the router if allowed by nat/OUTPUT. (it is) WWW server does its job
>   then.
> 4.b. The packets from 2.b. will hit the router's tcp stack if
>   allowed by filter/INPUT (it is). They'll get RSTed if there's no
>   open port 80.
> 
> Well, and we have some more problems. Your actual POSTROUTING chain
> only MASQUERADEs packets leaving through ppp0. With this, and the new
> rules, www packets from the LAN would get destination rewritten on the
> router and being routed there. The source address will still be set to
> the original source address. So the router would answer to that
> address. Problem here is the client: It expects an answer from the
> router's IP. So the web server's reply gets dropped at the client.
> 
> To overcome this, you can setup routing on the web server to generally
> send packets via the router. I'd suggest placing it in a different
> subnet, e.g. 192.168.3./24, and have the router use an address in that
> range to. A little of a DMZ on the LAN wire (not suggested, but not
> different from you current solution).
> 
> To-Do:
> 
> - on the webserver: configure address to 192.168.3.20
> - on the router:
> - configure a second address for eth1 in /etc/conf.d/net (192.168.3.1 assumed 
> here)
> - modify iptables settings:
> 
> You need to insert a new rule like the ones above but also for "-i
> eth1". You'll further need to specify "-d EXTERNAL_IP" (well, of course
> with that IP instead) to not get all connections to a www port
> rewritten to that destination. I'd suggest using a new chain for this
> that you can flush in a script and just place a new rule there if the
> IP changes.
> 
> e.g. global skript on boot up:
> 
> iptables -t nat -A PREROUTING -i ppp0 -p tcp -m tcp --dport 80 -j DNAT 
> --to-destination 192.168.3.20
> iptables -t nat -N internalwww
> iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j internalwww
> 
> and e.g. in your dhcp-script:
> 
> iptables -t nat -F internalwww
> iptables -t nat -A internalwww -d $EXTERNAL_IP -j DNAT --to-destination 
> 192.168.3.20
> 
> 
> 
> -hwh
> --
> [email protected] mailing list
> 
> 

I had to read your reply about seven times until I could really grasp
everything you were saying.  My only concern is that while this will
work for my web server, it appears as though I would have to put all
my service-providing machines on different subnets and have rules for
each of them ... am I understanding that correctly?  Also, sadly, my
webserver is doubling as a samba server right now and I'm not overly
optimistic that windows will see it on the different subnet.

Is there a way to check and see is local traffic is (terminally)
destined for ppp0 and set up a chain to filter by port and reroute
that traffic to the appropriate lan computer?  Could dnsmasq point
my-dynamic-name.no-ip.com to the address of eth1 instead of ppp0 to
make the routing easier (bypassing NAT)?

I'm still really green at network design issues, but this is a
fasinating problem to me.  Thanks for your input so far.

-- Travis

-- 
[email protected] mailing list

Reply via email to