Différence entre les commandes «ifconfig» et «ip»

19

J'ai lu quelques articles / tutoriels sur la commande 'ifconfig', la plupart d'entre eux comprenaient une déclaration commune -

"ifconfig est déconseillé par la commande ip"

et a suggéré d'apprendre la commande ip. Mais aucun d'eux n'a expliqué comment la commande «ip» est plus puissante que «ifconfig».

Quelle est la différence entre les deux?

Mandar Shinde
la source

Réponses:

21

ifconfigest de net-tools, qui n'a pas été en mesure de suivre pleinement la pile réseau Linux depuis longtemps. Il utilise également toujours la ioctlconfiguration du réseau, qui est un moyen laid et moins puissant d'interagir avec le noyau.

Beaucoup de changements dans le code de mise en réseau Linux et beaucoup de nouvelles fonctionnalités ne sont pas accessibles en utilisant net-tools : le routage par trajets multiples, le routage des politiques (voir la RPDB). routevous permet de faire des choses stupides comme ajouter plusieurs itinéraires à la même destination, avec la même métrique.

Aditionellement:

  • ifconfig ne signale pas l'adresse matérielle appropriée pour certains appareils.
  • Vous ne pouvez pas configurer ipip, sit, gre,l2tp , etc. tunnels statiques dans le noyau.
  • Vous ne pouvez pas créer tun ou tappériphériques.
  • La manière d'ajouter plusieurs adresses à une interface donnée a également une mauvaise sémantique.
  • Vous ne pouvez pas non plus configurer le système de contrôle du trafic Linux à l'aide de l'un net-toolsou l'autre.

Voir aussi ifconfigsuce .

EDIT : Suppression de l'affirmation selon laquelle le net-toolsdéveloppement cessait que j'oublie maintenant où je suis arrivé pour ce poste. net-tools'a été travaillé depuis iproute2sa sortie, bien qu'il s'agisse principalement de correction de bugs et d'améliorations et fonctionnalités mineures, comme l'internationalisation.

pilona
la source
NET-3 net-tools n'est pas le seul ifconfig. Il en existe un autre dans les inetutils GNU, par exemple. Et ce n'est pas tout. unix.stackexchange.com/a/504084/5132
JdeBP
7

ifconfigest une commande traditionnelle pour afficher des informations sur les interfaces réseau et modifier certains paramètres. En particulier, il peut faire monter et descendre des interfaces. Il existe sur la plupart des variantes Unix.

Sous Linux, la ifconfigcommande n'a pas évolué depuis longtemps. C'est toujours parfaitement bien pour ce qu'il fait. Si vous utilisez ifconfigquelque chose, il n'y a aucune raison d'arrêter.

Linux fournit également la ipcommande de la suite d'outils iproute2 . La ipcommande combine plusieurs commandes classiques et plus, notamment ifconfig, routeet arp. ippeut faire beaucoup plus que ifconfig. En revanche, il ipn'est pas toujours présent, en particulier sur les systèmes embarqués (et jamais sur les variantes Unix autres que Linux).

ifconfigLa sortie de l' analyse est un peu nulle. ipLa sortie de l' analyse est un peu nulle. Aucun gagnant là-bas.

Gilles 'SO- arrête d'être méchant'
la source
J'ai toujours pensé que ipla sortie de l' analyse était assez simple, et certainement beaucoup plus simple que ifconfig. J'aime aussi que dans de nombreux cas, la sortie d'une ipcommande puisse être utilisée comme entrée d'une autre ipcommande avec peu ou pas de modification (par exemple, chaque ligne de ip route showpeut être utilisée comme argument ip route add).
Patrick
1
@Patrick analyse le ip route, et la ip rulesortie est assez claire et assez facile à analyser. Mais ip link, ou ip addrc'est une douleur. Je souhaite vraiment que quelqu'un soumette un correctif ou quelque chose pour ip addrimprimer les déclarations exactes, peut-être avec un commutateur, que vous utiliseriez pour configurer la configuration actuelle, comme vous le feriez avec ip route show.
Zoredache
5

Juste pour ajouter quelques bits à la réponse de pilona. Vers 2005, un nouveau mécanisme de contrôle de la pile réseau a été introduit: les sockets netlink .

Pour configurer l'interface réseau, il iproute2utilise ce mécanisme de socket netlink en duplex intégral, tout en ifconfigs'appuyant sur un ioctlappel système. Voici 2 articles principaux sur la motivation derrière netlink et l' utilisation de rtnetlink .

Boris Burkov
la source