Diferencia entre el comando ip vs ifconfig

Diferencia entre el comando ip vs ifconfig

Ambos comandos, tanto “ifconfig” como el comando “ip” sirven para conocer y trabajar con las interfaces del red del sistema. Debes saber que la principal diferencia entre ellos es que el comando “ip” es el sustituto del comando “ifconfig”, pero de momento el potentísimo “ifconfig” sigue entre nosotros, y creo que hasta que no desaparezca no dejaremos de usarlo.

Cable y conexión ethernet

La sintaxis del comando más básica de ip es:

ip address show

Si quieres conocer más sobre cómo funciona Linux y quieres saber cómo instalar tu propia distribución de Debian, puedes acceder de forma gratuita a mi curso básico de Linux.

Cómo ver las interfaces de red en Linux con ip e ifconfig

Una cosa buena que tienen estos comandos nuevos es que cada vez permiten ser ejecutados escribiendo menos texto. Así, para conocer las redes e interfaces de un equipo puedes ejecutar este comando que te he escrito, o solo con “ip address” o “ip addr”… incluso solamente con “ip a” seguirá funcionando igual. El comando equivalente de “ifconfig” sería él mismo, sin parámetros.

jaime@aprendolinux:~$ ip addr show
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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:5f:7b:1b brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 86366sec preferred_lft 86366sec
    inet6 fe80::a00:27ff:fe5f:7b1b/64 scope link
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:c2:25:c8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.6/24 brd 192.168.200.255 scope global dynamic enp0s8
       valid_lft 566sec preferred_lft 566sec
    inet6 fe80::a00:27ff:fec2:25c8/64 scope link
       valid_lft forever preferred_lft forever

jaime@aprendolinux:~$ /usr/sbin/ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::a00:27ff:fe5f:7b1b  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:5f:7b:1b  txqueuelen 1000  (Ethernet)
        RX packets 158  bytes 16424 (16.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 108  bytes 21330 (20.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.200.6  netmask 255.255.255.0  broadcast 192.168.200.255
        inet6 fe80::a00:27ff:fec2:25c8  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:c2:25:c8  txqueuelen 1000  (Ethernet)
        RX packets 4  bytes 1300 (1.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11  bytes 1416 (1.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Habilitar o deshabilitar una interfaz de red en Linux con ip e ifconfig

Para habilitar o deshabilitar una interfaz de red, se ejecutan los siguientes comandos cambiando a usuario administrador o usuario “root”:

# Esto sería para deshabilitar la interfaz de red enp0s8:

root@aprendolinux:~# ip link set enp0s8 down
root@aprendolinux:~# ip address list enp0s8
3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 08:00:27:c2:25:c8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.6/24 brd 192.168.200.255 scope global dynamic enp0s8
       valid_lft 395sec preferred_lft 395sec

# Así sería para habilitar de nuevo la interfaz de red enp0s8:

root@aprendolinux:~# ip link set enp0s8 up
root@aprendolinux:~# ip address list enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:c2:25:c8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.6/24 brd 192.168.200.255 scope global dynamic enp0s8
       valid_lft 376sec preferred_lft 376sec
    inet6 fe80::a00:27ff:fec2:25c8/64 scope link
       valid_lft forever preferred_lft forever

Serían los comandos similares utilizando ifconfig a:

# Esto sería para deshabilitar la interfaz de red enp0s8:

root@aprendolinux:~# ifconfig  enp0s8 down
root@aprendolinux:~# ifconfig  enp0s8
enp0s8: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.200.6  netmask 255.255.255.0  broadcast 192.168.200.255
        ether 08:00:27:c2:25:c8  txqueuelen 1000  (Ethernet)
        RX packets 4  bytes 1300 (1.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 23  bytes 2352 (2.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

# Así sería para habilitar de nuevo la interfaz de red enp0s8:

root@aprendolinux:~# ifconfig  enp0s8 up
root@aprendolinux:~# ifconfig  enp0s8
enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.200.6  netmask 255.255.255.0  broadcast 192.168.200.255
        inet6 fe80::a00:27ff:fec2:25c8  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:c2:25:c8  txqueuelen 1000  (Ethernet)
        RX packets 4  bytes 1300 (1.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 28  bytes 2778 (2.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Añadir una nueva IP a una interfaz de red en Linux con ip e ifconfig

También podemos agregar una IP extra a una interfaz de red con este comando, y podemos especificar no solo la IP, sino también la máscara (también en formato CIDR como vemos a continuación) y la IP de broadcast si lo deseas, aunque no es necesario.

# Esto sería para agregar una IP a la interfaz de red enp0s8:

root@aprendolinux:~# ip addr add 10.0.0.100/24 dev enp0s8
root@aprendolinux:~# ip address list enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:c2:25:c8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.6/24 brd 192.168.200.255 scope global dynamic enp0s8
       valid_lft 492sec preferred_lft 492sec
    inet 10.0.0.100/24 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fec2:25c8/64 scope link
       valid_lft forever preferred_lft forever

# Esto sería para quitar la nueva IP a la interfaz de red enp0s8:

root@aprendolinux:~# ip addr del 10.0.0.100/24 dev enp0s8
root@aprendolinux:~# ip address list enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:c2:25:c8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.6/24 brd 192.168.200.255 scope global dynamic enp0s8
       valid_lft 464sec preferred_lft 464sec
    inet6 fe80::a00:27ff:fec2:25c8/64 scope link
       valid_lft forever preferred_lft forever

Como en los casos anteriores, esto también se puede hacer con ifconfig del siguiente modo:

# Esto sería para agregar una IP a la interfaz de red enp0s8:

root@aprendolinux:~# ifconfig enp0s8 add 10.0.0.100
root@aprendolinux:~# ifconfig
….
enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.200.6  netmask 255.255.255.0  broadcast 192.168.200.255
        inet6 fe80::a00:27ff:fec2:25c8  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:c2:25:c8  txqueuelen 1000  (Ethernet)
        RX packets 8  bytes 2600 (2.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 39  bytes 4092 (3.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s8:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 192.168.200.255
        ether 08:00:27:c2:25:c8  txqueuelen 1000  (Ethernet)

# Esto sería para quitar la nueva IP a la interfaz de red enp0s8:

root@aprendolinux:~# ifconfig enp0s8 del 10.0.0.100

Ventajas del comando “ip” sobre “ifconfig”

Hasta ahora te he mostrado alguna diferencia entre el comando “ip” y el comando “ifconfig”, y hay cosas que obviamente están más evolucionadas en el comando “ip”, como por ejemplo que nos da la posibilidad de ver la tabla de ARP Cache.

Y ¿qué demonios es la tabla de ARP? Pues es una tabla que se almacena localmente en tu equipo y que vincula las IP que ha descubierto en su entorno, con la dirección física o MAC que tiene cada tarjeta de red de forma unívoca.

Podemos ver de forma general la tabla para todas las interfaces de red, si no se especifica ninguna al llamar al comando:

root@aprendolinux:~# ip neighbour show
10.0.2.2 dev enp0s3 lladdr 52:54:00:12:35:02 REACHABLE
192.168.200.3 dev enp0s8 lladdr 08:00:27:42:5c:0a REACHABLE
192.168.200.4 dev enp0s8 lladdr 08:00:27:44:91:a4 REACHABLE

Si se prefiere obtener la tabla de una sola interfaz:

root@aprendolinux:~# ip neighbour show dev enp0s8
192.168.200.3 lladdr 08:00:27:42:5c:0a STALE
192.168.200.4 lladdr 08:00:27:44:91:a4 STALE

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *