One of my distractions last weekend was my new Nintendo Wii. After playing my first game, I tried to get the Internet connection working without success. After spending few hours I finally found out why: The Wii Connection test DOES NOT send a user agent, and apparently, my ISP uses a transparent proxy that will deny access to anything that doesn’t provide “User-Agent” header. It took me quite a long time to realize this.
It is quite a long story how I realized the problem. Connecting Wii trough direct connection never works, so I use my proxy server. It didn’t work either, so I looked at the log file, and tried to connect to URL listed in the log file (http://conntest.nintendowifi.net/) using my browser through my proxy server, and it works. I tried again using the Wii and now it works also. At that time I still don’t understand why. I just thought that Wii needs the proxy server, and since I don’t want to turn on my computer just to access the Internet through my Wii, I tried to install tinyproxy on my openwrt linksys router, and it still doesn’t work.
After sniffing with WireShark, I realized the difference in the header (Wii only sends 1 line of GET request). Squid is a caching server, when the Wii asks for the same document, it is already in the proxy server (because I tested the URL with Firefox), so the request was handled properly by my squid.
Realizing that, I installed squid on my router, with wget periodically pulling the connection test to refresh the cache. Now everything is OK, and I think may be I can just redirect the request to http://conntest.nintendowifi.net/ to my server, but I will wait to check at my squid log to make sure whether this URL is used for connection test only or for something else.