- ifconfig y route pertenecen a net-tools y permiten configurar interfaces, direcciones IP y rutas, pero están considerados obsoletos en muchas distribuciones.
- La suite iproute2, con el comando ip, unifica y amplía estas funciones, gestionando interfaces, direcciones, rutas, ARP, QoS, túneles y múltiples tablas de enrutamiento.
- iproute2 facilita el enrutamiento avanzado con ip route e ip rule, permitiendo varias tablas, balanceo entre gateways y políticas basadas en origen y destino.
- El paso a iproute2 aporta más potencia y flexibilidad, aunque exige aprender una nueva sintaxis y adaptar scripts heredados basados en ifconfig y route.
Gestionar bien las interfaces de red y las rutas IP es una de esas tareas básicas que tarde o temprano te toca asumir si administras sistemas Linux. Durante muchos años, los comandos clásicos ifconfig y route han sido la nítica caja de herramientas para configurar IPs, levantar tarjetas o definir la puerta de enlace.
Hoy en día, sin embargo, ese viejo conjunto de utilidades net-tools está considerado obsoleto en muchas distribuciones modernas, que lo han sustituido por la suite iproute2 y su comando estrella ip. Aun así, en servidores antiguos, material docente, scripts heredados o cursos de hacking y ciberseguridad, sigues encontrando ifconfig y route por todas partes, así que entender cómo funcionan (y cómo se traducen a ip) es fundamental.
De ifconfig y route a la suite iproute2

