Fix slow login on Windows when offsite from domain
Wednesday, June 20th, 2007I recently ran into a interesting issue where a Windows Vista machine would wait for 2 minutes to login after the password was typed in. But it would only occur when the laptop was connected to a network with internet access that was not its normal domain network.
After hooking the laptop to a hub with another PC, i started Wireshark to log all packets. After sifting through the data I found that it was attempting to connect to the primary domain controller by domain name, and consecutively trying to connect to all 5 secondary domain controllers by domain name.
What I found was that the domain names were not pointing to the domain servers across the internet, which would be dumb, but were trying to resolve the domain using yahoo name servers which didn’t know the internal sub domains. It was connecting to Yahoo’s name servers because that is who they have hosting their external DNS for them. Yahoo’s name servers redirected the connections to their main website instead because it was a catch-all address.
The problem is in three different places here.
- Split DNS is being used - They are using a internal DNS server to resolve their subdomains internally, but these subdomains are not known externally so when they are remote they do not resolve properly.
- A catch-all address is being used on yahoo’s name servers - This is causing any unknown subdomains to be redirected to the main domain name. Which in this case, is the main website which doesn’t house the domain server.
- The requests are hitting yahoo’s firewall and it is dropping the packets instead of sending a ICMP error message - This is causing the TCP connections to hang for the default amount of time causing windows to wait before logging in.
This problem is obviously caused by DNS issues. In order to remedy the problem, I had to fix the broken split DNS issues.
To do this you have two options:
- Remove the wildcard from DNS.
- Redirect the problem subdomains to 127.0.0.1
Removing the wildcard from DNS is the preferred solution. This will cause the DNS server to report “no such name” which will terminate the connection before it is established.
If you cannot remove the wildcard from DNS then you will want to manually make DNS records that point to 127.0.0.1
Such as:
- subdomain1.example.com > 127.0.0.1
- subdomain2.example.com > 127.0.0.1
This will cause the connection to redirect to your localhost when offsite using global DNS. Your localhost will then report that connection unusable which will terminate the connection right away.
The boot up times decreased by 75%!
From 2 minutes to 30 seconds. That is an improvement! The lesson here is to make sure your DNS is correct.
Although, it would be nice if Microsoft would release a patch that would do this in the background after it loads your desktop instead of waiting for the connections to terminate!
I would also like to thank the genius who set up the DNS incorrectly and created all this wonderful work for me. Much appreciated!
