Sunday 25 April 2010

Why can't I connect with a 169.254.x.x IP address?


Summary: 169.254.x.x IP addresses are self-assigned when your computer can't get an address any other way. It's an almost sure sign of a problem.

My IP address was 192.168.x.xx, and somehow it was changed to 169.254.xx.xx. Because of this I can't access the internet. Any ideas?
Your IP address wasn't "changed" so much as it was broken.
If you end up with an IP in the 169.254.x.x address range, then something is definitely wrong.
For most folks, the IP address of your computer is assigned when you boot your machine. Using DHCP, your computer asks for an IP address, and a DHCP server responds by assigning one:
Simple DHCP assignment
If you're behind a NAT router it'll be the one handing out IP addresses and you'll most commonly get an address in the 192.168.x.x range. If you're directly connected to the internet your IP address could be almost anything. Exactly what range it'll be in is defined by which IP address ranges have been assigned to your ISP.
169.254.x.x, however, is special.
Consider: what happens when your computer asks for an IP address and no one responds? Due to a network problem, or maybe not being on a network at all, perhaps there's no DHCP server to hand out IP addresses.
What happens is this: your machine waits for a while and then gives up. But when it gives up it invokes Automatic Private IP Addressing, or APIPA, and makes up its own IP address. And those "made up" IP addresses are in the 169.254.x.x range.
"It's like having an unlisted phone number that's so unlisted that even the phone company doesn't know it."
Now, a 169.254.x.x IP address is pretty close to useless. The reason that IP addresses are assigned is so that the upstream networking equipment knows where to send or how to route packets that are destined to reach a machine at a particular address. In other words, when things work that equipment knows that your machine has this address. If your machine makes up its own address, no one else knows. As a result, there's no way to know how to get to your machine.
It's like having an unlisted phone number that's so unlisted that even the phone company doesn't know it. No one can call you.
Even connecting "out" to visit, say, a web site or other server doesn't work because there's no way to know where to send the response.
In fact, the only utility I've ever found with a 169.254.x.x address is if machines are connected directly to each other, then some protocols can be made to work machine-to-machine using the IP addresses. Most, however, do not.
It's frustrating enough that I consider a 169.254.x.x the same as "it's broken" and move on to resolving the underlying cause.
About all you can really say from getting one of those addresses is simply that the machine cannot reach the DHCP server over the network.
  • If you're connected via a NAT router, then either your computer is not actually connected on the network to that router, or the router itself isn't responding to the DHCP request. I typically triple-check my cabling, and perhaps reboot the router.
  • If you're connected to the internet directly then there's something about that that isn't working. Check the cabling to your broadband modem, and check the cabling from your broadband modem to your telephone or cable line. And, if all else fails, call your ISP - it may be their DHCP server or some other item they control that's at fault.
Bottom line: if you're getting a 169.254.x.x IP address then something about your network setup isn't working, and you probably want to investigate what and why.

No comments:

Post a Comment