[TriLUG] why is it slow?
Aaron S. Joyner
aaron at joyner.ws
Fri Sep 15 12:13:22 EDT 2006
Greg Cox wrote:
>> The typical way to handle this problem is at the name space level.
>
>
> Not the original poster, but...
Actually, the original poster eventually clarified his problem as:
>umm... i think you got me a little lost :p
>
>my server is at 192.168.123.456
>my surfing computer is at 192.168.123.457
>
>the router forwards to port 80 like it should.
>
>when my dad (out in az) connects, 71.71.789.456 he doesnt have a problem in
>the world
>
>when i connect to my server71.71.789.456, i get like 6 min load times on a
>300k image.
>
>when i connect to my server internally, 192.168.123.456, i get instant
>loading of the same pictures, or different ones that have not been cashed.
>
>
If he were using a split DNS setup or views, inside his local network he
would resolve the correct internal IP address for the name of his
server, and wouldn't be passing traffic through the router. This would
effectively solve his problem.
> One reason I don't like handling this via DNS is that I don't have a
> static IP, and I like living with one dyndns name on the outside
> interface. And I don't get to manage views with them. And to me it's
> kinda cool to have one name that always works, whether I'm home or away.
Using an external name service provider like dyndns actually makes this
*easier* than the way I'd prefer to do it, which is to host my own
authoritative DNS. Let's say your domain is called, oh, I don't know...
"example.dyndns.org". You setup an internal name server at
192.168.1.42, and make it authoritative for the domain
example.dyndns.org, including an A record for that very domain, which
points to the IP of the appropriate server. You also configure it with
"forwarder" entries to your local ISP's DNS server (or what ever your
clients used to use before this change). Then update your client's DNS
server entries to point to the local DNS server, and voila, you're
done. :) Resolution from the outside world will naturally recurse up
to dyndns's actual entry, and they'll get your external IP. Internal
resolvers will hit your local DNS server, and when asking for
example.dyndns.org, the server returns it's local authoritative answer.
When asking for other records in the dyndns.org domain name, the local
server isn't authoritative, so it forwards those requests along to
dyndns.org, and they resolve naturally.
>> that this is dramatically easier to do on an honest-to-god router.
>
>
> I think it's not the Linux tools, so much as the network layout. It
> becomes easier when you segment up the network to where you use the
> gateway box like a router. Most of the problems I'm hearing are from
> trying to do this magic routing all on one internal network, which is
> going to kill you ded.
Yes, as the rest of your post pointed out, it's entirely possible to go
through and solve this problem with multiple networks for the servers vs
the clients. I briefly thought about suggesting a solution along these
lines, but redesigning the network isn't really solving the
interestingly complex problem at hand. Having said that, this complex
problem is definitely something that the iptables / iproute2 tools
should be able to do. They're capable of rewriting the source, and the
destination, and building tables to map them back on the reverse
paths... it's just that some of the trade-offs made in the interest of
avoiding loops, overly complex rules, etc make this unfortunately not
possible with the existing tools, as far as I can see. So I stand by my
original assertion that it's a short-coming in the tools, that they
can't handle this particular solution gracefully.
Aaron S. Joyner
> My setup: cablemodem to liveCD linux router. Router with 4 internal VLAN
> interfaces (DMZ, wired desktop network, WPA2 trusted wireless, WEP
> untrusted wireless (for the NintendoDS)) to VLAN-aware switch, with a
> bastion server on the DMZ VLAN.
>
> Currently I have a rule on the router:
> -A PREROUTING ! -i vlan2 -p tcp -m tcp --dport 22 -j DNAT --to
> 192.168.2.20
>
> Now, actually, that rule stinks since it means I can't ssh out from my
> lappy to the world, but, I never do that from not-the-DMZ anyway, so,
> it's
> kinda ok. I should really do something like (untested!):
>
> -A PREROUTING ! -i vlan2 -m addrtype --dst-type LOCAL -p tcp -m tcp
> --dport 22 -j DNAT --to 192.168.2.20
>
> But the cdrouter I'm using, its iptables version is too old to use
> addrtype
> and I'm too lazy to roll my own CD.
>
>
> VLAN'ing your home is probably more than most people want to monkey
> with, but it's pretty cool once it's all set. The Dell 27(08|16|24)
> PowerConnects are cheap gigabits and don't do badly for a core switch
> for home/SOHO. Interface is terrible, but, you probably won't touch it
> often.
More information about the TriLUG
mailing list