Cómo usar el comando ip en Linux

Puedes configurar direcciones IP, interfaces de red y reglas de enrutamiento sobre la marcha con el comando ip Linux. Te mostraremos cómo puedes usar este reemplazo moderno del clásico (y ahora obsoleto) ifconfig.

Cómo funciona el comando ip

Con el comando ip, puedes ajustar la forma en que una computadora Linux administra direcciones IP, controladores de interfaces de red (NIC) y reglas de enrutamiento. Los cambios también tienen efecto inmediato: no es necesario reiniciar. El comando ip  puede hacer mucho más que esto, pero nos centraremos en los usos más comunes en este artículo.

El comando ip tiene muchos subcomandos, cada uno de los cuales funciona en un tipo de objeto, como direcciones IP y rutas. A su vez, hay muchas opciones para cada uno de estos objetos. Es esta riqueza de funcionalidad la que le da al comando ip la granularidad que necesitas para realizar lo que pueden ser tareas delicadas. Esto no es un trabajo para un hacha, requiere un conjunto de escalpelos.

Veremos los siguientes objetos:

  • Address: direcciones IP y rangos.
  • Link: interfaces de red, como conexiones por cable y adaptadores Wi-Fi.
  • Route: las reglas que administran el enrutamiento del tráfico enviado a addresses a través de interfaces (links).

Usando ip con direcciones (addresses)

Obviamente, primero debes conocer la configuración con la que estás tratando. Para descubrir qué direcciones IP tiene tu computadora, debes usar el comando ip con el objeto address.

La acción predeterminada es show, que enumera las direcciones IP. También puedes omitir show y abreviar address como “addr” o incluso “a”.

Los siguientes comandos son todos equivalentes:

Vemos dos direcciones IP, junto con mucha otra información. Las direcciones IP están asociadas con los controladores de interfaz de red (NIC). El comando ip intenta ser útil y también proporciona mucha información sobre la interfaz.

La primera dirección IP es la dirección de loopback (interno) utilizada para comunicarse dentro de la computadora. La segunda es la dirección IP real (externa) que tiene la computadora en la red de área local (LAN).

Analicemos toda la información que recibimos:

  • lo: el nombre de la interfaz de red como una cadena.
  • <LOOPBACK,UP,LOWER_UP>: esta es una interfaz de loopback. Está UP, lo que significa que está operativo. La capa de red física (capa uno) también está activa.
  • mtu 65536: la unidad de transferencia máxima. Este es el tamaño de la mayor cantidad de datos que esta interfaz puede transmitir.
  • qdisc noqueue: Un qdisc es un mecanismo de cola. Programa la transmisión de paquetes. Existen diferentes técnicas de colas llamadas disciplinas. La disciplina noqueue significa “enviar al instante, no hacer cola”. Esta es la disciplina qdisc predeterminada para dispositivos virtuales, como la dirección de bucle invertido.
  • state UNKNOWN: Esto puede estar DOWN (la interfaz de red no está operativa), UNKNOWN (la interfaz de red está operativa pero nada está conectada) o  UP (la red está operativa y hay una conexión).
  • group default: las interfaces se pueden agrupar lógicamente. El valor predeterminado es colocarlos a todos en un grupo llamado “default”.
  • qlen 1000: la longitud máxima de la cola de transmisión.
  • link/loopback: La media access control (MAC) de la interfaz.

  • inet 127.0.0.1/8: la dirección IP versión 4. La parte de la dirección después de la barra diagonal (/) es la notación de enrutamiento entre dominios sin clase (CIDR). Esta representa la máscara de subred. Indica cuántos bits contiguos principales se establecen en uno en la máscara de subred. El valor de ocho significa ocho bits. Ocho bits establecidos en uno representan 255 en binario, por lo que la máscara de subred es 255.0.0.0.
  • scope host: el ámbito de la dirección IP. Esta dirección IP solo es válida dentro de la computadora (el “host”).
  • lo: la interfaz con la que está asociada esta dirección IP.
  • valid_lft: vida útil válida. Para una dirección versión 4 de IP asignada por el Protocolo de configuración dinámica de host (DHCP), este es el período de tiempo que la dirección IP se considera válida y capaz de realizar y aceptar solicitudes de conexión.
  • preferred_lft: vida útil preferida. Para una dirección IP versión 4 de IP asignada por DHCP, esta es la cantidad de tiempo que la dirección IP se puede usar sin restricciones. Esto nunca debe ser mayor que el valor valid_lft.
  • inet6: La dirección IP versión 6, scope, valid_lft, y preferred_lft.

