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
ifconfig
stammt von net-tools
, das schon seit langem nicht mehr mit dem Linux-Netzwerk-Stack mithalten kann. Es verwendet außerdem immer noch ioctl
fü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-tools
Multipath-Routing und Policy-Routing (siehe RPDB) nicht zugegriffen werden. route
Damit können Sie dumme Dinge tun, wie beispielsweise mehrere Routen mit derselben Metrik zum selben Ziel hinzufügen.
Zusätzlich:
ifconfig
meldet 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
tun
Geräte erstellentap
. - 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-tools
beiden konfigurieren.
Siehe auchifconfig
saugt.
BEARBEITEN: Behauptung über die Einstellung net-tools
der Entwicklung entfernt. Ich habe inzwischen vergessen, wo ich diesen Beitrag herhabe. „ net-tools
An“ wurde seit iproute2
der Veröffentlichung gearbeitet, es handelt sich jedoch hauptsächlich um die Behebung von Fehlern und kleinere Verbesserungen und Funktionen wie die Internationalisierung.
Antwort2
ifconfig
ist 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 ifconfig
hat sich der Befehl schon lange nicht weiterentwickelt. Für das, was er tut, ist er immer noch vollkommen in Ordnung. Wenn Sie ihn ifconfig
für etwas verwenden, gibt es keinen Grund, damit aufzuhören.
Linux bietet auch den ip
Befehl aus demiproute2Tool-Suite. Der ip
Befehl kombiniert mehrere klassische Befehle und mehr, darunter ifconfig
, route
und arp
. ip
kann viel mehr als ifconfig
. Andererseits ip
ist nicht immer vorhanden, insbesondere auf eingebetteten Systemen (und nie auf anderen Unix-Varianten als Linux).
ifconfig
Die Ausgabe von Parsing ist irgendwie beschissen. ip
Die 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 iproute2
wird der Vollduplex-Netlink-Socket-Mechanismus verwendet, wobei ifconfig
ein 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