O método mais simples que conheço para listar todas as suas interfaces é
ifconfig -a
EDITAR
Se você estiver em um sistema em que isso ficou obsoleto, use
ip link show
Isto é em relação ao linux, mas se alguém souber de um método geral * nix isso seria bom.
Eu inicializei um sistema ontem com um cabo ethernet conectado. "NetworkManager" não está instalado, então uma vez iniciado, fui procurar o nome da interface ethernet com ifconfig
para iniciar um cliente DHCP manualmente, mas não mostrou nada além de lo
.
A NIC foi listada via lspci
e o driver do kernel apropriado foi carregado. O sistema normalmente usa wifi, e eu poderia lembrar que o nome da interface para isso era wlan0
. Quando tentei ifconfig wlan0 up
, wlan0
apareceu. Mas os únicos nomes de interfaces Ethernet que eu conseguia lembrar eram eth[N]
e em[N]
- nenhum dos quais funcionou.
Este documento se refere a "nomes de interface previsíveis", mas não explica bem o que eles podem ser em termos simples. Ele se refere a uma parte do código-fonte que implica que o nome, neste caso, pode ser deduzido dos números do barramento PCI e do slot, o que parece ser uma complicação desnecessariamente complicada.
Outras buscas ao redor me levaram a acreditar que isso poderia ser determinado por systemd
em conjunto com udev
, mas existem quase 100 arquivos em /usr/lib/udev/rules.d
e passam uma hora tentando determinar onde (e se ) há um arquivo de configuração systemd para isso também parece ridículo.
Também seria bom saber com certeza que eles estão disponíveis, não apenas como eles podem ser nomeados se eles são, então eu posso descartar problemas de hardware, etc. Isn ' Existe uma maneira simples de encontrar os nomes das interfaces de rede disponíveis no Linux?
O kernel os lista pelo nome em /sys
, ambos separadamente em (por exemplo) a árvore de dispositivos PCI - embora encontrá-los lá se você não sabe onde eles estão para começar não é simples - e juntos através de links simbólicos em /sys/class/net
. Por exemplo:
> ls /sys/class/net
em1 lo wlp6so
Outro exemplo:
> ls /sys/class/net
lo p6s1 wlan0
Se você não tem certeza de qual é qual, você pode simplesmente colocá-los com:
ifconfig [name] up
Ou:
ip link set [name] up
E então, olhe as pistas (bastante claras) listadas por ifconfig
(sem argumentos). O código-fonte systemd vinculado a partir do documento Freedesktop.org também se refere a:
Two character prefixes based on the type of interface:
* en -- ethernet
* sl -- serial line IP (slip)
* wl -- wlan
* ww -- wwan
Embora em um dos casos acima ( p6s1
) não exista um prefixo.
Eu sempre faço cat /proc/net/dev
é simples e fácil de memorizar
ifconfig
= Solaris
ipconfig
= Windows
ip
= Linux
Isso eu sei, mas estou certamente aberto a adições e correções.
Tags networking systemd udev devices linux