Uno dei comandi più conosciuti per la gestione delle interfacce di rete è sicuramente ``ifconfig''. Per verificare la corretta installazione di una interfaccia, è uso comune dare il comando
# ifconfig -a
Questo, seppure standard ed ormai parte dei comandi storici di tutti i sistemi unix, può essere sostituito da un più complesso ma altrettanto efficace:
# ip link show
oppure, più brevemente dal comando
# ip link
che vi dovrebbe dare un output molto simile a questo:
1: lo: <LOOPBACK,PROMISC,UP> mtu 3924 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 100
link/ether 00:c0:df:ae:33:48 brd ff:ff:ff:ff:ff:ff
3: sl0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc pfifo_fast qlen 10
link/slip
Vediamo quindi di analizzare questa schermata prendendo ad esempio l'interfaccia eth0. Prima di tutto, subito dopo il nome dell'interfaccia è indicato lo stato della stessa racchiuso tra un < ed un >, in questo caso BROADCAST e MULTICAST. Di seguito è indicato l'mtu della scheda (1500), ovvero la dimensione massima in bytes di un pacchetto che può essere spedito utilizzando questa interfaccia (dipende dall'hardware utilizzato dalla scheda di rete -- 1500 è il valore utilizzato dalle schede ethernet).
La prima novità appare invece con il parametro qdisc. qdisc significa ``Queuing Discipline'', ed indica il sistema usato dal kernel per gestire il queue di questa interfaccia (noop).
Ma che cos'è un queue? Un buon esempio di queue è quella che normalmente viene chiamata ``coda di stampa''. Spesso delle risorse non possono essere utilizzate contemporaneamente da più utenti (come le stampanti), e devono quindi essere costruite delle ``code'' (queue in inglese): quando il dispositivo è occupato, tutto ciò che deve essere stampato viene accumulato da qualche parte in attesa che la risorsa si liberi, portandosi poi alla pari con il lavoro. Capita però (con le stampanti in particolare) che qualcuno monopolizzi la risorsa facendo attendere parecchio tempo a tutti gli altri utenti.
Bene, la ``queuing discipline'' decide come deve essere gestito l'uso della risorsa che non può essere condivisa. In questo caso si tratta di una scheda di rete e più in generale della banda. La disciplina di default è la disciplina pfifo_fast che corrisponde al classico ``chi prima arriva meglio si accomoda'', fifo infatti sta per ``First In First Out'', il primo che entra è il primo che esce. Naturalmente è una disciplina molto poco democratica, e sia il kernel 2.2.x che il kernel 2.4.x provvedono a fornire diverse discipline a livello sperimentale (e non) che consentono di cambiare questo comportamento (come l'sfq, il tbf, il red ...). Per esempio, l'sfq o ``Stochastic Fairness Queue'', fa in modo da dividere l'utilizzo di un'interfaccia in maniera che un po' tutti siano in grado di usufruirne. Se la risorsa non si libera poi, vengono accumulati al massimo qlen (100) arretrati. Nel nostro caso, eth0 usa la disciplina ``noop'', che corrisponde a ``non fare un tubo'', o ``no operation''. Questo perché se notate i flag dell'interfaccia essa non risulta UP (a differenza di sl0), il che significa che non è stata configurata o che è stata disattivata (vedi più avanti). Se la vostra interfaccia fosse invece già stata configurata a boot time, mostrerebbe probabilmente un bell'UP ed un qdisc uguale a pfifo_fast, e nell'esempio seguente mostrerebbe un indirizzo ip già assegnato.
In questa schermata possiamo anche vedere l'indirizzo hardware della scheda di rete ed il suo indirizzo di broadcast (00:c0:df:ae:33:48 ed ff:ff:ff:ff:ff:ff).
Possiamo però notare che, a differenza del comando ``ifconfig -a'', non vengono date informazioni circa l'indirizzo ip di queste interfacce. Con il nuovo comando ip, la gestione ``hardware'' e quella logica di ogni dispositivo di rete sono quasi completamente indipendenti. Possiamo quindi visualizzare le informazioni relative alla gestione logica delle interfacce utilizzando il comando:
# ip address show
o più brevemente
# ip addr
Notate anche che perché ip riconosca un comando è necessario scrivere soltanto quanto basta ad ip perché il comando non possa essere confuso con un altro, cosicché sono comandi validi ``ip add'', ``ip a'' o riferendoci all'esempio di prima ``ip l''.
L'output del comando ``ip addr'' nel nostro esempio sarebbe:
1: lo: <LOOPBACK,PROMISC,UP> mtu 3924 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 100
link/ether 00:c0:df:ae:33:48 brd ff:ff:ff:ff:ff:ff
3: sl0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc pfifo_fast qlen 10
link/slip
inet 192.168.0.1 peer 194.109.2.10/24 scope global sl0
Vediamo qui le stesse informazioni di prima più l'indirizzo ``inet'' (internet ipv4) dell'interfaccia, seguito da un /8 per ``lo'' o /24 per ``sl0''. Il numero di seguito alla / indica quanti bit devono essere guardati per decidere se un altro computer si trova sulla stessa rete, ed è un modo più breve per indicare una ``network mask''. Ad esempio, l'indirizzo dell'host 127.0.0.2, che può anche essere scritto in binario come 01111111.00000000.00000000.00000010, si trova sulla stessa rete di 127.0.0.1 in quanto i primi 8 bit dell'host 127.0.0.2 sono uguali ai primi 8 bit dell'host 127.0.0.1. Nel caso di sl0, il /24 indica che le prime 3 cifre di un altro host devono essere uguali a 194.109.2 perché questo si trovi sulla stessa rete.
Possiamo però vedere che eth0 non ha alcun indirizzo ip assegnato. Questo principalmente per un motivo: nessuno si è ancora preso la briga di configurarlo. Siamo quindi pronti per affrontare il prossimo passo.