El comando ifconfig en Ubuntu
Es frecuente que únicamente utilicemos el comando ifconfig cuando necesitemos consultar información relacionada con la configuración de red de nuestro equipo. En general, sólo nos acordamos de él cuando experimentamos dificultades de conexión o cuando estamos tratando de ajustar su funcionamiento.
Aún así, se trata de un comando con características interesantes que conviene conocer bien para obtener de él todo su potencial. Una verdadera navaja suiza de la configuración de red. Por ese motivo, hoy vamos a profundizar en su funcionamiento. Y, para que resulte más instructivo, lo haremos a través de ejemplos.
ifconfig sin argumentos
Este es, probablemente, el uso más extendido que se hace de ifconfig. Basta con escribir el nombre del comando y pulsar la tecla Intro. Al hacerlo, nos muestra los detalles de todos los interfaces de red que se encuentren activos en nuestro sistema.
ifconfig
Puede que, la primera vez que utilices el comando, recibas un error como el de la siguiente imagen.
Tal y como nos dice el propio mensaje de error, el motivo es que no está instalado el paquete net-tools. Incluso nos ofrece el comando que necesitaremos para instalarlo:
sudo apt install net-tools
Una vez completada la instalación estaremos listos para comenzar a utilizar el comando.
Como puedes ver en la imagen, la cantidad de información que obtenemos de cada adaptador de red es considerable. Por eso, vamos a tratar de analizarla de un modo más detallado, centrándonos en el primer adaptador que aparece:
- Link encap: indica el tipo de interfaz del adaptador de red. En nuestro caso, se trata de una interfaz Ethernet, que es la más frecuente.
- direcciónHW: muestra la dirección MAC (Media Access Control), también conocida como dirección física, del adaptador de red. Se trata de un valor único para cada tarjeta de red Ethernet.
- Direc. inet: Contiene la dirección IP del dispositivo para TCP/IPv4.
- Difus: muestra la dirección de broadcast para la red en la que nos encontramos.
- Másc: determina los bits que establecen el ámbito de la red
- Dirección inet6: Contiene la dirección IP del dispositivo para TCP/IPv6.
- ACTIVO: Indica que se han cargado los módulos del núcleo relacionados con la interfaz Ethernet.
- DIFUSIÓN: Informa de que el dispositivo admite difusión, necesaria para obtener una dirección IP a través de DHCP.
- FUNCIONANDO: Significa que la interfaz está preparada para recibir datos.
- MULTICAST: Indica que la interfaz Ethernet admite multicasting (un dispositivo puede enviar paquetes que tienen como receptores a varios adaptadores diferentes, que se encuentran a la espera)
-
Las siglas MTU provienen de la expresión Maximum Transmission Unit.
MTU: Indica el tamaño de los paquetes enviados o recibidos por el adaptador de red. De forma predeterminada, su valor será 1500
- Métrica: Muestra un número entero a partir de 0. En caso de que existan varios adaptadores de red en el mismo equipo, se debería dar preferencia al adaptador que tenga un valor menor en este parámetro. No obstante, en GNU/Linux se utiliza el valor de métrica obtenido de la tabla de enrutamiento.
- Paquetes RX: Indica el número de paquetes recibidos hasta el momento por el adaptador. También incluye los siguientes datos:
- errores: Indica el número de paquetes recibidos con errores (CRC inválido).
- perdidos: Muestra el número de paquetes que se han perdido.
- overruns: Contiene el número de paquetes que han excedido la capacidad de la cola de entrada.
- frame: Identifica los paquetes descartados por tener una longitud errónea (que no es múltiplo de 8).
- Paquetes TX: Indica el número de paquetes enviados hasta el momento por el adaptador. Además de los datos errores, perdidos y overruns explicados arriba, se incluye un valor para carrier, que identifica problemas con la señal, indicando un posible error en el cable o en el conector usado.
- colisiones: Este campo representa las colisiones que sufren los paquetes cuando son transmitidos por la red. Si el valor es mayor que cero, indica que la red está congestionada.
- long.colaTX: Es la longitud de la cola de transmisión del adaptador.
- Bytes RX: Indica la cantidad total de datos recibidos, medidos en Bytes y en MegaBytes.
- Bytes Tx: Igual que el anterior, pero con los datos enviados.
La dirección MAC está formada por 48 bits. Los primeros 24 identifican al fabricante (a nivel mundial) y los 24 restantes al dispositivo de forma única para dicho fabricante.
Obtener la información de un solo adaptador de red
En la mayoría de los casos, cuando estamos configurando características de la red local, estaremos centrados en alguno de los adaptadores de red disponibles. En estos casos puede ser interesante limitar la salida del comando ifconfig para que nos muestra únicamente la información de dicho adaptador. Esta operación es tan sencilla como poner el nombre del adaptador a continuación del comando. Por ejemplo:
ifconfig enp0s3
Como ves, la salida es idéntica a la de la imagen anterior, pero informando únicamente del adaptador especificado.
Otras operaciones frecuentes con ifconfig
El comando ifconfig no se limita únicamente a ofrecernos información. Con él, también podemos establecer, de forma temporal, valores para la configuración de la red. veamos algunos ejemplos:
-
Para deshabilitar un adaptador de red, escribiremos algo así:
sudo ifconfig enp0s3 down
Como ves, en este caso necesitaremos privilegios administrativos, ya que nuestra actividad puede afectar a todo el sistema.
Si quieres comprobar que, efectivamente, el adaptador de red se ha deshabilitado, basta con volver a ejecutar ifconfig:
ifconfig
Aunque, si quisiéramos mostrar todos los adaptadores, incluidos los deshabilitados, bastaría con usar la opción -a:
ifconfig -a
-
Para volver a habilitar un adaptador de red deshabilitado, basta con escribir algo como esto:
sudo ifconfig enp0s3 up
Como al desactivarlo, volvemos a necesitar privilegios administrativos.
-
Asignar una nueva dirección IP al adaptador de red:
sudo ifconfig enp0s3 192.168.1.10
Como ves, sólo necesitamos incluir la nueva dirección IP a continuación del nombre del adaptador.
-
Si lo que necesitamos es asignar una nueva máscara de red al adaptador, habrá que incluir la palabra netmask:
sudo ifconfig enp0s3 netmask 255.255.255.0
-
Y si lo que queremos es asignar una nueva dirección de difusión (broadcast) al adaptador de red, usaremos la palabra broadcast:
sudo ifconfig enp0s3 broadcast 192.168.1.255
-
Incluso podemos realizar las tres operaciones anteriores en un solo paso:
sudo ifconfig enp0s3 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
Otros valores
También podemos ajustar algunos parámetros más avanzados, como el valor MTU que, como dijimos al principio, indica el tamaño en octetos de los paquetes más grandes que se transmiten. El valor predeterminado es 1500, pero si quisiéramos cambiarlo por 9000, bastaría con escribir:
sudo ifconfig enp0s3 mtu 9000
Otro ajuste que suele ser útil en algunas circunstancias es poner el adaptador de red en modo promiscuo. De forma predeterminada, si el adaptador de red recibe un paquete, comprueba que es el destinatario correcto. Si no es así, lo deshecha.
Cuando el adaptador de red actúa en modo promiscuo, el adaptador de red acepta cualquier paquete que circule por la red, aunque no sea su destinatario. Esto puede ser muy útil para capturar paquetes de la red y analizar el tráfico.
Pues bien, para poner el adaptador de red en modo promiscuo, sólo tenemos que ejecutar el siguiente comando:
sudo ifconfig enp0s3 promisc
Por defecto, cuando una tarjeta de red recibe un paquete, comprueba si el paquete pertenece a sí mismo. Si no, la tarjeta de interfaz normalmente deja caer el paquete. Pero en modo promiscuo, la tarjeta no suelta el paquete. En cambio, aceptará todos los paquetes que fluyan a través de la tarjeta de red.o
Cuando necesitemos devolver el adaptador a su configuración normal, bastará con ejecutar lo siguiente:
sudo ifconfig enp0s3 -promisc
Y hasta aquí el artículo de hoy. Espero que no te haya resultado demasiado denso.