Los comandos ifconfig y route forman parte del paquete histórico net-tools, heredado del mundo Unix. Con ellos se han configurado interfaces de red, direcciones IP, máscaras, puertas de enlace y rutas estáticas durante décadas, junto a otras utilidades como arp, netstat, iptunnel, mii-tool o rarp.
Con el tiempo, las necesidades de red en Linux se han vuelto más complejas: IPv6, QoS, balanceo de carga, múltiples tablas de enrutamiento, túneles, VLAN, VPN, espacios de nombres de red… El viejo paquete net-tools se quedó corto y prácticamente congelado en funcionalidades.
Para cubrir todo esto apareció iproute2, una colección de utilidades modernas donde la pieza central es el comando ip. Con este único binario puedes realizar tareas que antes requerían combinar ifconfig, route, arp, netstat, iptunnel y compañía, además de muchas funciones avanzadas que net-tools ni soñaba con soportar.
En la práctica, iproute2 sustituye por completo a net-tools. Por eso distribuciones como Debian, Ubuntu recientes o muchas basadas en systemd marcan net-tools como “deprecated” y ya no lo instalan por defecto. Aun así, ifconfig y route siguen presentes en muchísimos entornos, sobre todo formativos o legados, así que conviene dominar ambos mundos.
Comando ifconfig: configuración básica de interfaces
El comando ifconfig (interface configurator) se ha usado tradicionalmente para ver y modificar la configuración de las interfaces de red. Permite inicializar una tarjeta, asignarle una IP, activarla o desactivarla, cambiar parámetros como la MTU o el modo promiscuo, etc.
La sintaxis general de ifconfig es muy sencilla: ifconfig [opciones] [interfaz] para mostrar información, y ifconfig interfaz [configuración] [up|down] cuando queremos cambiar parámetros o levantar/bajar la tarjeta.
Si lo ejecutas sin argumentos, ifconfig muestra todas las interfaces activas con su IP, máscara, broadcast, dirección MAC, MTU y estadísticas de tráfico:
/sbin/ifconfig
Para ver también las interfaces inactivas (por ejemplo, una tarjeta que existe pero está bajada), se añade la opción -a, que lista absolutamente todo:
ifconfig -a
Cuando quieres centrarte en una única interfaz concreta, basta con indicar su nombre. Por ejemplo, para ver detalles de la Ethernet principal:
ifconfig eth0
En muchas máquinas actuales el nombre ya no es eth0, sino algo como ens33, enp0s3 o similar, pero la idea es la misma: ifconfig <nombre_interfaz> te da su IP, su MAC, el estado (UP, RUNNING, etc.), la máscara de subred y otra información útil.
Operaciones habituales con ifconfig
Una de las tareas más frecuentes con net-tools es activar o desactivar una interfaz de red. Con ifconfig se hace así:
# Levantar (activar) la interfaz
ifconfig ens33 up
# Bajar (desactivar) la interfaz
ifconfig ens33 down
Otra operación clásica es asignar una dirección IPv4 y su máscara. Con ifconfig se indica la IP seguida de la máscara (y opcionalmente broadcast):
# Asignar IP y máscara
ifconfig eth0 193.144.84.77 netmask 255.255.255.0 broadcast 193.144.84.255 up
El comando también permite ajustar la MTU (Maximum Transmission Unit), es decir, el tamaño máximo del datagrama en bytes que puede circular por esa interfaz:
# Cambiar la MTU a 500 bytes
ifconfig eth0 mtu 500
Además, ifconfig puede modificar “flags” de la interfaz, como activar el modo promiscuo para capturar todo el tráfico, deshabilitar ARP o incluso cambiar la dirección MAC si el dispositivo lo soporta:
# Activar modo promiscuo
ifconfig eth0 promisc
# Desactivar ARP
ifconfig eth0 -arp
# Cambiar la dirección hardware (MAC)
ifconfig eth0 hw ether 52:54:00:12:34:56
En cuanto a IPv6, ifconfig también puede mostrar y manejar direcciones de la versión 6 del protocolo, y por naturaleza IPv6 permite múltiples direcciones en la misma interfaz sin necesidad de trucos de alias, algo que net-tools soporta perfectamente.
Alias de IP y otras utilidades relacionadas
Una característica clásica en entornos antiguos es el IP aliasing, que permite asignar varias direcciones IPv4 a la misma tarjeta usando identificadores del tipo dispositivo:número:
# Primera IP en la interfaz
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
route add -net 192.168.1.0 netmask 255.255.255.0 eth0
# Alias con otra red en la misma tarjeta
ifconfig eth0:0 192.168.10.1 netmask 255.255.255.0 up
route add -net 192.168.10.0 netmask 255.255.255.0 eth0:0
Junto a ifconfig, el ecosistema net-tools incluye otras herramientas para operaciones de nivel 2 y 3, como ifup/ifdown para activar o desactivar interfaces usando los ficheros de configuración de la distribución, o iwconfig para redes WiFi:
# Desactivar una interfaz según configuración del sistema
ifdown eth0
# Configurar parámetros WiFi
iwconfig eth1 essid "Mi Red"
Todo esto, en entornos modernos, se ha ido sustituyendo por utilidades de más alto nivel como NetworkManager, Wicked, netplan, ConnMan o Wicd, muchas de ellas con interfaz gráfica y pensadas para usuarios menos acostumbrados al terminal.
Comando route: gestión de la tabla de enrutamiento clásica
El otro pilar de net-tools es el comando route, encargado de mostrar y manipular la tabla de enrutamiento IPv4 del kernel. Con él puedes listar las rutas, añadir o eliminar rutas estáticas y definir la puerta de enlace por defecto.
Para ver la tabla de rutas en formato legible, lo habitual es usar route -n, que muestra direcciones numéricas sin resolver hostnames (muy útil en administración de redes):
/sbin/route -n -ee
Las banderas de cada fila indican el tipo de ruta: U (interfaz activa), H (destino host), G (usa gateway), D (creada dinámicamente), M (modificada de forma dinámica), R (rehabilitada) o ! (ruta rechazada).
Para añadir o borrar rutas estáticas, route utiliza la sintaxis:
route [add|del] [default] [-net|-host] target \
[netmask Nm] [gw Gw] [opciones] [[dev] If]
Por ejemplo, para dar alcance a la red 192.168.0.0/24 a través de eth1:
route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
Y para definir la puerta de enlace predeterminada (por donde saldrá todo lo que no vaya a redes conocidas), se hace así:
route add default gw 10.0.2.2
Si quieres que una red remota sea accesible usando una pasarela intermedia, también lo defines con route. Por ejemplo, la red 172.16.0.0/24 a través del host 192.168.0.1:
route add -net 172.16.0.0 netmask 255.255.255.0 gw 192.168.0.1
Para que este último equipo realmente enrute tráfico entre interfaces, es necesario activar el reenvío IP en el kernel:
echo 1 > /proc/sys/net/ipv4/ip_forward
Herramientas clásicas de diagnóstico de red
Además de ifconfig y route, el paquete net-tools y utilidades asociadas proporcionan comandos de diagnóstico muy usados que siguen vigentes, como netstat, arp, ping, traceroute o mii-tool.
El comando netstat permite ver conexiones activas, tablas de enrutamiento, estadísticas de interfaz y uso por protocolo. Por ejemplo, netstat -i ofrece un resumen similar a ifconfig -s, y netstat -r muestra la tabla de rutas (equivalente a route con opciones).
El comando arp manipula la caché ARP del sistema: muestra entradas, borra o añade registros estáticos. Un listado típico sería:
arp
arp -a hostname
arp -i eth0
arp -d hostname
arp -s hostname hw_addr
Para comprobar conectividad a nivel IP, ping envía paquetes ICMP ECHO_REQUEST y mide el tiempo de ida y vuelta. Hay que tener en cuenta que muchos firewalls bloquean ICMP, así que la ausencia de respuesta no siempre significa que el host esté caído.
Cuando quieres ver por dónde “pasea” un paquete hasta llegar a su destino, aparece traceroute, que se apoya en el campo TTL de la cabecera IP y en respuestas ICMP de tipo TIME_EXCEEDED. Existen variantes como tcptraceroute o traceproto, que usan otros protocolos para sortear ciertas restricciones.
Finalmente, para detalles de la capa física y negociación de enlace, mii-tool o ethtool permiten ver y ajustar velocidad, modo dúplex y otros parámetros eléctricos de la interfaz Ethernet.
El salto a iproute2: comando ip y objetos básicos
Todo lo anterior sigue existiendo, pero en sistemas modernos la recomendación es usar iproute2. Su comando principal, ip, ofrece una sintaxis coherente basada en objeto + acción:
ip [OPCIONES] OBJETO COMANDO [parámetros]
Los objetos más habituales son link, address (addr), route, rule, neighbour (neigh), tunnel, maddr, mroute, monitor, ntable, tuntap, xfrm, netns, l2tp, tcp_metrics, token, entre otros. Cada uno se centra en un aspecto concreto de la pila de red.
- link: gestiona interfaces físicas o lógicas (estado, MTU, flags, MAC).
- address / addr: maneja direcciones IPv4 e IPv6 asociadas a interfaces.
- route: crea, borra y muestra rutas en las tablas de enrutamiento.
- neighbour / neigh: visualiza y manipula la tabla ARP (o vecindad IPv6).
- rule: define políticas de enrutamiento para múltiples tablas.
Además, el comando ip incluye opciones globales muy útiles: -4 y -6 para filtrar por familia de direcciones, -s para estadísticas, -br para salida abreviada en tabla, -o para una sola línea (ideal para grep o wc), -c para colorear la salida o -f para escoger la familia de protocolos (inet, inet6, bridge, mpls, etc.).
Equivalencias básicas: ifconfig vs ip
Donde antes se usaba ifconfig para ver las interfaces y su configuración IP, ahora se recomiendan dos comandos de iproute2:
# Ver direcciones IP y configuración
ip addr show
# Ver información de capa 2 (MAC, MTU, flags)
ip link show
Para levantar o bajar una interfaz, la equivalencia sería:
# ifconfig ens33 up
ip link set ens33 up
# ifconfig ens33 down
ip link set ens33 down
Asignar una dirección IP a una interfaz también tiene su “traducción”. Donde antes hacías:
ifconfig ens33 192.168.1.1/24
con iproute2 se hace así, indicando también el dispositivo:
ip addr add 192.168.1.1/24 dev ens33
Para eliminar una dirección IP concreta (algo que ifconfig no soporta de forma directa y obliga a poner 0.0.0.0), con ip es tan intuitivo como cambiar add por del:
ip addr del 192.168.1.1/24 dev ens33
Y si necesitas crear una interfaz virtual o alias, en ifconfig lo harías con ens33:1, mientras que en ip se juega con la opción label para etiquetar esa dirección:
# Alias con etiqueta personalizada
ip addr add 10.0.0.1/8 dev ens33 label ens33:redes
ip neigh y la tabla ARP con iproute2
La gestión de ARP (o de los vecinos en IPv6) también se integra en iproute2 mediante el objeto neigh. Para listar la tabla de vecinos (equivalente a arp -n):
ip neigh show
Si quieres añadir manualmente una entrada ARP permanente, indicas IP, MAC (lladdr), tipo de estado y dispositivo:
ip neigh add 192.168.0.1 lladdr 00:11:22:33:44:55 \
nud permanent dev ens33
Para eliminar una entrada, de nuevo se recurre a del:
ip neigh del 192.168.0.1 lladdr 00:11:22:33:44:55 \
nud permanent dev ens33
Como en el resto de objetos, siempre puedes ver la ayuda detallada con:
ip neigh help
ip route: sustituto moderno del comando route
El objeto route de iproute2 es el encargado de gestionar las tablas de enrutamiento, tanto la principal como las secundarias. Su misión es análoga a la del viejo comando route, pero con mucha más potencia y flexibilidad.
Para ver la tabla de enrutamiento principal, se utilizan:
ip route show
# o
ip route list
Si quieres añadir una ruta estática hacia una red concreta, indicas el prefijo y la puerta de enlace (o interfaz):
# Añadir ruta a 10.8.0.0/24 vía 192.168.1.2
ip route add 10.8.0.0/24 via 192.168.1.2
Para borrar esa ruta, simplemente:
ip route del 10.8.0.0/24 via 192.168.1.2
También puedes cambiar la puerta de enlace de una ruta existente usando chg (o change):
ip route chg 10.8.0.0/24 via 192.168.1.3
La puerta de enlace por defecto (default gateway) se define con una ruta default:
# Añadir gateway predeterminado
ip route add default via 192.168.1.1
# Borrarlo usando otra IP de gateway
ip route del default via 192.168.1.254
Múltiples tablas de enrutamiento y políticas con ip rule
Una de las grandes ventajas de iproute2 es la capacidad de trabajar con varias tablas de enrutamiento simultáneas, algo imposible con net-tools. El kernel Linux permite hasta 253 tablas distintas, además de la principal (ID 254) y la local (ID 255, destinada a direcciones locales y broadcast, que no deberías tocar).
Las tablas se definen en el fichero /etc/iproute2/rt_tables, donde ya verás algo así:
# reserved values
255 local
254 main
253 default
0 unspec
Para añadir una tabla nueva basta con asignarle un número y un nombre. Por ejemplo, para crear la tabla redeszone con ID 66, se añade una línea:
66 redeszone
A partir de ahí, puedes añadir rutas específicas a esa tabla. Imagínate que tu equipo tiene IP 10.10.2.2 en la interfaz ens37, y quieres que esa tabla enrute el tráfico hacia 10.8.0.0/24 usando esa interfaz:
ip route add 10.8.0.0/24 dev ens37 src 10.10.2.2 table redeszone
Para eliminar esa ruta en la tabla secundaria, indicas los mismos parámetros con del:
ip route del 10.8.0.0/24 dev ens37 src 10.10.2.2 table redeszone
Y si necesitas definir un gateway por defecto dentro de esa tabla, se hace así:
ip route add default via 10.10.2.1 dev ens37 table redeszone
Para que el kernel sepa cuándo usar esa tabla en lugar de la principal, se añaden reglas de enrutamiento mediante ip rule. Un ejemplo típico: que todo el tráfico desde y hacia 10.10.2.2 use la tabla redeszone:
ip rule add from 10.10.2.2/32 table redeszone
ip rule add to 10.10.2.2/32 table redeszone
El estado de esa tabla se puede revisar con:
ip route list table redeszone
Y el conjunto de reglas activas se ve con:
ip rule show
QoS, balanceo de carga, túneles IP y más con iproute2
Más allá de sustituir a ifconfig y route, iproute2 aporta una serie de funciones avanzadas que lo convierten en una plataforma completa para administración de redes en Linux. Algunas de las más interesantes son el control de tráfico y QoS, el balanceo de carga entre interfaces, la creación de túneles IP y la gestión de múltiples gateways.
Mediante la herramienta tc (traffic control), incluida en iproute2, es posible implantar QoS (Quality of Service), clasificando paquetes en colas, asignando prioridades, limitando el ancho de banda de determinados flujos o garantizando recursos a tráfico crítico (voz, aplicaciones corporativas, etc.).
El propio comando ip permite crear túneles IP que encapsulan paquetes IPv4 sobre infraestructura IP existente, una técnica muy usada en VPN, interconexión de sedes o despliegue de redes virtuales.
En cuanto al balanceo de carga, iproute2 puede asignar pesos a distintas interfaces y repartir el tráfico de salida según distintos criterios (IP de origen, IP de destino, puertos, etc.). Esto encaja muy bien con escenarios de routers software donde el propio servidor Linux actúa como balanceador entre varios enlaces.
Además, combinando múltiples tablas de enrutamiento y reglas de ip rule, se pueden diseñar escenarios de routing avanzado en los que el tráfico que llega por una interfaz salga obligatoriamente por esa misma, o rutas diferenciadas según origen, tipo de tráfico o red de destino.
Persistencia de IPs, rutas y reglas tras reinicios
Un aspecto clave cuando trabajas con ip es que todo lo que configuras desde la línea de comandos es volátil: al reiniciar la máquina, desaparecen cambios en IPs, rutas y reglas. Por eso, en servidores reales es imprescindible llevar esas configuraciones a los ficheros del sistema.
En Debian y derivados que usan el sistema clásico de /etc/network/interfaces, las IPs y rutas estáticas se declaran en ese fichero, opcionalmente usando directivas post-up para lanzar comandos ip adicionales cuando la interfaz se levanta.
Un ejemplo muy completo mezcla varias interfaces, direcciones secundarias y varias tablas de enrutamiento. Para una interfaz eth1 con IP 10.10.1.114/29 y tabla tabla2, se podría tener algo como:
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 10.10.1.114
netmask 255.255.255.248
post-up ip route add 10.10.1.112/29 dev eth1 src 10.10.1.114 table tabla2
post-up ip route add default via 10.10.1.113 dev eth1 table tabla2
post-up ip rule add from 10.10.1.114/32 table tabla2
post-up ip rule add to 10.10.1.114/32 table tabla2
Otras interfaces del mismo host pueden repetir el esquema con diferentes tablas (por ejemplo, tabla3) para lograr multiples salidas a Internet o segmentaciones lógicas usando un solo servidor Linux como router avanzado.
En distribuciones que usan NetworkManager, netplan, systemd-networkd o herramientas equivalentes, la filosofía es la misma: las direcciones, rutas, reglas y parámetros se deben volcar en sus correspondientes ficheros de configuración para que el sistema los aplique automáticamente en cada arranque.
Ventajas e inconvenientes de iproute2 frente a net-tools
La suite iproute2 aporta un claro enfoque unificado y moderno a la gestión de redes en Linux. En lugar de dispersar funcionalidades entre ifconfig, route, arp, netstat y otros, concentra todo en una colección coherente, con sintaxis homogénea y soporte nativo para IPv4 e IPv6.
La presencia de un solo comando central (ip) que cubre configuración de interfaces, direcciones, rutas, túneles, QoS, multicast, políticas IPsec, espacios de nombres de red y más, facilita tanto tareas puntuales como el scripting automatizado.
Además, iproute2 incorpora funciones de routing avanzado que no existen en net-tools: múltiples tablas, enrutamiento basado en políticas con ip rule, balanceo de carga entre gateways, integración con mecanismos de encapsulación, gestión de ancho de banda, etc. Esto convierte a Linux en un router de altas prestaciones sin necesidad de hardware específico.
Como punto fuerte extra, iproute2 permite probar configuraciones de forma temporal desde la línea de comandos y, solo cuando funcionan, trasladarlas a ficheros persistentes, reduciendo el riesgo de dejarte un servidor inaccesible por un despiste.
En el lado menos amable, el principal inconveniente es el cambio de mentalidad y la curva de aprendizaje. Quien lleve años usando ifconfig y route se encuentra con una sintaxis distinta y con muchos más conceptos (tablas, reglas, objetos…). Eso obliga a invertir algo de tiempo en formación.
También hay un problema de retrocompatibilidad con scripts antiguos: montones de automatismos escritos con net-tools dejan de funcionar si en un sistema desaparece ifconfig o route, obligando a migrar el código a iproute2.
Por último, se mantiene la realidad de que todo se hace por terminal. Para quienes vienen exclusivamente de entornos gráficos, esto puede resultar intimidante al principio, aunque la potencia que se gana compensa sobradamente el esfuerzo si trabajas con redes de forma profesional.
Dominar tanto ifconfig y route como el ecosistema completo de iproute2 te deja en una posición muy cómoda para moverte entre servidores antiguos, documentación clásica, distribuciones modernas, ejercicios académicos y, por supuesto, entornos de hacking y ciberseguridad, donde entender a fondo cómo se configuran interfaces, tablas de enrutamiento, ARP, QoS, túneles y múltiples gateways es una ventaja competitiva clarísima.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.
