it-swarm.cn

如何找出我用于连接互联网的接口?

我有 eth0wlan0根据ifconfig,我可以ping google.com

我如何找出(对于普通用户,不是root)什么接口活动,例如,ping(或强制ping是强制性的)使用了哪个接口?

我正在使用Ubuntu 11.04或Fedora 14

56
LanceBaynes

您可以使用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列告诉您使用哪个接口。

55
Job

我的版本基本上基于 thisthis

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

对于macOS,这是实验

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

在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 src (use grep for that)
ip route get "$Host_ip" | grep -Po '(?<=(dev )).*(?= src| proto)'
11
Torgeir

一班轮:

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

8
h0tw1r3

获取默认网络接口,该接口通常用于路由到与DMZ相反的“剩余” Internet,专用网络,VM Host等),这些路由通常是明确路由的。

$ ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)'
eth0
7
EugeneP

运行ifconfig将为您提供所需的信息。

活动接口将具有_inet addr_并将显示已传输数据的记录,如下所示:

RX bytes:1930741 (1.8 Mb)  TX bytes:204768 (199.9 Kb)

您也可以使用_ip addr_命令,任何不活动的接口都将被指定为具有_NO-CARRIER_。

6
jasonwryan

命令 ip route ls会列出有效路线及其来源:

caleburn: ~/ >ip route ls
192.168.10.0/24 dev eth0  proto kernel  scope link  src 192.168.10.7 
default via 192.168.10.254 dev eth0 
2
Shadur

使用以下命令:

$ route | grep default | awk '{print $8}'
enp0s3
1
Larry Catt

使用以下之一:

ip r | grep default
0
akash

如果您的计算机有多个接口(我假设是这样),则没有一个接口可用于连接到Internet。

根据要连接的目标,系统将查询ip表(执行route命令时显示的表)以查找下一个希望/路由器,当找到希望/路由器时,它将使用该接口与之相关。

也就是说,请参考@torgeir的 answer ,因为它确实可以做到:

  1. 给定一个域(硬编码为google.com,这是答案中唯一的缺点)
  2. 解决它的ip
  3. 查阅ip表以了解要使用的路由(以及接口)。
0
kdehairy

Linux,Unix,Microsoft Windows的某些版本以及许多其他操作系统的不同发行版不限于仅使用一个网络接口即可访问Internet。许多操作系统将检测到不止一个可以访问Internet的有效接口,并设置每个接口以将流量传送到Internet(特别是最终连接到Internet的网关)。如果操作系统尝试访问外部网络并成功使用eth0,它将将该接口添加到路由表中并将其绑定到该网络。如果操作系统尝试访问相同的外部网络并且也成功使用eth1,则它还将该接口(eth1)添加到路由表中,作为访问该相同网络的另一种方式。迄今为止,其他发布者尚未考虑路由表中度量值的重要性。下面的路由表显示了两个不同的接口,eth0wlan0。两者都已启动,并且都已由操作系统自动设置为通往网关192.168.1.1的默认路由,并且都具有由操作系统自动构建至192.168.1.X网络的路由。整个路由表是由OS自动编写的。我没有对其进行编辑。此处显示的区别是,有线以太网接口(eth0)具有较低的度量标准(202),因此,到我自己节点之外的节点的更多流量将通过此接口进行路由(较低的度量标准优先) ),而到我自己节点以外的节点的其余流量将通过无线接口(wlan0)进行路由(它的度量标准更高,为303,因此,操作系统不太喜欢它)。

[email protected]:~ $ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    202    0        0 eth0
default         192.168.1.1     0.0.0.0         UG    303    0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     202    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     303    0        0 wlan0

这两个接口都用于访问“ Internet”,并且它们的使用由“ Metric”值加权,如下面的eth0和wlan0的字节和数据包统计信息所示:

[email protected]:~ $ ip -s address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope Host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope Host 
       valid_lft forever preferred_lft forever
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0       
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether dc:a6:32:31:a2:c7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.195/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
       valid_lft 80787sec preferred_lft 69987sec
    inet6 fe80::2f3f:3f1d:8c35:a05e/64 scope link 
       valid_lft forever preferred_lft forever
    RX: bytes  packets  errors  dropped overrun mcast   
    14341060   22393    0       0       0       971     
    TX: bytes  packets  errors  dropped carrier collsns 
    1190274    10745    0       0       0       0       
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether dc:a6:32:31:a2:c8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.193/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
       valid_lft 80787sec preferred_lft 69987sec
    inet6 fe80::4f31:5fcf:8f70:b5ca/64 scope link 
       valid_lft forever preferred_lft forever
    RX: bytes  packets  errors  dropped overrun mcast   
    4963408    7954     0       0       0       929     
    TX: bytes  packets  errors  dropped carrier collsns 
    49371      235      0       0       0       0       

显而易见,操作系统为eth0提供了更多流量。许多操作系统会为连接速度较快的有线接口提供较低的指标,而为连接速度较慢的有线接口提供较高的指标。例如,如果eth0eth1都连接到同一节点,但是eth0协商了100 mb的连接,而eth1仅协商了10 mb的连接,则eth0的指标要低于eth1。同样,许多操作系统将为有线接口提供较低的指标,为无线接口提供较高的指标。

通过创建/编辑路由表条目,可以自动(取决于操作系统)或手动设置多个接口以到达同一外部节点。

0
Just Jeff