Como posso encontrar interfaces de rede disponíveis?

69

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?

    
por goldilocks 18.04.2014 / 16:03

4 respostas

75

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
    
por 18.04.2014 / 16:55
62

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.

    
por 18.04.2014 / 16:03
8

Eu sempre faço cat /proc/net/dev é simples e fácil de memorizar

    
por 19.02.2016 / 19:58
3

ifconfig = Solaris
ipconfig = Windows
ip = Linux

Isso eu sei, mas estou certamente aberto a adições e correções.

    
por 27.04.2016 / 22:32