La interfaz física es más interesante, como mostraremos a continuación:

  • enp0s3: el nombre de la interfaz de red como una cadena. “en” significa ethernet, “p0” es el número de bus de la tarjeta ethernet y “s3” es el número de ranura.
  • <BROADCAST,MULTICAST,UP,LOWER_UP>:  esta interfaz admite broad- y multicasting, y la interfaz está UP (operativa y conectada). La capa de hardware de la red (capa uno) también está UP.
  • mtu 1500: la unidad de transferencia máxima que admite esta interfaz.
  • qdisc fq_codel: el programador está utilizando una disciplina llamada “Cola justa, retraso controlado”. Está diseñado para proporcionar una parte equitativa del ancho de banda a todos los flujos de tráfico que utilizan la cola.
  • state UP: la interfaz está operativa y conectada.
  • group default: esta interfaz está en el grupo de interfaz “predeterminado”.
  • qlen 1000:  la longitud máxima de la cola de transmisión.
  • link/ether: la dirección MAC de la interfaz.
  • inet 192.168.4.26/24: la dirección IP versión 4. El “/24” nos dice que hay 24 bits iniciales contiguos establecidos en uno en la máscara de subred. Eso es tres grupos de ocho bits. Un número binario de ocho bits equivale a 255; por lo tanto, la máscara de subred es 255.255.255.0.
  • brd 192.168.4.255: la dirección de difusión para esta subred.

  • scope global: la dirección IP es válida en todas partes en esta red.
  • dynamic: la dirección IP se pierde cuando la interfaz deja de funcionar.
  • noprefixroute: no crea una ruta en la tabla de rutas cuando se agrega esta dirección IP. Alguien tiene que agregar una ruta manualmente si quieres usar una con esta dirección IP. Del mismo modo, si se elimina esta dirección IP, no busques una ruta para eliminar.
  • enp0s3:  la interfaz con la que está asociada esta dirección IP.
  • valid_lft: vida útil válida. La hora en que la dirección IP se considerará válida; 86,240 segundos son 23 horas y 57 minutos.
  • preferred_lft: vida útil preferida. La hora a la que operará la dirección IP sin ninguna restricción.
  • inet6: La IP versión 6 dirección, scope, valid_lft, y preferred_lft.

Mostrar solo direcciones IPv4 o IPv6

Si deseas limitar la salida a las direcciones IP versión 4, puedes usar la opción -4, de la siguiente manera:

Si deseas limitar la salida a las direcciones IP versión 6, puedes usar la opción-6, de la siguiente manera:

Mostrar información para una interfaz única

Si deseas ver la información de la dirección IP de una interfaz única, puedes utilizar las opciones show y dev. Asimismo, el nombre de la interfaz, como se muestra a continuación:

También puedes usar el indicador -4-6 para refinar aún más la salida para que solo veas lo que te interesa.

Si deseas ver la información de la IP versión 4 relacionada con las direcciones en la interfaz enp0s3, escribe el siguiente comando:

Agregar una dirección IP

Puedes usar las opciones adddev para agregar una dirección IP a una interfaz. Solo tienes que decirle al comando ip qué dirección IP agregar y a qué interfaz agregarla.

Vamos a agregar la dirección IP 192.168.4.44 a la interfaz enp0s3. También tenemos que proporcionar la notación CIDR para la máscara de subred.

Escribimos lo siguiente:

Escribimos lo siguiente para echar un vistazo a las direcciones IP de la versión 4 en esta interfaz:

La nueva dirección IP está presente en esta interfaz de red. Saltamos a otra computadora y usamos el siguiente comando para ver si podemos hacer ping a la nueva dirección IP:

La dirección IP responde y envía respuesta de recibido a los pings. Nuestra nueva dirección IP está en funcionamiento después de un simple comando ip.

Eliminar una dirección IP

Para eliminar una dirección IP, el comando es casi el mismo que con el que se agrega, excepto que se reemplaza add con del. Tal como se muestra a continuación:

Si escribimos lo siguiente para verificar, vemos que la nueva dirección IP ha sido eliminada:

Usar ip con interfaces de red

Utiliza el objeto link para inspeccionar y trabajar con interfaces de red. Escribe el siguiente comando para ver las interfaces instaladas en tu computadora:

Para ver una única interfaz de red, simplemente agrega el nombre al comando, como se muestra a continuación:

Iniciar y detener enlaces

Puedes usar la opción set con up o down para detener o iniciar una opción de interfaz de red. También debes usar sudo, como se muestra a continuación:

Escribimos lo siguiente para echar un vistazo a la interfaz de red:

El estado de la interfaz de red es DOWN. Podemos usar la opción up para reiniciar una interfaz de red, como se muestra a continuación:

Escribimos lo siguiente para hacer otra verificación rápida del estado de la interfaz de red:

La interfaz de red se reinició y el estado se muestra como UP.

Usar ip con rutas (routes)

Con el objeto route, puedes inspeccionar y manipular rutas. Las rutas definen dónde se reenvía el tráfico de red a diferentes direcciones IP y a través de qué interfaz de red.

Si la computadora o dispositivo de destino comparte una red con la computadora que envía, la computadora que envía puede enviar el paquete directamente a ella.

Sin embargo, si el dispositivo de destino no está conectado directamente, la computadora que envía reenvía el paquete al enrutador predeterminado. El enrutador decide dónde enviar el paquete.

