Cómo usar el comando ip en Linux

Un indicador de Bash en una computadora portátil Linux de estilo Ubuntu en una ventana de terminal.
Fatmawati Achmad Zaenuri / Shutterstock

Puede configurar direcciones IP, interfaces de red y reglas de enrutamiento sobre la marcha con el ipcomando de Linux . Le mostraremos cómo puede usar este reemplazo moderno del clásico (y ahora obsoleto)  ifconfig.

Cómo funciona el comando ip

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

El ipcomando tiene muchos subcomandos, cada uno de los cuales funciona en un tipo de objeto, como direcciones IP y rutas. Existen, a su vez, muchas opciones para cada uno de estos objetos. Es esta riqueza de funciones la que le da al ipcomando la granularidad que necesita para realizar lo que pueden ser tareas delicadas. Esto no es un trabajo de hacha, requiere un juego de escalpelos.

Veremos los siguientes objetos:

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

Usando ip con direcciones

Obviamente, primero debes conocer la configuración con la que estás tratando. Para descubrir qué direcciones IP tiene su computadora, use el ipcomando con el objeto address. La acción predeterminada es show, que enumera las direcciones IP. También puede omitir  show y abreviar address como «addr» o incluso «a».

Los siguientes comandos son todos equivalentes:

demostración de la dirección IP
mostrar dirección ip
dirección ip
ip a

El comando "ip addr" en una ventana de terminal.

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

