# rm-rf.es

Cómo usar el comando ip en Linux (ejemplos vs ifconfig)

El comando ip, que forma parte de la iproute2 suite parece ser que es el sustituto de ifconfig, pero de momento ifconfig sigue entre nosotros, y creo que hasta que no desaparezca no dejaremos de usarlo (por comodidad, vagancia o desconocimiento del nuevo).

Vamos a ver algunos ejemplos de uso del comando ip para comenzar a familiarizarnos con él y ver como realizariamos las tareas más comunes que hacemos con ifconfig.

Ver interfaces de red y su configuración

El comando ip addr list vendría a ser lo mismo que ejecutar ifconfig. Se puede ejecutar con el mismo resultado como ip address show o ip address list:

~$ ip addr list
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:1b:24:d5:18:99 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.128/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::21b:24ff:fed5:1899/64 scope link 
       valid_lft forever preferred_lft forever
3: eth2:  mtu 1500 qdisc pfifo_fast state DORMANT qlen 1000
    link/ether 00:1a:73:d1:67:45 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::21a:73ff:fed1:6745/64 scope link 
       valid_lft forever preferred_lft forever

También podemos usar el comando ip link show para ver la información en capa 2 (data link layer) de las interfaces de red del sistema:

~$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
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 pfifo_fast state UP qlen 1000
link/ether 00:1b:24:d5:18:99 brd ff:ff:ff:ff:ff:ff
3: eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state DORMANT qlen 1000
link/ether 00:1a:73:d1:67:45 brd ff:ff:ff:ff:ff:ff

Activar/desactivar interfaces de red

Para habilitar o deshabilitar una interfaz de red seguiremos utilizando ip link:

~# ip link set eth2 down
~# ip addr list eth2
3: eth2:  mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:1a:73:d1:67:45 brd ff:ff:ff:ff:ff:ff

~# ip link set eth2 up
~# ip addr list eth2
3: eth2:  mtu 1500 qdisc pfifo_fast state DORMANT qlen 1000
    link/ether 00:1a:73:d1:67:45 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::21a:73ff:fed1:6745/64 scope link tentative 
       valid_lft forever preferred_lft forever

Os he mostrado en el ejemplo como al levantar o tirar la interfaz desaparece la flag de UP en el ip addr list. En ifconfig lo hacíamos del siguiente modo:

~# ifconfig eth2 down
~# ifconfig eth2 up

 

Cambiar características de la interfaz

Con ip link también podemos realizar modificaciones en las características o flags de la interfaz, como por ejemplo configurar el modo promiscuo, multicast, arp, dynamic o allmulti. Se utilizan los valores on|off. En esta otra entrada vimos como hacerlo con ifconfig: configurar tarjeta de red en modo promiscuo:

~# ip link set dev eth0 promisc on
~# ip addr list eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:1b:24:d5:18:99 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.128/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::21b:24ff:fed5:1899/64 scope link 
       valid_lft forever preferred_lft forever

~# ip link set dev eth0 promisc off
~# ip addr list eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:1b:24:d5:18:99 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.128/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::21b:24ff:fed5:1899/64 scope link 
       valid_lft forever preferred_lft forever

Configurar una IP para la interfaz

Con ip addr add podemos especificar la IP, máscara (también en formato CIDR como vemos a continuación y la IP de broadcast:

~# ip addr add 10.0.0.100/24 broadcast 10.0.0.255 dev eth2
~# ip addr list eth2
3: eth2:  mtu 1500 qdisc pfifo_fast state DORMANT qlen 1000
    link/ether 00:1a:73:d1:67:45 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global eth2
    inet6 fe80::21a:73ff:fed1:6745/64 scope link 
       valid_lft forever preferred_lft forever

Y para eliminar la IP:

~# ip addr del 10.0.0.100/24 dev eth2

También podemos crear alias en la interfaz:

~# ip addr add 10.0.0.101/24 broadcast 10.0.0.255 dev eth2:1

Cambiar la MTU de la interfaz

~# ip link set dev eth2 mtu 9000

Ver la tabla de rutas

~# ip route show
default via 192.168.1.1 dev eth0  proto static 
169.254.0.0/16 dev eth0  scope link  metric 1000 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.128  metric 1

Ver la tabla de ARP Cache

De todas las interfaces:

~# ip neighbor show
192.168.1.1 dev eth0 lladdr 64:68:0c:6b:5f:7e REACHABLE

De una interfaz concreta:

~# ip neighbor show dev eth0
192.168.1.1 lladdr 64:68:0c:6b:5f:7e REACHABLE

Esto es sólo una pequeña muestra de lo que ofrece el comando ip en GNU/Linux y la suite iproute2 en general. Os recomiendo revisar la página man para profundizar en el tema.

$ man ip
Salir de la versión móvil