I just replaced my router and now all of a sudden my machines can’t see each
other. They were working fine before the replacement and I could regularly
access files and make remote desktop connections between the machines. They all
see the internet just fine, just not each other. What gives?
That was actually me a few days ago.
My opinion of Windows networking for the average consumer isn’t very high, so when I
discovered what was happening, how easy it is to miss, and how easy it is to
fix, I realized that it was time to write up my discoveries.
My error manifested this way:
But network attached storage isn’t very helpful if you can’t connect to it.
As it turns out, the machine was working fine. Windows was simply being paranoid and protecting itself.
I walked down to my basement and did the following:
I clicked the network icon in the taskbar notification area (this machine insists on showing an ‘X’ on the connection, even though the connection is working):
I clicked Open Network and Sharing Center:
I saw the problem – the network connection had been classified as a Public Network:
I clicked Public Network to change it to something else:
I clicked Home Network.
I was then presented with the “Do you want to create a Homegroup?” dialog:
I clicked Cancel.
I could now, once again, access this machine remotely from other machines.
And to be clear, this is a setting that you confirm on the machine that you are connecting to.
“Home” versus “Public”
The difference between telling Windows that you’re connected to a home network versus a public one is a matter of security and trust.
On a public network, you can trust no one. In places like coffee shops or other open Wifi hotspots, you have no idea what other computers are sharing the internet connection with you and thus, you can’t be certain that they’re not malicious in some way.
As a result, when making this choice, Windows configures its firewall to be as secure as possible. All non-essential incoming services are blocked by default. This includes remote desktop, as I experienced, as well as file sharing.
The idea behind a Home network is that you can trust everyone sharing the local network behind your router. You control, or know, all of the connected computers and can presumably make sure that they’re all operated securely. With that as an assumption, Windows then opens up to allow several services through the firewall – including remote desktop and file sharing.
(To be honest, I’m not sure the nuances behind the third option, a Work Network. For the vast majority of people, Home and Public are really the only options to be concerned with.)
So how’d it change?
The real question is how does Windows determine that you’re on a new network? When I took my laptop to Starbucks and connected there for the first time, Windows popped up the Set Network Location dialog and asked me whether it was a home, work, or public network. (Naturally, I said public.)
How’d it know I’d changed networks?
Your first reaction might be to say, “Well, the wireless network has a different name or SSID.” True. But consider this: the same thing happens for a wired connection. Move a computer to a new location and connect it with a cable, and Windows will again ask: “Home, work or public?”
I don’t know how Windows does it, but I can guess.
I would guess that it remembers the MAC address of the router that you’re connecting to.
A MAC address is supposed to be unique for every device connected to any ethernet network. As a result, when you connect to a new network, your machine is connecting to a different router with a different MAC address. As long as you stay connected to that same router, Windows believes that you’re on the same network.
I could be wrong about the details, but my theory also explains one other thing…
Why it happened to me.
Remember what I said I did when this all started? I changed my router.
New router means new MAC address, and that means “A new network!” from Windows’ point of view.
Why it’s easy to miss
When Windows first connects to what it considers to be a new network – which you’ll most commonly see when you setup a new machine or connect a new machine to your network for the first time – it does two things:
It displays the Set Network Location dialog, asking you whether this is a home, work, or public network.
Until you say otherwise, it assumes public.
The assumption that the network is public is for security reasons. For example, if Windows assumed that the network was a home network but in reality you were connected to a public network, your computer would be at risk.
There’s an additional step, though, where it gets tricky.
Let’s say that you’re not around to notice that it’s asking you for the network location or that for some reason, you just don’t notice.
And then let’s say the machine reboots.
When it comes back online:
It continues to assume public.
It does not ask again what you want.
In other words, it simply defaults to public.
And until I walked down to my basement and told it otherwise, I could not remotely access my machine or access the files on it.
The big take-away
If you’re having trouble connecting to a Windows 7 machine across your local network, check the network location setting on that machine as I’ve described above. It could very well be Windows trying to protect you.