Unterschied zwischen den Befehlen 'ifconfig' und 'ip'

19

Ich habe einige Artikel / Tutorials zum Befehl 'ifconfig' gelesen, die meisten enthielten eine gemeinsame Aussage -

"ifconfig wird vom Befehl ip verworfen"

und vorgeschlagen, IP-Befehl zu lernen. Aber keiner von ihnen hat erklärt, wie der Befehl 'ip' mächtiger ist als 'ifconfig'.

Was ist der Unterschied zwischen beiden?

Mandar Shinde
quelle

Antworten:

21

ifconfigist von net-tools, die mit dem Linux-Netzwerk-Stack schon lange nicht mehr Schritt halten konnten. Es wird auch weiterhin ioctlfür die Netzwerkkonfiguration verwendet, was eine hässliche und weniger leistungsfähige Art der Interaktion mit dem Kernel darstellt.

Viele Änderungen im Linux-Netzwerkcode und viele neue Funktionen sind nicht verfügbar über net-tools: Multipath-Routing, Richtlinien-Routing (siehe RPDB). routeErmöglicht Ihnen dumme Dinge wie das Hinzufügen mehrerer Routen zum selben Ziel mit derselben Metrik.

Zusätzlich:

  • ifconfig meldet für einige Geräte nicht die richtige Hardwareadresse.
  • Sie können nicht konfigurieren ipip, sit, gre, l2tpetc. im Kernel statischen Tunneln.
  • Sie können nicht erstellen tunoder tapGeräte.
  • Das Hinzufügen mehrerer Adressen zu einer bestimmten Schnittstelle weist ebenfalls eine schlechte Semantik auf.
  • Sie können das Linux-Verkehrssteuerungssystem auch nicht mit konfigurieren net-tools.

Siehe auch ifconfigsaugt .

BEARBEITEN : Die Behauptung über die net-toolsBeendigung der Entwicklung, dass ich inzwischen vergessen habe, wo ich für diesen Beitrag hinkomme, wurde entfernt. net-toolsSeit iproute2der Veröffentlichung wurde daran gearbeitet, obwohl es sich hauptsächlich um Fehlerbehebungen und kleinere Verbesserungen und Funktionen wie die Internationalisierung handelt.

pilona
quelle
NET-3 Net-Tools ist nicht die einzige ifconfig. Es gibt zum Beispiel ein anderes in GNU inetutils. Und das ist noch nicht alles. unix.stackexchange.com/a/504084/5132
JdeBP
7

ifconfigist ein traditioneller Befehl zum Anzeigen von Informationen zu Netzwerkschnittstellen und zum Ändern einiger Einstellungen. Insbesondere kann es Schnittstellen nach oben und unten bringen. Es existiert auf den meisten Unix-Varianten.

Unter Linux hat sich der ifconfigBefehl schon lange nicht mehr weiterentwickelt. Es ist immer noch vollkommen in Ordnung für das, was es tut. Wenn Sie ifconfigfür etwas verwenden, gibt es keinen Grund, damit aufzuhören.

Linux stellt auch den ipBefehl aus der iproute2- Tool-Suite bereit . Der ipBefehl kombiniert mehrere klassische Befehle und mehr, einschließlich ifconfig, routeund arp. ipkann viel mehr als ifconfig. Ist andererseits ipnicht immer vorhanden, insbesondere auf eingebetteten Systemen (und niemals auf anderen Unix-Varianten als Linux).

ifconfigDie Ausgabe von Parsing ist irgendwie beschissen. ipDie Ausgabe von Parsing ist irgendwie beschissen. Kein Gewinner da.

Gilles 'SO - hör auf böse zu sein'
quelle
Ich habe immer gedacht ip, dass die Ausgabe von Parsing ziemlich einfach und mit Sicherheit viel einfacher ist als ifconfig. Ich finde es auch toll, dass in vielen Fällen die Ausgabe eines ipBefehls als Eingabe für einen anderen ipBefehl verwendet werden kann, ohne dass dies geändert werden muss (zum Beispiel kann jede Zeile von ip route showals Argument für verwendet werden ip route add).
Patrick
1
@Patrick parst die ip routeund ip ruleAusgabe ist ziemlich klar und ziemlich einfach zu analysieren. Aber ip linkoder ip addrist ein Schmerz. Ich wünschte wirklich, jemand würde einen Patch oder etwas anderes einreichen, um die ip addrgenauen Aussagen auszudrucken, vielleicht mit einem Schalter, mit dem Sie die aktuelle Konfiguration einrichten würden, wie Sie es mit bekommen ip route show.
Zoredache
5

Nur um die Antwort von pilona ein wenig zu ergänzen. Um 2005 wurde ein neuer Mechanismus zur Steuerung des Netzwerkstacks eingeführt - Netlink-Sockets .

Zum Konfigurieren der Netzwerkschnittstelle iproute2wird dieser Vollduplex-Netlink-Socket-Mechanismus verwendet, während ifconfigein ioctlSystemaufruf erforderlich ist. Hier sind 2 Hauptartikel über die Motivation hinter netlink und die Verwendung von rtnetlink .

Boris Burkov
quelle