Encontrar nuestra interfaz de red


Para ver las interfaces de red existentes en nuestro sistema operativo podremos utilizar bien los (antiguos) comandos “ifconfig”, bien los (nuevos) comandos “ip”. Veamos un ejemplo de cada uno, para la misma máquina. Primero el nuevo, “ip”, y luego el antiguo, “ifconfig”:

root@dshecsa01:~# ip link show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536
qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd
00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>
mtu 1500 qdisc pfifo_fast state UP mode
DEFAULT qlen 1000
link/ether 00:1f:c6:08:f5:7f brd
ff:ff:ff:ff:ff:ff

root@dshecsa01:~# ifconfig -a

eth0 Link encap:Ethernet HWaddr
00:1f:c6:08:f5:7f
inet addr:10.100.100.2
Bcast:10.100.100.255 Mask:255.255.255.0
inet6 addr:
fe80::21f:c6ff:fe08:f57f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST
MTU:1500 Metric:1
RX packets:59732677 errors:2
dropped:0 overruns:0 frame:0
TX packets:55481698 errors:0
dropped:0 overruns:0 carrier:8
collisions:0 txqueuelen:1000
RX bytes:50329751 (50.3 MB) TX
bytes:2432319193 (2.4 GB)
Memory:dffc0000e0000000

lo Link encap:Local Loopback
inet addr:127.0.0.1
Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536
Metric:1
RX packets:8982327 errors:0
dropped:0 overruns:0 frame:0
TX packets:8982327 errors:0
dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1043820519 (1.0 GB) TX
bytes:1043820519 (1.0 GB)

Vemos en el ejemplo que nuestro sistema operativo reconoce dos interfaces de red: “lo” y “eth0”. Pero si tengo una única tarjeta de red, ¿por qué me aparecen dos? La primer interfaz de red listada, “lo”, es lo que se conoce como “loopback”, y la segunda es la ethernet propiamente dicha.

muchas de las funciones de un sistema operativo dependen de la existencia de una interfaz de red en funcionamiento, y que puede ocurrir que una máquina no posea ninguna reconocida (por ejemplo, si aún no se ha cargado su driver), se decidió que una buena práctica sería la de generar en forma predeterminada esta interfaz para simular un conector que en algunas máquinas, hace muchos años atrás, se colocaba en su parte posterior, y funcionaba extrayendo las señales de salida y reinsertándolas como entradas en la misma máquina para hacer pruebas, llamado “loopback”. Más adelante veremos que no importa el sistema operativo ante el que nos encontremos, esta interfaz siempre tendrá la misma dirección IP, que es la 127.0.0.1. Claro está, eso cuando veamos cómo se conforman las direcciones IP.

Volviendo a la tierra, ¿cómo sabemos qué driver es el que está usando nuestra tarjeta de red? Para resolver tan enigmático misterio, nada como los comandos “ls*” de GNU/Linux, que en nuestro caso se podrían resumir en “lspci” y “lsusb”, según nuestra tarjeta esté conectada mediante un método o el otro (léase, directamente conectada a nuestra máquina, o conectada mediante un puerto USB, como pasa con algunas interfaces WiFi externas, por citar sólo un ejemplo). La salida de un comando “lspci” puede ser bastante extensa, en nuestro caso nos focalizaremos sólo en la sección que hace referencia a la interfaz de red ethernet:

root@dshecsa01:~# lspci
...
02:00.0 Ethernet controller: Qualcomm Atheros Attansic
L2 Fast Ethernet (rev a0)

Bien, vemos que nuestra interfaz de red es marca Qualcomm Atheros Attansic L2 Fast Ethernet. Pero vemos también unos curiosos números al frente de su descripción, “02:00.0”. Esos números que para decepción de los más religiosos nada tienen que ver con algún aspecto bíblico, nos servirán para identificar el driver que el sistema operativo tiene cargado para poder controlar la tarjeta de red. Podremos ver cuál es el driver buscándolo en el directorio /sys de nuestro GNU/Linux con el siguiente comando:

root@dshecsa01:~# find /sys | grep drivers.*02:00
/sys/bus/pci/drivers/atl2/0000:02:00.0

¡Bravo! Nuestro driver de seguro será descripto en nuestro sistema operativo como “atl2”. Estamos a muy poco de descifrar el rompecabezas. Veamos si efectivamente nuestro driver está cargado en nuestro sistema operativo usando “lsmod” (abreviatura de “list modules”, o “listar módulos”, ya que desde hace un buen tiempo, para alegría de todos, estos drivers se implementan en nuestro sistema operativo como módulos dinámicos de kernel):

root@dshecsa01:~# lsmod | grep atl2
atl2 27628 0

Bien, ya sabemos que el driver está cargado. Ahora, si necesitáramos saber dónde se encuentra el archivo que lo hace funcionar, dentro del kernel, así como otros datos, ¿cómo podríamos hacer? GNU/Linux tiene un comando para todo, y “modinfo” nos entregará tan valiosa información:

root@dshecsa01:~# modinfo atl2
filename: /lib/modules/3.8.0-19-
generic/kernel/drivers/net/ethernet/atheros/atlx/atl2.ko
version: 2.2.3
license: GPL
description: Atheros Fast Ethernet Network Driver
author: Atheros Corporation
<xiong.huang@atheros.com>, Chris Snook
<csnook@redhat.com>
srcversion: 489B206AFB57B59A896E561
alias: pci:v00001969d00002048sv*sd*bc*sc*i*
depends:
intree: Y
vermagic: 3.8.0-19-generic SMP mod_unload
modversions 686
parm: TxMemSize:Bytes of Transmit Memory
(array of int)
parm:RxMemBlock:Number of receive memory
block (array of int)
parm: MediaType:MediaType Select (array of int)
parm:IntModTimer:Interrupt Moderator Timer
(array of int)
parm:FlashVendor:SPI Flash Vendor (array of int)

Prestemos especial atención a la línea que nos muestra el nombre de archivo que debe estar cargado como librería de nuestro kernel para que la tarjeta de red pueda funcionar. Y si queremos molestar a alguien cuando nuestra tarjeta no funcione como es debido, tenemos la dirección de correo electrónico del autor del driver, que de seguro recibirá nuestro comentario con gran alegría, y alguna que otra referencia a nuestros familiares cercanos, en este caso calculo que en idioma chino simplificado.

cristian alonso

Autor & Editor

Usuario avanzado en GNU/Linux.

0 comentarios:

Publicar un comentario

 
biz.