Diferencia entre los comandos 'ifconfig' e 'ip'

Diferencia entre los comandos 'ifconfig' e 'ip'

Leí algunos artículos/tutoriales sobre el comando 'ifconfig', la mayoría de ellos incluían una declaración común:

"ifconfig está obsoleto por el comando ip"

y sugirió aprender el comando ip. Pero ninguno de ellos explicó cómo el comando 'ip' es más poderoso que 'ifconfig'.

¿Cuál es la diferencia entre ambos?

Respuesta1

ifconfiges de net-tools, que no ha podido mantenerse al día con la pila de red de Linux durante mucho tiempo. También se sigue utilizando ioctlpara la configuración de red, que es una forma fea y menos poderosa de interactuar con el kernel.

No se puede acceder a muchos cambios en el código de red de Linux y a muchas funciones nuevas mediante net-tools: enrutamiento multiruta, enrutamiento de políticas (consulte RPDB). routete permite hacer cosas estúpidas como agregar múltiples rutas al mismo destino, con la misma métrica.

Además:

  • ifconfigno informa la dirección de hardware adecuada para algunos dispositivos.
  • No puede configurar ipiptúneles estáticos en el kernel, etc.sitgrel2tp
  • No puedes crear tunni tapdispositivos.
  • La forma de agregar varias direcciones a una interfaz determinada también tiene una semántica deficiente.
  • Tampoco puedes configurar el sistema de control de tráfico de Linux usando net-toolsninguno de los dos.

Ver tambiénifconfigapesta.

EDITAR: Se eliminó la afirmación sobre net-toolsel cese del desarrollo que ya había olvidado de dónde saqué esta publicación. net-tools' se ha trabajado en ello desde iproute2su lanzamiento, aunque se trata principalmente de corrección de errores y mejoras y características menores, como la internacionalización.

Respuesta2

ifconfiges un comando tradicional para mostrar información sobre interfaces de red y cambiar algunas configuraciones. En particular, puede subir y bajar interfaces. Existe en la mayoría de las variantes de Unix.

En Linux, el ifconfigcomando no ha evolucionado en mucho tiempo. Sigue estando perfectamente bien para lo que hace. Si estás consumiendo ifconfigpara algo, no hay razón para dejar de hacerlo.

Linux también proporciona el ipcomando desde eliproute2conjunto de herramientas. El ipcomando combina varios comandos clásicos y más, ifconfigincluidos routey arp. ippuede hacer mucho más que ifconfig. Por otro lado, ipno siempre está presente, especialmente en sistemas integrados (y nunca en variantes de Unix distintas de Linux).

Analizar ifconfigla salida es un poco apesta. Analizar ipla salida es un poco apesta. Allí no hay ganador.

Respuesta3

Solo para agregar algunos bits a la respuesta de pilona. Alrededor de 2005 se introdujo un nuevo mecanismo para controlar la pila de red:enchufes de enlace de red.

Para configurar la interfaz de red iproute2se utiliza ese mecanismo de socket netlink full-duplex, mientras que ifconfigse basa en una ioctlllamada al sistema. Aquí hay 2 artículos principales sobremotivación detrás de netlinkyuso de rtnetlink.

Respuesta4

En mi experiencia he encontrado la salida deifconfigmás fácil de digerir en comparación conip-*Comandos, que en mi opinión visualmente dejan un poco que desear. En mi uso típico sólo necesito un subconjunto de lo que se proporciona, por ejemplo interfaz, estado, dirección IP y en este sentidoifconfiges más fácil de leer.

ifconfig:

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    loop  txqueuelen 1000  (Local Loopback)
    RX packets 297454  bytes 14872700 (14.1 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 297454  bytes 14872700 (14.1 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 10.0.0.10  netmask 255.255.255.0  broadcast 10.0.0.255
    ether aa:aa:aa:aa:aa:aa  txqueuelen 1000  (Ethernet)
    aa:aa:aa:aa:aa:aabytes 596277 (582.3 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 9083  bytes 738309 (721.0 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 10.0.0.20  netmask 255.255.255.0  broadcast 10.0.0.255
    ether aa:aa:aa:aa:aa:aa  txqueuelen 1000  (Ethernet)
    aa:aa:aa:aa:aa:aabytes 596277 (582.3 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 9083  bytes 738309 (721.0 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Comparado con la dirección IP:

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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
inet 10.0.0.10/24 brd 10.0.0.255 scope global eth0
   valid_lft forever preferred_lft forever
3: eth1 <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
inet 10.0.0.20/24 brd 10.0.0.255 scope global eth1
   valid_lft forever preferred_lft forever

información relacionada