desarrollo-web-br-bd.com

¿Cómo puedo encontrar las interfaces de red disponibles?

Esto se refiere a Linux, pero si alguien conoce un método general * nix, sería bueno.

Arranqué un sistema ayer con un cable de ethernet enchufado. "NetworkManager" no está instalado, así que una vez que comencé fui a buscar el nombre de la interfaz de ethernet con ifconfig para iniciar un cliente DHCP manualmente, pero no mostró nada más que lo.

El NIC se enumeró a través de lspci, y se cargó el controlador del kernel apropiado. El sistema normalmente usa wifi, y pude recordar que el nombre de la interfaz era wlan0. Cuando intenté ifconfig wlan0 up, wlan0 apareció. Pero los únicos nombres de interfaz de ethernet que podía recordar eran eth[N] y em[N] - ninguno de los cuales funcionó.

Este documento se refiere a "nombres de interfaz predecibles" pero no hace un buen trabajo al explicar lo que podrían ser en términos simples. Se refiere a un fragmento de código fuente que implica que el nombre en este caso podría deducirse del bus PCI y los números de ranura, lo que parece una molestia innecesariamente complicada.

Otra búsqueda me llevó a creer que esto podría estar determinado por systemd junto con udev, pero hay casi 100 archivos en /usr/lib/udev/rules.d y pasar una hora tratando de determinar dónde (y if) hay un archivo de configuración systemd para esto también parece ridículo.

También sería bueno saber con certeza que están disponibles, no solo cómo podrían llamarse if que son, así que puedo descartar problemas de hardware, etc. ¿No hay una manera simple de encontrar los nombres de las interfaces de red disponibles en Linux?

92
goldilocks

El método más simple que conozco para enumerar todas sus interfaces es

ifconfig -a

EDITAR

Si está en un sistema donde se ha vuelto obsoleto, puede usar

ip link show
95
Elliott Frisch

El kernel los enumera por nombre en /sys, ambos por separado en (por ejemplo) el árbol de dispositivos PCI, aunque encontrarlos allí si no sabe dónde comenzar no es simple, y juntos a través de enlaces simbólicos en /sys/class/net. P.ej.:

> ls /sys/class/net
em1 lo wlp6so

Otro ejemplo:

> ls /sys/class/net
lo p6s1 wlan0

Si no está seguro de cuál es cuál, puede ponerlos a todos con:

ifconfig [name] up 

O:

ip link set [name] up

Y luego mire las pistas (bastante claras) enumeradas por ifconfig (sin argumentos). El código fuente de systemd vinculado desde el documento de Freedesktop.org también se refiere a:

Two character prefixes based on the type of interface:
 *   en -- ethernet
 *   sl -- serial line IP (slip)
 *   wl -- wlan
 *   ww -- wwan

Aunque en uno de los casos anteriores (p6s1) no hay prefijo.

73
goldilocks

Siempre hago cat /proc/net/dev es simple y fácil de memorizar

10
Mohammad Rafiee

ifconfig = Solaris
ipconfig = Windows
ip = Linux

Eso lo sé, pero ciertamente estoy abierto a adiciones y correcciones.

6
Mick Myhera