Para ver las rutas definidas en tu computadora, escribe el siguiente comando:

Echemos un vistazo a la información que recibimos:

  • default:  la regla predeterminada. Esta ruta se usa si ninguna de las otras reglas coincide con lo que se envía.
  • via 192.168.4.1: enruta los paquetes a través del dispositivo en 192.168.4.1. Esta es la dirección IP del enrutador predeterminado en esta red.
  • dev enp0s3: Usa esta interfaz de red para enviar los paquetes al enrutador.
  • proto  dhcp: el identificador del protocolo de enrutamiento. DHCP significa que las rutas se determinarán dinámicamente.
  • metrci 100:  una indicación de la preferencia de la ruta en comparación con otras. Las rutas con métricas más bajas se usan preferentemente sobre aquellas con métricas más altas. Puedes usar esto para dar preferencia a una interfaz de red cableada en lugar de una Wi-Fi.

La segunda ruta gobierna el tráfico al rango de IP de 169.254.0.0/16. Esta es una red de configuración cero, lo que significa que intenta autoconfigurarse para la comunicación intranet. Sin embargo, no puedes usarla para enviar paquetes fuera de la red inmediata.

El principio detrás de las redes de configuración cero es que no confían en que DHCP y otros servicios estén presentes y activos. Solo necesitan ver TCP/IP para autoidentificarse en cada uno de los otros dispositivos de la red.

Vamos a ver:

  • 169.254.0.0/16: el rango de direcciones IP que gobierna esta regla de enrutamiento. Si la computadora se comunica en este rango de IP, esta regla interviene.
  • dev enp0s3: la interfaz de red que utilizará el tráfico gobernado por esta ruta.
  • Scope link: El ámbito es link, lo que significa que el ámbito está limitado a la red a la que esta computadora está conectada directamente.
  • metric 1000: esta es una métrica alta y no es una ruta preferida.

La tercera ruta gobierna el tráfico al rango de direcciones IP de 192.168.4.0/24. Este es el rango de direcciones IP de la red local a la que está conectada esta computadora. Es para la comunicación a través de esa red, pero dentro de ella.

Vamos a desglosarlo:

  • 192.168.4.1/24:  El rango de direcciones IP que gobierna esta regla de enrutamiento. Si la computadora se comunica dentro de este rango de IP, esta regla activa y controla el enrutamiento de paquetes.
  • dev enp0s3: la interfaz a través de la cual esta ruta enviará paquetes.
  • proto kernel: la ruta creada por el kernel durante la configuración automática.
  • scope link:  El ámbito es link, lo que significa que el ámbito está limitado a la red inmediata a la que está conectada esta computadora.
  • src 192.168.4.26: la dirección IP desde la cual se originan los paquetes enviados por esta ruta.
  • metric 100: esta métrica baja indica una ruta preferida.

Mostrar información para una ruta única

Si deseas centrarte en los detalles de una ruta en particular, puedes agregar la opción list y el rango de dirección IP de la ruta al comando de la siguiente manera:

Agregar una ruta

Acabamos de agregar una nueva tarjeta de interfaz de red a esta computadora. Escribimos lo siguiente y vemos que se muestra como enp0s8:

Agregaremos una nueva ruta a la computadora para usar esta nueva interfaz. Primero, escribimos lo siguiente para asociar una dirección IP con la interfaz:

Se agrega una ruta predeterminada que usa la dirección IP existente a la nueva interfaz. Utilizamos la opción delete, como se muestra a continuación, para eliminar la ruta y proporcionar sus detalles:

Ahora usaremos la opción add para agregar nuestra nueva ruta. La nueva interfaz manejará el tráfico de red en el rango de direcciones IP 192.168.121.0/24. Le daremos una métrica de 100; Debido a que será la única ruta que maneja este tráfico, la métrica es bastante académica.

Escribimos lo siguiente:

Ahora, escribimos lo siguiente para ver qué nos da:

Nuestra nueva ruta ya está en su lugar. Sin embargo, todavía tenemos la ruta 192.168.4.0/24 que apunta a la interfaz enp0s8. Escribimos lo siguiente para eliminarla:

Ahora deberíamos tener una nueva ruta que apunte todo el tráfico destinado al rango de IP 192.168.121.0/24 a través de la interfaz enp0s8. También debería ser la única ruta que utiliza nuestra nueva interfaz.

Escribimos lo siguiente para confirmar:

Conclusiones

Lo bueno de estos comandos es que no son permanentes. Si deseas borrarlos, simplemente debes reiniciar tu sistema. Esto significa que puedes experimentar con ellos hasta que funcionen de la manera que desees. Y es algo muy bueno si haces un desastre terrible en tu sistema: un simple reinicio restablecerá el orden.

Por otro lado, si deseas que los cambios sean permanentes, debes trabajar un poco más. Exactamente lo que varía según la familia de la distribución, pero todos implican cambiar los archivos de configuración.

De esta manera, sin embargo, puedes probar los comandos antes de hacer algo permanente.