Differenza tra i comandi 'ifconfig' e 'ip'


19

Ho letto alcuni articoli / tutorial sul comando 'ifconfig', molti dei quali includevano una dichiarazione comune -

"ifconfig è deprecato dal comando ip"

e ha suggerito di imparare il comando ip. Ma nessuno di loro ha spiegato come il comando 'ip' sia più potente di 'ifconfig'.

Qual è la differenza tra entrambi?



Risposte:


21

ifconfigviene da net-tools, che non è stato in grado di tenere il passo con lo stack di rete Linux per molto tempo. Inoltre utilizza ancora ioctlper la configurazione di rete, che è un modo brutto e meno potente di interagire con il kernel.

Molte modifiche al codice di rete di Linux e molte nuove funzionalità non sono accessibili usando net-tools: instradamento multipath, instradamento delle politiche (vedi RPDB). routeti consente di fare cose stupide come aggiungere più percorsi alla stessa destinazione, con la stessa metrica.

Inoltre:

  • ifconfig non segnala l'indirizzo hardware corretto per alcuni dispositivi.
  • Non è possibile configurare ipip, sit, gre, l2tp, ecc tunnel statiche in-kernel.
  • Non è possibile creare tuno tapdispositivi.
  • Anche il modo di aggiungere più indirizzi a una data interfaccia ha una semantica scadente.
  • Inoltre, non è possibile configurare neanche il sistema di controllo del traffico Linux net-tools.

Vedi anche fa ifconfigschifo .

EDIT : rimossa l'asserzione sullo net-toolssviluppo cessando che ormai ho dimenticato dove sono arrivato per questo post. net-tools'è stato lavorato da quando è iproute2stato rilasciato, anche se si tratta principalmente di correzione di bug e miglioramenti e funzionalità minori, come l'internazionalizzazione.


NET-3 net-tools non è l'unico ifconfig. Ce n'è uno diverso in GNU inetutils, per esempio. E non è tutto. unix.stackexchange.com/a/504084/5132
JdeBP

7

ifconfigè un comando tradizionale per visualizzare informazioni sulle interfacce di rete e modificare alcune impostazioni. In particolare, può portare le interfacce su e giù. Esiste sulla maggior parte delle varianti unix.

Su Linux, il ifconfigcomando non si è evoluto da molto tempo. Va ancora perfettamente bene per quello che fa. Se stai usando ifconfigqualcosa, non c'è motivo di smettere.

Linux fornisce anche il ipcomando dalla suite di strumenti iproute2 . Il ipcomando combina diversi comandi classici e molto altro ancora, tra cui ifconfig, routee arp. ippuò fare molto di più ifconfig. D'altra parte, ipnon è sempre presente, specialmente su sistemi embedded (e mai su varianti unix diverse da Linux).

L' ifconfigoutput di Parsing fa schifo. L' ipoutput di Parsing fa schifo. Nessun vincitore lì.


Ho sempre pensato che l' ipoutput dell'analisi fosse abbastanza semplice, e certamente molto più semplice di ifconfig. Adoro anche il fatto che in molti casi l'output di un ipcomando può essere utilizzato come input per un altro ipcomando con modifiche minime o nulle (ad esempio, ogni riga di ip route showpuò essere utilizzata come argomento per ip route add).
Patrick,

1
@Patrick analizza il ip route, e l' ip ruleoutput è abbastanza chiaro e abbastanza facile da analizzare. Ma ip link, o ip addrè un dolore. Vorrei davvero che qualcuno inviasse una patch o qualcosa del genere per rendere la ip addrstampa le affermazioni esatte, magari con un interruttore, che avresti usato impostare la configurazione corrente, come con te ip route show.
Zoredache il

5

Solo per aggiungere alcuni bit alla risposta di Pilona. Intorno al 2005 è stato introdotto un nuovo meccanismo per il controllo dello stack di rete: i socket netlink .

Per configurare l'interfaccia di rete si iproute2utilizza quel meccanismo di socket netlink full-duplex, mentre ifconfigsi basa su una ioctlchiamata di sistema. Ecco 2 articoli principali sulla motivazione dietro netlink e l' uso di rtnetlink .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.