ip ed ss strumenti del futuro: dimenticate ifconfig e netstat

6

Un amministratore di sistema si affida ad una serie di strumenti, spesso specifici del sistema operativo su cui sta operando, per poter raccogliere informazioni sullo stato della macchina o impostarne alcuni parametri. Per la gestione della connettività di rete, tra quei strumenti usuali per linux, i comandi ifconfig e netstat sono stati per decenni fondamentali, ma esistono delle alternative: ss può sostituire egregiamente netsat, ed è capace di fare pure di più, mentre ip può sostituire ifconfig (e infatti in molte distribuzioni già lo fa).

Chris Siebenmann, sviluppatore di lunga data in ambito Unix/Linux (nonché creatore degli rpmtools, per citarne uno), si spinge oltre, argomentando che la scelta non può più essere basata solo su gusti personali, ma è dettata anche da questioni tecniche.

Su ssnetstat, il cui compito è visualizzare lo stato delle connessioni del sistema, e per cui abbiamo già dato un confronto delle informazioni fornite, il problema è nel metodo di recupero delle informazioni: netstat legge i file presenti sotto /proc, il mountpoint in cui il kernel espone le sue informazioni, mentre ss utilizza chiamate dirette al kernel, risultando molto più efficiente. Chris stesso ammette che su sistemi casalinghi la differenza fattuale può essere trascurabile, ma in ambiti di alto carico l’effetto è notevole.

Per ifconfig ed ip il problema può diventare evidente subito; entrambi questi programmi si occupano di gestire un’interfaccia di rete, indirizzo IP compreso. Può capitare di dover assegnare più indirizzi IP alla stessa interfaccia fisica, operazione che normalmente avviene tramite alias: invece di associare l’IP all’interfaccia stessa, si crea un’etichetta e lo si associa a quest’ultima. Però, questa tecnica, non è necessaria, tanto che ip è in grado di associare più indirizzi IP alla stessa interfaccia. ifconfig, aspettandosi il metodo classico, semplicemente si perde delle informazioni. Chris stesso ci fornisce l’esempio:

ifconfig -a
[...]
em0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 128.100.3.XX netmask 255.255.255.0 broadcast 128.100.3.255
inet6 fe80::6245:cbff:fea0:e8dd prefixlen 64 scopeid 0x20<link>
ether 60:45:cb:a0:e8:dd txqueuelen 1000 (Ethernet)
[...]
ip -4 addr show em0
[...]
  inet 128.100.3.XX/24 brd 128.100.3.255 scope global em0
    valid_lft forever preferred_lft forever
  inet 128.100.3.YY/24 brd 128.100.3.255 scope global secondary em0
    valid_lft forever preferred_lft forever

Come si vede, l’indirizzo 128.100.3.YY semplicemente non compare con il primo comando.

Sembra quindi che il sistemista moderno debba adeguarsi, imparando i nuovi comandi e dimenticando i vecchi. Magari non proprio subito… e no, stavolta non abbiamo detto systemd!

Ho coltivato la mia passione per l’informatica fin da bambino, coi primi programmi BASIC. In età adulta mi sono avvicinato a Linux ed alla programmazione C, per poi interessarmi di reti. Infine, il mio hobby è diventato anche il mio lavoro.
Per me il modo migliore di imparare è fare, e per questo devo utilizzare le tecnologie che ritengo interessanti; a questo scopo, il mondo opensource offre gli strumenti perfetti.

6 risposte a “ip ed ss strumenti del futuro: dimenticate ifconfig e netstat”

  1. Avatar Kim ALLAMANDOLA

    Non c’era bisogno di dirlo (systemd), lo ha fatto Chris Siebenmann nel suo post e spiega perché l’ip dell’esempio qui sopra non si vede, proprio a causa di systemd.

    Per quanto mi riguarda stò sempre più rivalutando FreeBSD nonostante il suo sviluppo. GNU/Linux stà diventando sempre più un nuovo Windows e per me questo non va bene, non per questioni di bandiera ma per questioni pratiche. Chissà che se continui così i pochi rimasti del mondo *nix non diano qualche spinta a Hurd o al kernel FreeBSD per separarsi decisamente.

  2. Avatar Marco Bonfiglio
    Marco Bonfiglio

    * mi limito alla parte di systemd *
    Vero che Chris dice che quell’IP è stato impostato da networkd, ovvero il componente di systemd deputato alla configurazione delle interfacce, ma è altrettanto vero che a sua volta networkd chiama ip per configurare _effettivamente_ quell’interfaccia con due indirizzi. A questo punto, comunque, ifconfig risulta non più adeguato, in quanto non è in grado di elencare più indirizzi IP per la stessa interfaccia.
    Sono pronto a scommettere che lo stesso effetto è replicabile su Devuan, che a systemd è proprio allergico.

  3. Avatar Kim ALLAMANDOLA

    Mh, dovrei provare da quel che ho sommariamente letto parrebbe di no ma è un rivendere qualcosa senza prove…

  4. Avatar Kim ALLAMANDOLA

    Oh, grazie anche per il tempo che ci hai messo! Oggi è cosa rara.

    Aggiunto alla mia KB con link al post e kudos 🙂

  5. Avatar Marco Bonfiglio
    Marco Bonfiglio

    https://uploads.disquscdn.com/images/306946e2c7a29bcd689b7d10ce1b2ea635027b6a54b477bc74716d313d3bcea4.png
    devuan ascii (RC2): immagine live minimale su virtualbox (devuan_ascii_2.0.0-rc_amd64_minimal-live.iso).
    Quello ho fatto prima è l’accesso con root; ho forzato l’attivazione del link con ifconfig, impostato due indirizzi con ip, e infine visualizzato gli ip assegnati sia con ifconfig che con ip; senza sorprese (per me 😉 ), stesso comportamento.
    Come dicevo, systemd tramite networkd usa gli strumenti del sistema, ed in questo caso ip: non è colpa sua (almeno stavolta).

  6. Avatar Alicia Frantinelli
    Alicia Frantinelli

    Più che dimentarli bisogna ricordarsi che ci sono distribuzioni che non mettono più a disposizione i vecchi comandi di default.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *