Unterschied zwischen den Befehlen „ifconfig“ und „ip“

Unterschied zwischen den Befehlen „ifconfig“ und „ip“

Ich habe einige Artikel/Tutorials zum Befehl „ifconfig“ gelesen, die meisten davon enthielten eine allgemeine Aussage -

„ifconfig wird durch IP-Befehl veraltet“

und schlug vor, den IP-Befehl zu lernen. Aber keiner erklärte, warum der Befehl „ip“ leistungsfähiger ist als „ifconfig“.

Was ist der Unterschied zwischen beiden?

Antwort1

ifconfigstammt von net-tools, das schon seit langem nicht mehr mit dem Linux-Netzwerk-Stack mithalten kann. Es verwendet außerdem immer noch ioctlfür die Netzwerkkonfiguration, was eine hässliche und weniger leistungsfähige Art der Interaktion mit dem Kernel ist.

Auf viele Änderungen im Linux-Netzwerkcode und viele neue Funktionen kann mit net-toolsMultipath-Routing und Policy-Routing (siehe RPDB) nicht zugegriffen werden. routeDamit können Sie dumme Dinge tun, wie beispielsweise mehrere Routen mit derselben Metrik zum selben Ziel hinzufügen.

Zusätzlich:

  • ifconfigmeldet für einige Geräte nicht die richtige Hardwareadresse.
  • Sie können keine statischen Tunnel vom Typ ipip, sit, gre, l2tp, usw. im Kernel konfigurieren.
  • Sie können keine tunGeräte erstellen tap.
  • Auch die Art und Weise, einer bestimmten Schnittstelle mehrere Adressen hinzuzufügen, weist eine schlechte Semantik auf.
  • Sie können das Linux-Verkehrskontrollsystem auch mit keinem der net-toolsbeiden konfigurieren.

Siehe auchifconfigsaugt.

BEARBEITEN: Behauptung über die Einstellung net-toolsder Entwicklung entfernt. Ich habe inzwischen vergessen, wo ich diesen Beitrag herhabe. „ net-toolsAn“ wurde seit iproute2der Veröffentlichung gearbeitet, es handelt sich jedoch hauptsächlich um die Behebung von Fehlern und kleinere Verbesserungen und Funktionen wie die Internationalisierung.

Antwort2

ifconfigist ein herkömmlicher Befehl zum Anzeigen von Informationen über Netzwerkschnittstellen und zum Ändern einiger Einstellungen. Insbesondere kann er Schnittstellen hoch- und herunterfahren. Er ist auf den meisten Unix-Varianten vorhanden.

Unter Linux ifconfighat sich der Befehl schon lange nicht weiterentwickelt. Für das, was er tut, ist er immer noch vollkommen in Ordnung. Wenn Sie ihn ifconfigfür etwas verwenden, gibt es keinen Grund, damit aufzuhören.

Linux bietet auch den ipBefehl aus demiproute2Tool-Suite. Der ipBefehl kombiniert mehrere klassische Befehle und mehr, darunter ifconfig, routeund arp. ipkann viel mehr als ifconfig. Andererseits ipist nicht immer vorhanden, insbesondere auf eingebetteten Systemen (und nie auf anderen Unix-Varianten als Linux).

ifconfigDie Ausgabe von Parsing ist irgendwie beschissen. ipDie Ausgabe von Parsing ist irgendwie beschissen. Da gibt es keinen Gewinner.

Antwort3

Ich möchte der Antwort von pilona noch ein paar Dinge hinzufügen. Um 2005 wurde ein neuer Mechanismus zur Steuerung des Netzwerkstapels eingeführt -Netlink-Buchsen.

Zur Konfiguration der Netzwerkschnittstelle iproute2wird der Vollduplex-Netlink-Socket-Mechanismus verwendet, wobei ifconfigein Systemaufruf erforderlich ist ioctl. Hier sind 2 Hauptartikel zuMotivation hinter NetlinkUndNutzung von rtnetlink.

Antwort4

Meiner Erfahrung nach ist die Ausgabe vonifconfigleichter verdaulich im Vergleich zuIP-Adresse *Befehle, die meiner Meinung nach optisch etwas zu wünschen übrig lassen. Bei meiner typischen Verwendung benötige ich nur eine Teilmenge dessen, was gegeben ist, beispielsweise Schnittstelle, Status, IP-Adresse und in dieser Hinsichtifconfigist leichter zu lesen.

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

Vergleich mit der IP-Adresse:

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

verwandte Informationen