How can I tell which network interface my computer is using?
The definitive reference for questions such as 'Which interface will be used to reach host w.x.y.z?' for any given time or situation is to refer to the routing table.
[mini-nevie:~] nevinwilliams% route get 10.10.10.10
route to: 10.10.10.10
destination: default
mask: default
gateway: 192.168.2.1
interface: en0
flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
0 0 0 0 0 0 1500 0
I've both en0 and en1 enabled, and en0 is first in Service Order. Unplugging my ethernet, making no other changes, the same command gives:
mini-nevie:~] nevinwilliams% route get 10.10.10.10
route to: 10.10.10.10
destination: default
mask: default
gateway: 192.168.2.1
interface: en1
flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
0 0 0 0 0 0 1500 0
On Mac, I use this:
if=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')
if [ -n "$if" ]; then
echo "Default route is through interface $if"
else
echo "No default route found"
fi
On Linux, the first line would be slightly different:
if=$(ip route show 0.0.0.0/0 | awk '/ dev / {print $NF}')
# or
if=$(awk '$2 == 00000000 {print $1}' /proc/net/route)
Here's a dump of ifconfig -a
in each situation (I'll highlight the differences afterward):
Ethernet cable is plugged in:
lo0: flags=8049 mtu 16384 inet6 ::1 prefixlen 128 inet6 xxxx::1%lo0 prefixlen 64 scopeid 0x1 inet 127.0.0.1 netmask 0xff000000 gif0: flags=8010 mtu 1280 stf0: flags=0 mtu 1280 en0: flags=8863 mtu 1500 inet6 xxxx%en0 prefixlen 64 scopeid 0x4 inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255 ether xx:xx:xx:xx:xx:xx media: autoselect (100baseTX ) status: active supported media: none autoselect 10baseT/UTP 10baseT/UTP 10baseT/UTP 10baseT/UTP 100baseTX 100baseTX 100baseTX 100baseTX 1000baseT 1000baseT 1000baseT fw0: flags=8863 mtu 4078 lladdr xx:xx:xx:xx:xx:xx media: autoselect status: inactive supported media: autoselect en1: flags=8863 mtu 1500 inet6 xxxx%en1 prefixlen 64 scopeid 0x6 inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255 ether xx:xx:xx:xx:xx:xx media: autoselect status: active supported media: autoselect
Ethernet cable is unplugged:
lo0: flags=8049 mtu 16384 inet6 ::1 prefixlen 128 inet6 xxxx::1%lo0 prefixlen 64 scopeid 0x1 inet 127.0.0.1 netmask 0xff000000 gif0: flags=8010 mtu 1280 stf0: flags=0 mtu 1280 en0: flags=8863 mtu 1500 ether xx:xx:xx:xx:xx:xx media: autoselect status: inactive supported media: none autoselect 10baseT/UTP 10baseT/UTP 10baseT/UTP 10baseT/UTP 100baseTX 100baseTX 100baseTX 100baseTX 1000baseT 1000baseT 1000baseT fw0: flags=8863 mtu 4078 lladdr xx:xx:xx:xx:xx:xx media: autoselect status: inactive supported media: autoselect en1: flags=8863 mtu 1500 inet6 xxxx%en1 prefixlen 64 scopeid 0x6 inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255 ether xx:xx:xx:xx:xx:xx media: autoselect status: active supported media: autoselect
diff plugged unplugged
shows that the wired connection does become active when it is available:
8,9d7
< inet6 xxxx%en0 prefixlen 64 scopeid 0x4
< inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255
11c9
< media: autoselect (100baseTX <full-duplex,flow-control>) status: active
---
> media: autoselect status: inactive
A couple of things. Mac will always use the network connections in order that's listed in your "Network Connections" profile. For example, if Ethernet is on top of Wireless, Ethernet will take over.
I'm not sure on how SSH works that much, but from my experience. If one connection fails or disconnects, SSH will then use the other connection.
If you really want to see if the connections are active, you should use a bandwidth monitor utility. A great one is iStat (http://www.islayer.com/apps/istatmenus/).