如何查明我使用哪个接口连接到互联网?

如何查明我使用哪个接口连接到互联网?

我已经eth0并且wlan0根据ifconfig并且我可以ping google.com

我怎样才能找到(对于普通用户,而不是root)什么界面积极的,例如,ping(或其他,ping 不是强制的)使用什么接口?

我使用的是 Ubuntu 11.04 或 Fedora 14

答案1

您可以使用route以下命令来查找默认路由:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     1      0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

Iface目标行中的列告诉default您使用哪个接口。

答案2

我的版本基本上是基于:

route | grep '^default' | grep -o '[^ ]*$'

和这个,实验地,对于 macOS:

route -n get default | grep 'interface:' | grep -o '[^ ]*$'

答案3

在 GNU/Linux 系统上:

#!/bin/sh

# host we want to "reach"
host=google.com

# get the ip of that host (works with dns and /etc/hosts. In case we get  
# multiple IP addresses, we just want one of them
host_ip=$(getent ahosts "$host" | awk '{print $1; exit}')
    
# only list the interface used to reach a specific host/IP. We only want the part
# between dev and the remainder (use grep for that)
ip route get "$host_ip" | grep -Po '(?<=(dev ))(\S+)'

答案4

获取通常用于路由到与 DMZ、专用网络、VM 主机等相反的“剩余”互联网的默认网络接口,这些接口通常是显式路由的。

$ ip route get 8.8.8.8 | sed -n 's/.* dev \([^\ ]*\) .*/\1/p'
eth0

相关内容