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.
Choose "Set Service Order..." to drag them into the preferred order.
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:
- Connected to Wifi, with Ethernet unplugged
- Connected to Ethernet, with Wifi turned off
- 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.