Esto es con respecto a linux, pero si alguien sabe de un método general de *nix sería bueno.
Ayer arranqué un sistema con un cable ethernet enchufado. "NetworkManager" no está instalado, así que una vez que se inició fui a buscar el nombre de la interfaz ethernet con ifconfig
para iniciar un cliente DHCP manualmente, pero no mostró nada más que lo
.
La NIC fue listada a través de lspci
, y se cargó el driver apropiado del kernel. El sistema normalmente usa wifi, y puedo recordar que el nombre de la interfaz es wlan0
. Cuando probé ifconfig wlan0 up
, wlan0
apareció. Pero los únicos nombres de interfaz ethernet que podía recordar eran eth[N]
y em[N]
- ninguno de los cuales funcionaba.
Este documento se refiere a "nombres de interfaz predecibles", pero no hace un buen trabajo explicando lo que podrían ser en términos simples. Hace referencia a un trozo de código fuente que implica que el nombre en este caso podría deducirse del bus PCI y de los números de ranura, lo que parece una molestia innecesariamente complicada.
Otras búsquedas me llevaron a creer que esto podría ser determinado por systemd
en conjunto con udev
, pero hay casi 100 archivos en /usr/lib/udev/rules.d
y pasar una hora tratando de determinar dónde (y si) hay un archivo de configuración de systemd para esto también parece ridículo.
También estaría bien saber con certeza que están disponibles, no sólo cómo podrían llamarse si lo están, para poder descartar problemas de hardware, etc. **¿No hay una forma sencilla de encontrar los nombres de las interfaces de red disponibles en linux?
El método más sencillo que conozco para listar todas sus interfaces es
ifconfig -a
EDIT
Si está en un sistema en el que esto ha quedado obsoleto, puede utilizar
ip link show
El kernel los enumera por nombre en /sys
, tanto por separado en (por ejemplo) el árbol de dispositivos PCI - aunque encontrarlos allí si no sabes dónde están para empezar no es sencillo - y juntos a través de symlinks en /sys/class/net
. Por ejemplo
> ls /sys/class/net
em1 lo wlp6so
Otro ejemplo:
> ls /sys/class/net
lo p6s1 wlan0
Si no está seguro de cuál es cada uno, puede ponerlos todos con cualquiera de ellos:
ifconfig [name] up
O:
ip link set [name] up
Y luego mire las pistas (bastante claras) listadas por ifconfig
(sin argumentos). El código fuente de systemd enlazado desde el documento de Freedesktop.org también hace referencia 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.