My Mac Has More Network Interfaces Than I Have Friends
A practical field guide to macOS network interfaces, mysterious tunnels, and the comforting lie that Wi-Fi is always en0.
Apple says the Mac “just works.” This is true until you run ifconfig.
Suddenly the machine has en0, en1, awdl0, llw0, several utun
interfaces, and perhaps a bridge that nobody remembers building. My Mac has
more ways to communicate than I do, and most of them refuse to explain
themselves.
Fortunately, the list is less mysterious once everyone is wearing a name tag.
Do not guess which one is Wi-Fi
Start here:
networksetup -listallhardwareports
The command maps friendly hardware names such as Wi-Fi and Ethernet to
device names such as en0 and en7. This is better than assuming Wi-Fi is
always en0, an assumption that works beautifully right up to the Mac where it
does not.
Apple documents the same network services in Network settings on Mac. The available services depend on the Mac and its configuration, so scripts should discover the mapping instead of treating one laptop as constitutional law.
Ask the routing table
Knowing the Wi-Fi device is useful. Knowing where traffic will actually go is better:
route -n get default
Look for the interface: line. That is the interface selected for the default
IPv4 route.
The word default matters. A VPN, a more specific route, or a split tunnel can send one destination somewhere else. When debugging a particular address, ask about that address:
route -n get 1.1.1.1
The routing table is the adult in the room. Interface names are merely wearing lanyards.
Meet the cast
en*usually represents hardware-facing network devices: built-in or attached Ethernet, Wi-Fi, and similar adapters. Usenetworksetupto learn which is which.awdl0andllw0are macOS-managed interfaces used for Apple peer and low-latency networking features. They are not spare Wi-Fi interfaces waiting for a hobby project.utun*interfaces are tunnels, commonly created by VPN software and Network Extensions. Their numbers are not permanent identities.utun6may becomeutun7after a reboot because computers enjoy character development.bridge*is a software bridge. It may be associated with sharing, virtualization, or another local networking feature.
The exact cast changes with the Mac, macOS release, adapters, VPNs, and software in use. Do not shut down an unfamiliar interface only because the list looks untidy. macOS may need it, and it may recreate it with the confidence of a cat returning to a freshly cleaned keyboard.
My five-command check
When a Mac says the network is connected but reality disagrees, I start with:
networksetup -listallhardwareports
route -n get default
ifconfig "$(route -n get default | awk '/interface:/{print $2}')"
netstat -rn -f inet
scutil --dns
This answers five different questions:
- Which device belongs to each network service?
- Which interface owns the default path?
- Does that interface have an address and look active?
- Are more-specific routes changing the path?
- Which DNS resolvers and search domains will macOS use?
If a VPN is involved, the extra utun interfaces are usually evidence, not the
crime. Apple platforms support both built-in VPN protocols and custom VPN
clients implemented with Network Extension, so a tunnel can legitimately
change both routes and DNS behavior.
The Apple-shaped moral
The long interface list is not a mess. It is a map of physical devices, software tunnels, peer networking, and virtual links that happen to share one command output.
Do not memorize the map. Ask the system which hardware name maps to which device, then ask the routing table which path it chose.
It still “just works.” It simply has a lot of coworkers.
Discussion
Comments
Loading comments…