After a power failure, most pages from my server stopped being served to users from the outside word, even though the pages are accessible from within the local network. This took a lot of time to debug since outside monitoring didn't even notice the problem: small pages continued to be served up properly. Noticing that small pages worked and big pages didn't took me quite some time, but once I had that clue I could rules out things like most common firewall issues, broken routing tables, and brutish misconfiguration.
As it happened, the issue was a mismatch between the MTU size (Maximum Transmission Unit ) used for my router (a Cisco E4200), and the MTU size used by the Sympatico DSL modem I use (a 2701HG-G Gateway). The MTU determines the size of data packets transmitted by Ethernet -- that is, the lower protocols levels used to carry Internet traffic. While Internet traffic at the TCP/IP level can be served up in arbitrary packet sizes, at the lower ethernet level hardware devices that are directly connected to one another presupposed that data data is divided into packets of a maximum size and, as it happens, may silently reject packets that are too big. In my case this was hellish to find since I had assumed it was a power-induced hardware problem and inly after lots of debugging did I start to notice that some pages were getting though: small pages:OK, larger pages: nothing shows up. Oddly, all the logs seemed to say everything was working normally. The fact this could only be tested from outside the local network made it harder still to debug.
For ethernet networks, the default MTU is 1500; this is what Tomato uses by default. For PPPOE networks, the default MTU is 1492; that is what the Sympatico requires.
That can be tested by using the command "ping" to try different packet sizes, and see what works well:
ping -s 1432 www.yahoo.com
(Note that some sites do not respond to ping probes at all, and some like google do not respond with arbitrary-sized packets as this test wants.)
On WIndows, you need to go to "Start/ Programs/ Accessories/Command Prompt " to enter this command, and you probably should use the variation
"ping -f -l 1432 www.yahoo.com"
The ping packets include a 28 bytes ICMP header, so the MTU will be 28 bytes more than the biggest ping packet size that works.
To make things work well on my router, I had a maximum ping packet of 1432 which means my MTU should be set to 1432+28 suggesting an MTU of 1460 and no larger. Any bigger and requests for most pages from my server stall forever without ever getting a response.
I hope this page has enough keywords to help the next poor soul with this problem. Additional information can be found at this very nice FAQ at DSLReports.com
Some other pople have commented on the requirement of this unusual 1460 MTU required by Sympatico, mainly in a fairly bitter and cynical manner, and I can see why:
Dell + Vista + DSL = WTF (read down the comments).