One common issue that has affected OS X systems is when network interfaces are issued a self-assigned IP address, even though the system is connected to a network with a properly configured DHCP server. When this happens, other systems on the same network (often including similarly configured Macs) will be working just fine, indicating the problem lies with the Mac's configuration and is not a compatibility issue with the networking hardware.
Often when I encounter this issue, I find that people have recently made a relatively major configuration change to their systems, either by updating their OS version, performing an upgrade to another major release of OS X, migrating to a new system, or have just restored their systems from backup. Initial attempts to address the problem include creating new network locations to refresh the network port configurations, or manually refresh the DHCP lease to force a reconfiguration for the port. While these are good attempts, many times they do not fix the problem.
The reason OS X issues self-assigned IP addresses is to allow a network interface to create an ad-hoc network if needed, without the presence of an established network. However, this is only done if the network port detects a proper hardware connection but cannot communicate with the DHCP server to obtain an IP address. Usually the main culprit for this is configuration problems with the system's firewall.
When people perform major configuration changes to their systems, sometimes the settings may not migrate properly. One that seems particularly vulnerable to odd problems is the system firewall. Luckily the fix is a relatively easy one; all you have to do is remove the firewall's preferences and then reboot the system.
To reset the firewall, go to the /Macintosh HD/Library/Preferences/ folder and remove the file called "com.apple.alf.plist," and then restart your computer. After the system boots, you may be prompted to allow incoming connections to numerous programs and services, so accept these for now (you can always go to the Firewall settings and deny or remove entries later on) and then try connecting to the network again. While configuration changes from migrating or restoring a system can lead to this problem, at other times major system crashes or power outages can do the same.