Questo riguarda Linux, ma se qualcuno fosse a conoscenza di un metodo generale * nix sarebbe positivo.
Ieri ho avviato un sistema con un cavo Ethernet collegato. "NetworkManager" non è installato, quindi una volta avviato sono andato a cercare il nome dell'interfaccia Ethernet con ifconfig
per avviare manualmente un client DHCP, ma non ha mostrato altro che lo
.
Il NIC è stato elencato tramite lspci
e il driver del kernel appropriato è stato caricato. Il sistema normalmente utilizza il wifi e potrei ricordare il nome dell'interfaccia per quello era wlan0
. Quando ho provato ifconfig wlan0 up
, wlan0
apparso. Ma gli unici nomi di interfaccia Ethernet che potevo ricordare erano eth[N]
e em[N]
- nessuno dei quali ha funzionato.
Questo documento si riferisce a "nomi di interfaccia prevedibili" ma non fa un buon lavoro nel spiegare quali potrebbero essere in termini semplici. Si riferisce a un pezzo di codice sorgente che implica che il nome in questo caso potrebbe essere dedotto dal bus PCI e dai numeri di slot, il che sembra una seccatura inutilmente complicata.
Altre ricerche mi hanno portato a credere che questo potrebbe essere determinato da systemd
insieme a udev
, ma ci sono quasi 100 file in /usr/lib/udev/rules.d
e passare un'ora cercando di determinare dove (e if) esiste un file di configurazione di sistema per questo sembra ridicolo.
Sarebbe anche bello sapere con certezza che sono disponibili, non solo come potrebbero essere nominati if che sono, quindi posso escludere problemi hardware, ecc. Non esiste un modo semplice per trovare i nomi delle interfacce di rete disponibili su Linux?
Il metodo più semplice che conosco per elencare tutte le tue interfacce è
ifconfig -a
[~ ~ #] modifica [~ ~ #]
Se utilizzi un sistema in cui è stato reso obsoleto, puoi utilizzarlo
ip link show
Il kernel li elenca per nome in /sys
, entrambi separatamente (ad es.) nell'albero dei dispositivi PCI - sebbene trovarli lì se non sai da dove cominciare non è semplice - e insieme tramite symlink in /sys/class/net
. Per esempio.:
> ls /sys/class/net
em1 lo wlp6so
Un altro esempio:
> ls /sys/class/net
lo p6s1 wlan0
Se non sei sicuro di quale sia, potresti semplicemente metterli tutti con:
ifconfig [name] up
O:
ip link set [name] up
E poi guarda gli indizi (abbastanza chiari) elencati da ifconfig
(senza argomenti). Il codice sorgente di systemd collegato dal documento Freedesktop.org fa riferimento anche a:
Two character prefixes based on the type of interface:
* en -- ethernet
* sl -- serial line IP (slip)
* wl -- wlan
* ww -- wwan
Sebbene in uno dei casi sopra (p6s1
) non esiste un prefisso.
Lo faccio sempre cat /proc/net/dev
è semplice e facile da memorizzare
ifconfig
= Solarisipconfig
= Windowsip
= Linux
Questo lo so, ma sono certamente aperto a aggiunte e correzioni.