La primera dirección IP es la dirección de bucle invertido (interna) que se utiliza 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. Es  UP, lo que significa que está operativo. La capa de redes físicas  (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 puede transmitir esta interfaz.
  • qdisc noqueue: A qdisces un mecanismo de cola. Programa la transmisión de paquetes. Existen diferentes técnicas de colas llamadas disciplinas. La noqueuedisciplina significa «enviar instantáneamente, no hacer cola». Esta es la qdiscdisciplina predeterminada para los dispositivos virtuales, como la dirección de bucle invertido.
  • estado DESCONOCIDO: puede ser DOWN(la interfaz de red no está operativa), UNKNOWN(la interfaz de red está operativa pero no hay nada conectado) o  UP(la red está operativa y hay una conexión).
  • grupo predeterminado: las interfaces se pueden agrupar lógicamente. El valor predeterminado es colocarlos a todos en un grupo llamado «predeterminado».
  • qlen 1000: la longitud máxima de la cola de transmisión.
  • link / loopback: La dirección de control de acceso a medios (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 inclinada ( /) es la notación de enrutamiento entre dominios sin clases (CIDR) que representa la máscara de subred. Indica cuántos bits contiguos iniciales 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.
  • host de alcance: el alcance 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: Válido de por vida. Para una dirección IP versión 4 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 puede realizar y aceptar solicitudes de conexión.
  • favorite_lft: vida útil preferida. Para una dirección IP de versión 4 asignada por DHCP, esta es la cantidad de tiempo que la dirección IP se puede usar sin restricciones. Este nunca debe ser mayor que el valid_lftvalor.
  • inet6 : La IP versión 6 dirección, 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.
  • <Difusión, multidifusión, UP, LOWER_UP>: esta interfaz soportes de amplio y multidifusión , y la interfaz es UP(operacional y conectada). La capa de hardware de la red (capa uno) también lo es UP.
  • mtu 1500: la unidad de transferencia máxima que admite esta interfaz.
  • qdisc fq_codel: el programador utiliza una disciplina llamada «Cola justa, retraso controlado». Está diseñado para proporcionar una parte justa del ancho de banda a todos los flujos de tráfico que utilizan la cola.
  • estado ARRIBA: La interfaz está operativa y conectada.
  • grupo predeterminado: esta interfaz está en el grupo de interfaces «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. Son 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 transmisión para esta subred.
  • alcance global: la dirección IP es válida en todas partes de esta red.
  • dinámico: la dirección IP se pierde cuando la interfaz se cae.
  • noprefixroute: no cree una ruta en la tabla de rutas cuando se agrega esta dirección IP. Alguien tiene que agregar una ruta manualmente si quiere usar una con esta dirección IP. Del mismo modo, si se elimina esta dirección IP, no busque una ruta para eliminar.
  • enp0s3:  la interfaz con la que está asociada esta dirección IP.
  • valid_lft: Válido de por vida. La hora a la que la dirección IP se considerará válida; 86,240 segundos son 23 horas y 57 minutos.
  • favorite_lft: vida útil preferida. El tiempo que funcionará 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 desea limitar la salida a las direcciones IP de la versión 4, puede usar la -4opción de la siguiente manera:

dirección ip -4

El comando "ip -4 addr" en una ventana de terminal.

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

dirección ip -6

El comando "ip -6 addr" en una ventana de terminal.

Mostrar información para una única interfaz

Si desea ver la información de la dirección IP de una interfaz única, puede utilizar los showy las devopciones, y el nombre de la interfaz, como se muestra a continuación:

ip addr show dev lo
dirección ip show dev enp0s3

Los comandos "ip addr show dev lo" e "ip addr show dev enp0s3" en una ventana de terminal.

También puede usar la marca -4o -6para refinar aún más la salida de modo que solo vea lo que le interesa.

Relacionado:  Cómo conectarse a un servidor SSH desde Windows, macOS o Linux

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

ip -4 addr show dev enp0s3

El comando "ip -4 addr show dev enp0s3" en una ventana de terminal.

Agregar una dirección IP

Puede usar las opciones addy devpara agregar una dirección IP a una interfaz. Solo tiene que decirle al ipcomando qué dirección IP agregar y a qué interfaz agregarla.

Agregaremos la dirección IP 192.168.4.44 a la enp0s3interfaz. También tenemos que proporcionar la notación CIDR para la máscara de subred.

Escribimos lo siguiente:

sudo ip addr agregar 192.168.4.44/24 dev enp0s3

El comando "sudo ip addr add 192.168.4.44/24 dev enp0s3" en una ventana de terminal.

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

ip -4 addr show dev enp0s3

El comando "ip -4 addr show dev enp0s3" en una ventana de terminal.

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  pingla nueva dirección IP :

ping 192.168.4.44

El comando "ping 192.168.4.44" en una ventana de terminal.

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

Eliminar una dirección IP

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

sudo dirección ip del 192.168.4.44/24 dev enp0s3

El comando "sudo ip addr del 192.168.4.44/24 dev enp0s3" en una ventana de terminal.

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

ip -4 addr show dev enp0s3

El comando "ip -4 addr show dev enp0s3" en una ventana de terminal.

Uso de ip con interfaces de red

Utiliza el linkobjeto para inspeccionar y trabajar con interfaces de red. Escriba el siguiente comando para ver las interfaces instaladas en su computadora:

espectáculo de enlace ip

El comando "ip link show" en una ventana de terminal.

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

ip link show enp0s3

El comando "ip link show enp0s3" en una ventana de terminal.

Iniciar y detener enlaces

Puede utilizar la setopción con  upo down para detener o iniciar una opción de interfaz de red. También tiene que usar sudo, como se muestra a continuación:

sudo ip link set enp0s3 abajo

El comando "sudo ip link set enp0s3 down" en una ventana de terminal.

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

ip link show enp0s3

El comando "ip link show enp0s3" en una ventana de terminal.

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

sudo ip link set enp0s3 up

El comando "sudo ip link set enp0s3 up" en una ventana de terminal.

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

ip link show enp0s3

El comando "ip link show enp0s3" en una ventana de terminal.

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

Usar ip con rutas

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

Relacionado:  Cómo instalar Microsoft PowerShell en Linux u OS X

Si la computadora o dispositivo de destino comparte una red con la computadora remitente, la computadora remitente puede reenviar el paquete directamente a ella.

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

Para ver las rutas definidas en su computadora, escriba el siguiente comando:

ruta ip

El comando "ip route" en una ventana de terminal.

Echemos un vistazo a la información que recibimos:

  • predeterminado:  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: use 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.
  • métrica 100:  una indicación de la preferencia de la ruta en comparación con otras. Las rutas con métricas más bajas se utilizan preferentemente sobre aquellas con métricas más altas. Puede usar esto para dar preferencia a una interfaz de red cableada sobre una Wi-Fi.

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

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

Relacionado:  Por qué cambié de Ubuntu a Manjaro Linux

Vamos a ver:

  • 169.254.0.0/16: el rango de direcciones IP que rige 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.
  • enlace de alcance : el alcance es link, lo que significa que el alcance está limitado a la red a la que esta computadora está conectada directamente.
  • métrica 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 analizarlo:

  • 192.168.4.1/24:  el rango de direcciones IP que rige 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.
  • vínculo de alcance:  el alcance es link, lo que significa que el alcance está limitado a la red inmediata a la que está conectada esta computadora.
  • src 192.168.4.26: la dirección IP desde la que se originan los paquetes enviados por esta ruta.
  • métrica 100: esta métrica baja indica una ruta preferida.

Mostrar información para una sola ruta

Si desea centrarse en los detalles de una ruta en particular, puede agregar la listopción y el rango de direcciones IP de la ruta al comando de la siguiente manera:

lista de rutas ip 192.168.4.0/24

El comando "ip route list 192.168.4.0/24" en una ventana de terminal.

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:

espectáculo de enlace ip

El comando "ip link show" en una ventana de terminal.

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:

sudo ip addr agregar 192.168.121.1/24 dev enp0s8

El comando "sudo ip addr add 192.168.121.1/24 dev enp0s8" en una ventana de terminal.

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

sudo ip route eliminar por defecto a través de 192.168.4.1 dev enp0s8

El comando "sudo ip route delete default via 192.168.4.1 dev enp0s8" en una ventana de terminal.

Ahora usaremos la addopción 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:

sudo ip route agregue 192.168.121.0/24 dev enp0s8 métrica 100

El comando "sudo ip route add 192.168.121.0/24 dev enp0s8 metric 100" en una ventana de terminal.

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

ruta ip

El comando "ip route" en una ventana de terminal.

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; enp0s8escribimos lo siguiente para eliminarla:

sudo ip ruta eliminar 192.168.4.0/24 dev enp0s8

El comando "sudo ip route delete 192.168.4.0/24 dev enp0s8" en una ventana de terminal.

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:

ruta ip

El comando "ip route" en una ventana de terminal.

Ruta tomada, no raíz

Lo mejor de estos comandos es que no son permanentes. Si desea borrarlos, simplemente reinicie su sistema. Esto significa que puede experimentar con ellos hasta que funcionen como desee. Y es algo muy bueno si hace un desastre terrible en su sistema; un simple reinicio restaurará el orden.

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

De esta forma, sin embargo, puede probar los comandos antes de hacer algo permanente.