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

The Service Order doesn't work. If you test it, you will find that Mac OS prioritizes Wifi over Ethernet, even if Ethernet is set higher in the Service Order.

One way to test it is to measure your bandwidth (e.g., https://www.fast.com) in the following scenarios:

  1. Connected to Wifi, with Ethernet unplugged
  2. Connected to Ethernet, with Wifi turned off
  3. Connected to Wifi and Ethernet

You will find that the speed from #2 is faster than #1 and #3. You will also find that #1 and #3 are the same speed.

The only solution is to disable WiFi when you connect via Ethernet and turn on Wifi when you disconnect Ethernet.

This script does that automatically!

https://gist.github.com/albertbori/1798d88a93175b9da00b

If you have any issues, search the comments for the error message you encounter. For example, I got the Path had bad ownership/permissions error, but the solution is posted in the comments.