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
ifconfig
es 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 ioctl
para 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). route
te permite hacer cosas estúpidas como agregar múltiples rutas al mismo destino, con la misma métrica.
Además:
ifconfig
no informa la dirección de hardware adecuada para algunos dispositivos.- No puede configurar
ipip
túneles estáticos en el kernel, etc.sit
gre
l2tp
- No puedes crear
tun
nitap
dispositivos. - 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-tools
ninguno de los dos.
Ver tambiénifconfig
apesta.
EDITAR: Se eliminó la afirmación sobre net-tools
el cese del desarrollo que ya había olvidado de dónde saqué esta publicación. net-tools
' se ha trabajado en ello desde iproute2
su lanzamiento, aunque se trata principalmente de corrección de errores y mejoras y características menores, como la internacionalización.
Respuesta2
ifconfig
es 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 ifconfig
comando no ha evolucionado en mucho tiempo. Sigue estando perfectamente bien para lo que hace. Si estás consumiendo ifconfig
para algo, no hay razón para dejar de hacerlo.
Linux también proporciona el ip
comando desde eliproute2conjunto de herramientas. El ip
comando combina varios comandos clásicos y más, ifconfig
incluidos route
y arp
. ip
puede hacer mucho más que ifconfig
. Por otro lado, ip
no siempre está presente, especialmente en sistemas integrados (y nunca en variantes de Unix distintas de Linux).
Analizar ifconfig
la salida es un poco apesta. Analizar ip
la 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 iproute2
se utiliza ese mecanismo de socket netlink full-duplex, mientras que ifconfig
se basa en una ioctl
llamada 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