Apple - How does the Mac choose which connection to use when both Wifi and Ethernet are connected?

From the Apple Support database article regarding network connection priority:

If you connect to the Internet or a network in several different ways (using Wi-Fi or Ethernet, for example), you can change the order of the network port configurations your computer tries when connecting to the Internet or network.

If there are multiple active network port configurations when you try to connect, OS X tries the one at the top of the list first, and then tries the other port configurations in descending order.

In that support article it is also described how you can change the priority order of network connections in System Preferences.


It's in your Network Preferences. Here's screen shots from 10.7.3.

Access the settings from the gear at the bottom of the network type sidebar.

enter image description here

Choose "Set Service Order..." to drag them into the preferred order.

enter image description here


I recommand you to never use a configuration where you may have at the same time different interfaces up on the same machine. You won't have any easy knowledge and control of this dual connectivity.

This may lead to huge difficulties to analyse even the simplest network trouble.

This may also cause loops within company or personnal networks very hard to diagnose. For example, have a look at the following command:

sysctl -a | grep forwarding

which will show you if IPv4 or IPv6 is going through your Mac from one interface through the other without your knowledge or control.

As much as possible define locations with the interface you know you want to connect to and switch on the right one at will:

Apple menu > Location > Home / AirPort
                      > Office / Ethernet
                      > outside / AirPort [unsecure]
                      > …


When 2 (or more) interfaces (for example Ethernet and Wi-Fi) are flagged green (Connected) within:

Apple menu > System Preferences… > Network

one way to know which one you are taking to reach the outside is the following line command (within a Terminal or xterm window):

route get default | grep interface