it-swarm.it

Come scoprire quale interfaccia sto usando per connettermi a Internet?

Io ho eth0 e wlan0 secondo ifconfig e posso ping google.com.

Come posso scoprire (con un utente normale, non root) quale interfaccia è attiva, come in, quale interfaccia ha usato il ping (o qualunque cosa, il ping non è obbligatorio)?

Sto usando Ubuntu 11.04 o Fedora 14

56
LanceBaynes

Puoi usare route per trovare il tuo percorso predefinito:

$ 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

La colonna Iface nella riga con destinazione default indica quale interfaccia viene utilizzata.

55
Job

La mia versione che si basa sostanzialmente su questo e questo :

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

E questo, sperimentalmente , per macOS:

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

Su sistemi 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

Una fodera:

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

8
h0tw1r3

Ottieni l'interfaccia di rete predefinita in genere utilizzata per instradare verso Internet "rimanente" di fronte a DMZ, rete privata, VM Host ecc. Che di solito vengono instradati in modo esplicito.

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

L'esecuzione di ifconfig ti fornirà le informazioni di cui hai bisogno.

L'interfaccia attiva avrà un inet addr E mostrerà un record di dati trasmessi, in questo modo:

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

Puoi anche usare il comando ip addr E tutte le interfacce inattive saranno designate come: NO-CARRIER.

6
jasonwryan

Il comando ip route ls fornirà un elenco di percorsi attivi e relative fonti:

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

Usa questo comando:

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

usa quello sotto:

ip r | grep default
0
akash

Se la tua macchina ha più interfacce (che presumo), non esiste un'unica interfaccia che verrà utilizzata per la connessione a Internet.

A seconda della destinazione a cui ti stai connettendo, il tuo sistema consulterà la tabella ip (quella mostrata quando esegui il comando route) per trovare la prossima speranza/router, quando ne troverà una, utilizzerà l'interfaccia ad esso associato.

Detto questo, si prega di fare riferimento a risposta di @ torgeir poiché fa esattamente questo:

  1. Dato un dominio (codificato come google.com, che è l'unico punto negativo nella risposta)
  2. Risolve il suo IP
  3. Consulta la tabella ip per il percorso da utilizzare (e quindi l'interfaccia).
0
kdehairy

Diverse distribuzioni di Linux, Unix, alcune versioni di Microsoft Windows e molti altri sistemi operativi non si limitano all'utilizzo di una sola interfaccia di rete per raggiungere Internet. Molti sistemi operativi rileveranno più di un'interfaccia valida, in grado di raggiungere Internet e configureranno ognuna di esse per trasportare il traffico verso Internet (in particolare, i gateway che alla fine si collegano a Internet). Se il sistema operativo tenta di raggiungere una rete esterna e riesce a utilizzare eth0, aggiungerà tale interfaccia alla tabella di routing e la collegherà a quella rete. Se il sistema operativo tenta di raggiungere la stessa rete esterna e riesce anche con eth1, aggiungerà anche quell'interfaccia (eth1) nella tabella di routing come ulteriore modo per raggiungere quella stessa rete. Finora altri poster non hanno considerato l'importanza dei valori metrici in una tabella di routing. La mia tabella di routing, di seguito, mostra due diverse interfacce, eth0 e wlan0. Entrambi sono attivi, entrambi sono stati impostati automaticamente dal sistema operativo come route predefinite verso il gateway 192.168.1.1 ed entrambi hanno avuto un percorso creato automaticamente dal sistema operativo per il 192.168.1.X Rete. L'intera tabella di routing è stata scritta automaticamente dal sistema operativo. Nessuna modifica è stata apportata da me. La differenza mostrata qui è che l'interfaccia ethernet cablata (eth0) ha una metrica inferiore (202), e quindi una parte maggiore del mio traffico verso nodi oltre il mio verrà instradato attraverso questa interfaccia (è preferita dalla metrica inferiore), mentre il resto del mio traffico verso nodi oltre la mia volontà essere instradato attraverso l'interfaccia wireless (wlan0) (ha una metrica più alta di 303 ed è quindi meno preferita dal sistema operativo).

[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

Entrambe le interfacce vengono utilizzate per raggiungere "Internet" e il loro utilizzo è ponderato dai valori "Metrico", come si può vedere dalle statistiche sui byte e sui pacchetti per eth0 e wlan0 di seguito:

[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       

È facile vedere che eth0 sta ricevendo più traffico dal sistema operativo. Molti sistemi operativi forniranno una metrica inferiore a un'interfaccia cablata con una connessione più veloce e una metrica più elevata a un'interfaccia cablata con una connessione più lenta. Ad esempio, se eth0 e eth1 si connettono entrambi allo stesso nodo, ma eth0 ha negoziato una connessione da 100 mb e eth1 ha negoziato solo una connessione da 10 mb, eth0 otterrebbe una metrica inferiore a eth1. Allo stesso modo, molti sistemi operativi forniranno una metrica inferiore a un'interfaccia cablata e una metrica superiore a un'interfaccia wireless.

Più di un'interfaccia può essere configurata automaticamente (a seconda del sistema operativo) o manualmente, per raggiungere lo stesso nodo esterno effettuando/modificando le voci nella tabella di routing.

0
Just Jeff