Diferencia entre los comandos 'ifconfig' e 'ip'

19

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

"ifconfig está en desuso por 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?

Mandar Shinde
fuente

Respuestas:

21

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

Muchos cambios en el código de red de Linux y muchas características nuevas no son accesibles usando net-tools: enrutamiento de múltiples rutas, enrutamiento de políticas (ver RPDB). routele permite hacer cosas estúpidas como agregar múltiples rutas al mismo destino, con la misma métrica.

Adicionalmente:

  • ifconfig no informa la dirección de hardware adecuada para algunos dispositivos.
  • No se puede configurar ipip, sit, gre, l2tp, etc. túneles estáticos en el kernel.
  • No puedes crear tuno tapdispositivos.
  • La forma de agregar múltiples direcciones a una interfaz dada también tiene una semántica deficiente.
  • Tampoco puede configurar el sistema de control de tráfico de Linux usando net-toolsninguno.

Ver también ifconfigapesta .

EDITAR : Se eliminó la afirmación sobre el net-toolscese del desarrollo de que a estas alturas olvidé dónde obtuve esta publicación. net-tools'se ha trabajado desde iproute2su lanzamiento, aunque se trata principalmente de corrección de errores y mejoras y características menores, como la internacionalización.

pilona
fuente
NET-3 net-tools no es el único ifconfig. Hay uno diferente en GNU inetutils, por ejemplo. Y eso no es todo. unix.stackexchange.com/a/504084/5132
JdeBP
7

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. Todavía está perfectamente bien para lo que hace. Si está usando ifconfigalgo, no hay razón para detenerse.

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

ifconfigLa salida de análisis es un poco desagradable. ipLa salida de análisis es un poco desagradable. No hay ganador allí.

Gilles 'SO- deja de ser malvado'
fuente
Siempre he pensado que el resultado del análisis ipes bastante simple, y ciertamente mucho más simple que ifconfig. También me encanta que en muchos casos la salida de un ipcomando se puede usar como entrada para otro ipcomando con poca o ninguna modificación (por ejemplo, cada línea de ip route showse puede usar como argumento para ip route add).
Patrick
1
@Patrick analiza el ip route, y la ip rulesalida es bastante clara y bastante fácil de analizar. Pero ip link, o ip addres un dolor. Realmente desearía que alguien envíe un parche o algo para ip addrimprimir las declaraciones exactas, tal vez con un interruptor, que usaría configurar la configuración actual, como lo hace con ip route show.
Zoredache
5

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

Para configurar la interfaz de red se iproute2hace uso de ese mecanismo de socket de enlace de red dúplex completo, mientras se ifconfigbasa en una ioctlllamada al sistema. Aquí hay 2 documentos principales sobre la motivación detrás de netlink y el uso de rtnetlink .

Boris Burkov
fuente