Introducción
El ip
es una poderosa herramienta para configurar interfaces de red que cualquier administrador de sistemas Linux debería conocer. Se puede usar para habilitar o deshabilitar interfaces, asignar y eliminar direcciones y rutas para administrar la caché ARP y mucho más.
En este tutorial, le mostraremos cómo usar el ip
través de ejemplos prácticos y explicaciones detalladas de las opciones más comunes.
Cómo usar el comando ip
La ip
es parte del paquete iproute2 instalado en todas las distribuciones modernas de Linux.
La sintaxis del ip
es la siguiente:
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT es el tipo de objeto que desea manejar. Los objetos (o subcomandos) más utilizados son:
link
(l
): vea y edite interfaces de red.address
(a
): vea y edite direcciones IP.route
(r
): vea y modifique la tabla de enrutamiento.neigh
(n
) - Ver y manipular objetos cercanos (tabla ARP).
El tema puede estar escrito en forma completa o abreviada (corta). Para ver una lista de comandos y argumentos para cada tipo de objeto, escriba ip OBJECT help
para cada subcomando, ejemplo:
ip link help
Debería ver un mensaje de salida similar al siguiente:
Usage: ip link add [link DEV] [ name ] NAME
[ txqueuelen PACKETS ]
[ address LLADDR ]
[ broadcast LLADDR ]
[ mtu MTU ] [index IDX ]
[ numtxqueues QUEUE_COUNT ]
[ numrxqueues QUEUE_COUNT ]
type TYPE [ ARGS ]...
TYPE:= { vlan | veth | vcan | vxcan | dummy | ifb | macvlan | macvtap |
bridge | bond | team | ipoib | ip6tnl | ipip | sit | vxlan |
gre | gretap | erspan | ip6gre | ip6gretap | ip6erspan |
vti | nlmon | team_slave | bond_slave | ipvlan | geneve |
bridge_slave | vrf | macsec }
Al configurar interfaces de red, debe ejecutar comandos como root o usuario con privilegios de sudo. De lo contrario, el comando imprimirá RTNETLINK answers: Operation not permitted
.
Las configuraciones establecidas con el ip
no son persistentes. Una vez que el sistema se reinicia, todos los cambios se pierden. Para configuraciones permanentes, necesita editar los archivos de configuración específicos de la distribución o agregar comandos a un script de inicio.
Ver y editar direcciones IP
Cuando se trabaja con el addr
, los comandos adoptan la siguiente forma:
ip addr [ COMMAND ] ADDRESS dev IFNAME
addr
que se utilizan con más frecuencia show
, add
y del
.
Ver información sobre todas las direcciones IP
Para ver una lista de todas las interfaces de red y su dirección IP asociada, escriba el siguiente comando:
ip addr show
La salida se verá así:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 96:00:00:19:12:df brd ff:ff:ff:ff:ff:ff
inet 195.201.18.78/32 brd 195.201.18.78 scope global eth0
valid_lft forever preferred_lft forever
inet6 2a01:4f8:1c1c:c73d::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::9400:ff:fe19:12df/64 scope link
valid_lft forever preferred_lft forever
Obtendrá el mismo resultado si escribe omitir los show
y escribe: ip addr
.
Si desea mostrar solo direcciones IP IPv4
o IPv6
ip -4 addr
o ip -6 addr
.
ip -4 addr
La salida se verá así:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 195.201.18.78/32 brd 195.201.18.78 scope global eth0
valid_lft forever preferred_lft forever
Ver información sobre una única interfaz de red
Para obtener información sobre una interfaz de red específica, use ip addr show dev
seguido del nombre del dispositivo. Por ejemplo, para consultar eth0
, escriba:
ip addr show dev eth0
La salida se verá así:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 96:00:00:19:12:df brd ff:ff:ff:ff:ff:ff
inet 195.201.18.78/32 brd 195.201.18.78 scope global eth0
valid_lft forever preferred_lft forever
inet6 2a01:4f8:1c1c:c73d::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::9400:ff:fe19:12df/64 scope link
valid_lft forever preferred_lft forever
Asignar direcciones IP a una interfaz
Para asignar una dirección IP a una interfaz, use la siguiente sintaxis:
ip addr add ADDRESS dev IFNAME
Donde IFNAME
es el nombre de la interfaz y ADDRESS
es la dirección IP que desea asignar a la interfaz.
Para agregar la dirección 192.168.111.111
con netmask 24 al eth0
, escriba:
sudo ip address add 192.168.111.111/24 dev eth0
Si tiene éxito, el comando no mostrará ningún resultado. Si la interfaz no existe, aparecerá Cannot find device "eth0"
.
Asignar varias direcciones IP a la misma interfaz
Con ip
, se pueden asignar varias direcciones a la misma interfaz. Por ejemplo:
sudo ip address add 192.168.111.111/24 dev eth0
sudo ip address add 192.168.111.22/24 dev eth0
Para confirmar que las direcciones IP están asignadas, escriba ip -4 addr show dev eth0
o ip -4 a show dev eth0
:
ip -4 addr show dev eth0
La salida se verá así:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 195.201.18.78/32 brd 195.201.18.78 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.111.111/24 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.111.22/24 scope global secondary eth0
valid_lft forever preferred_lft forever
Eliminar /Eliminar una dirección IP de la interfaz
La sintaxis para eliminar una dirección IP de una interfaz es la siguiente:
ip addr dev ADDRESS dev IFNAME
IFNAME
es el nombre de la interfaz y ADDRESS
es la dirección IP que desea eliminar de la interfaz.
Para eliminar la dirección 192.168.111.111/24
del tipo de dispositivo eth0:
sudo ip address del 192.168.111.111/24 dev eth0
Ver y editar interfaces de red
Para administrar y ver el estado de las interfaces de red, use el objeto de link
Los comandos más utilizados cuando se trabaja con objetos de link
show
, set
, add
y del
.
Ver información sobre interfaces de red
Para ver una lista de todas las interfaces de red, escriba el siguiente comando:
ip link show
La salida se verá así:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
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 fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 96:00:00:19:12:df brd ff:ff:ff:ff:ff:ff
A diferencia de ip addr show
, ip link show
no imprimirá información sobre las direcciones IP asociadas con el dispositivo.
Para obtener información sobre una interfaz de red específica, use ip link show dev
seguido del nombre del dispositivo. Por ejemplo, para consultar eth0
escriba:
ip link show dev eth0
La salida se verá así:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 96:00:00:19:12:df brd ff:ff:ff:ff:ff:ff
Cambiar el estado de la interfaz ARRIBA /ABAJO
Para habilitar o deshabilitar interfaces, use el ip link set dev
seguido del nombre del dispositivo y el estado deseado:
ip link set dev {DEVICE} {up|down}
Por ejemplo, para poner en línea la interfaz eth0
ip link set eth0 up
Y para tomar si fuera de línea
ip link set eth0 down
Ver y editar la tabla de enrutamiento
Para asignar, eliminar y ver la tabla de enrutamiento del kernel, use el objeto route
Los comandos que se utilizan con mayor frecuencia al trabajar con objetos de ruta son: list
, add
y del
.
Ver la tabla de enrutamiento
Para obtener una lista de las entradas de la ruta del kernel, use uno de los siguientes comandos:
ip route
ip route list SELECTOR
ip route list SELECTOR
Si se usa sin un SELECTOR
, enumerará todas las entradas de ruta en el kernel:
ip route list
default via 172.31.1.1 dev eth0
172.31.1.1 dev eth0 scope link
192.168.111.0/24 dev eth0 proto kernel scope link src 192.168.111.22
Para ver solo el enrutamiento de una red específica, por ejemplo, 172.17.0.0/16
, escriba:
ip r list 192.168.111.0/24
192.168.111.0/24 dev eth0 proto kernel scope link src 192.168.111.22
Agregar una nueva ruta
Para agregar una nueva entrada a la tabla de enrutamiento, use el route add
seguido del nombre de la red o del dispositivo.
Agregue una ruta a 192.168.111.0/24
través de la puerta de enlace a 192.168.111.1
ip route add 192.168.111.0/24 via 192.168.111.1
Agregue una ruta a 192.168.111.0/24
que se puede alcanzar en el dispositivo eth0.
ip route add 192.168.111.0/24 dev eth0
Para agregar una ruta predeterminada, use la palabra clave default
El siguiente comando agregará una ruta predeterminada a través de la puerta de enlace local 192.168.111.1
que se puede alcanzar en el dispositivo eth0
ip route add default via 192.168.111.1 dev eth0
Eliminar una ruta
Para eliminar una entrada de la tabla de enrutamiento, use el route del
. La sintaxis para eliminar una ruta es la misma que cuando se agrega.
El siguiente comando eliminará la ruta predeterminada:
ip route del default
Elimine una ruta para 192.168.111.0/24 a través de la puerta de enlace en 192.168.111.1
ip route del 192.168.111.0/24 via 192.168.111.1
Conclusión
A estas alturas, debería tener un buen conocimiento de cómo usar el ip
en Linux. Para obtener más información sobre las otras opciones del comando ip
man ip
Para salir de la pantalla de ayuda, escriba q
:
q