Mám eth0
a wlan0
podle ifconfig
a mohu ping google.com
.
Jak zjistím (s běžným uživatelem, nikoli root
), jaké rozhraní je aktivní, jako v jakém rozhraní používá ping (nebo cokoli, ping není povinný)?
Používám Ubuntu 11.04 nebo Fedora 14
Můžete použít route
k nalezení výchozí trasy:
$ 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
Ve sloupci Iface
v řádku s cílem default
je uvedeno, jaké rozhraní se používá.
V systémech 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)'
Jedna vložka:
ip route get 8.8.8.8 | sed -n 's/.*dev \([^\ ]*\) table.*/\1/p'
Získejte výchozí síťové rozhraní obvykle používané pro směrování na „zbývající“ internet na rozdíl od DMZ, privátní sítě, VM Host atd.), Které jsou obvykle směrovány explicitně.
$ ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)'
eth0
Spuštěním ifconfig
získáte potřebné informace.
Aktivní rozhraní bude mít inet addr
A zobrazí záznam přenášených dat, například:
RX bytes:1930741 (1.8 Mb) TX bytes:204768 (199.9 Kb)
Můžete také použít příkaz ip addr
A všechna neaktivní rozhraní budou označena jako s: NO-CARRIER
.
Příkaz ip route ls
dá seznam aktivních tras a jejich zdrojů:
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
Použijte tento příkaz:
$ route | grep default | awk '{print $8}'
enp0s3
použijte následující:
ip r | grep default
Pokud má váš počítač více rozhraní (což předpokládám), neexistuje žádné rozhraní, které bude použito pro připojení k internetu.
V závislosti na cíli, ke kterému se připojujete, váš systém zkontroluje tabulku ip (ta, která se zobrazí, když zadáte příkaz route
), aby našla další naději/router, když ji najde, použije rozhraní s tím spojené.
To znamená, prosím, podívejte se na @ torgeir's answer , protože to přesně dělá:
Různá distribuce systémů Linux, Unix, některých verzí systému Microsoft Windows a mnoha dalších operačních systémů se neomezují pouze na použití jediného síťového rozhraní pro přístup na internet. Mnoho operačních systémů bude detekovat více než jedno platné rozhraní, schopné dosáhnout internetu, a nastavit každé z nich pro přenos provozu na internet (konkrétně brány, které se nakonec připojí k internetu). Pokud se OS pokusí dosáhnout externí sítě a uspěje pomocí eth0
, přidá toto rozhraní do směrovací tabulky a připojí jej k této síti. Pokud se OS pokusí dosáhnout stejné externí sítě a také uspěje pomocí eth1
, také přidá toto rozhraní (eth1
) do směrovací tabulky jako další způsob, jak dosáhnout stejné sítě. Ostatní plakáty dosud nezohledňovaly význam metrických hodnot ve směrovací tabulce. Moje směrovací tabulka níže ukazuje dvě různá rozhraní, eth0
a wlan0
. Oba jsou nastaveny, oba byly operačním systémem nastaveny automaticky jako výchozí trasy k bráně 192.168.1.1
, a oba měli trasu vytvořenou operačním systémem automaticky k 192.168.1.X
síť. Celá tato směrovací tabulka byla automaticky napsána OS. Já to neudělal. Rozdíl je zde uveden v tom, že kabelové ethernetové rozhraní (eth0
) má nižší metriku (202), a tak více mého provozu do uzlů za mým vlastním bude přes toto rozhraní směrováno (je to upřednostňováno nižším metrikem), zatímco zbytek mého provozu do uzlů nad mou vlastní vůlí být směrován přes bezdrátové rozhraní (wlan0
) (má vyšší metriku 303, a proto je OS méně preferován).
[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
Obě rozhraní jsou používána k dosažení „internetu“ a jejich použití je váženo hodnotami „metrických“, jak je vidět ve statistikách bajtů a paketů pro eth0 a wlan0 níže:
[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
Je snadné vidět, že operační systém eth0 dostává větší provoz. Mnoho operačních systémů poskytne nižší metriku kabelovému rozhraní, které má rychlejší připojení, a vyšší metriku kabelovému rozhraní s pomalejším připojením. Například, pokud eth0
a eth1
oba se připojují ke stejnému uzlu, ale eth0
sjednalo připojení o 100 mb a eth1
sjednalo pouze připojení 10 mb, eth0
dostane nižší metriku než eth1
. Podobně mnoho operačních systémů poskytne nižší metriku kabelovému rozhraní a vyšší metriku bezdrátovému rozhraní.
Více než jedno rozhraní lze nastavit automaticky (v závislosti na operačním systému) nebo ručně tak, aby bylo dosaženo stejného externího uzlu provedením/úpravou položek ve směrovací tabulce.