I'm setting up a small network for a club that I'm a member of. The layout is a single server with two ethernet interfaces, connected to a wireless router and a wireless bridge. The bridge connects to a WiFi network to get internet access, while the router allows people to connect to the network and the server. The server runs Debian Squeeze, and provides ftp, git, and a local web host. It also acts as a gateway; DHCP and DNS are provided by Dnsmasq. There are a few local domains served by Dnsmasq from the server's /etc/hosts file: blah (webserver and ftp) and git.blah (git http server). Both of these domains point to the server.
Everything works fine when I connect using a Linux client. I can get a DHCP lease, access the internet through the server, get DNS results from Dnsmasq (for local domains and real ones), and access all the services.
The problem comes when I try to use a Windows client. Programs in windows will not recognize the blah domain, but will recognize the git.blah domain. I can get a DHCP lease, access the internet, and use services if I refer to them by their IP address. If I use nslookup to query the server directly, it returns the correct results. I've tested Windows Vista and 7 with identical results.
What is preventing Windows from using the blah domain, and is it something I can fix through DHCP or DNS?