LINUX : I comandi Linux per la rete

()

Le reti

Secondo la definizione di Rusty Russell, “una rete di computer consiste in una serie di elementi che permettono a dei nodi di dialogare tra loro ( per “nodi” intendo computer, stampanti, distributori Coca-Cola, e qualsiasi altra cosa ). Non ha molta importanza come siano connessi: potreste usare cavi in fibra ottica come anche piccioni viaggiatori. Ovviamente alcune scelte sono migliori di altre ( specialmente se hai un gatto ). La connessione tra due computer è spesso chiamata collegamento ( link ). Se ci sono dei cavi che escono dalla tua macchina diretti verso altre macchine, questo è un esempio di collegamento in rete ( link ). Se connetti i tuoi quattro computer di casa, otterrai quella che è chiamata comunemente LAN ( Local Area Network ). Qualsiasi rete organizzata entro brevi distanze è una LAN, indipendentemente dal numero di macchine e dal modo con cui è stata realizzata. Il metodo più comune per connettere delle macchine, e creare una LAN, è quello di utilizzare le schede Ethernet. All’altro capo troviamo la WAN ( Wide Area Network ). Se hai un computer a Lahore, Pakistan, uno a Birmingham, UK, e uno a Santiago, Cile, e sei riuscito a connetterli, allora questa è una WAN. Le reti vengono, spesso, collegate l’una all’altra, per formare reti sempre più grandi.


La suite di protocolli TCP/IP è un insieme di protocolli di rete. Un protocollo definisce le regole e le procedure da seguire per portare a termine un determinato compito. La nostra vita è fondata sui protocolli. Quando inviamo una lettera, per esempio, scriviamo l’indirizzo del mittente ( noi ) sul lato posteriore della busta e l’indirizzo del destinatario sul lato anteriore della busta, in ossequio ad un determinato protocollo. Se, per un eccesso di creatività, facessimo l’opposto, l’ufficio postale, sempre in ossequio ad un determinato protocollo, recapiterebbe la nostra lettera al nostro indirizzo! E questo, probabilmente, non è quello che ci saremmo aspettati. Affinché un protocollo svolga in modo adeguato il suo compito, il protocollo deve essere noto a, condiviso e rispettato da tutte le parti in gioco: mittente, destinatario, intermediari ( ufficio postale ). Se uno solo degli attori cambia le regole del gioco, senza avvisare gli altri, la comunicazione diventa inaffidabile ( se non impossibile ). Non è detto che, per un determinato compito, esista una sola procedura, un solo protocollo. L’importante è che tutti gli attori coinvolti nella realizzazione di quel determinato compito si accordino, preventivamente, sul protocollo da adottare. “Internet è composta da un numero di reti a pacchetti, interconnesse, i cui host possono comunicare tra loro, utilizzando i protocolli Internet.

L’importante è che io scelga un protocollo di trasporto, fra i tanti disponibili: TCP, UDP, SPX, NetBEUI/NBF. Da un punto di vista funzionale, una trasmissione TCP/IP viene suddivisa in quattro differenti strati ( layer ):

 

  1. Application layer: è il livello delle applicazioni ( normalmente, si tratta di applicazioni utente ) che utilizzano i protocolli di trasmissione TCP/IP: DNS ( Domain Name System ); NFS ( File Sharing ); DHCP; SNMP e RMON ( Network Management ); FTP e TFTP ( File Transfer ); SMTP, POP, IMAP, NNTP ( E-mail & News ); HTTP e Gopher ( WWW & Gopher ); Telnet e IRC ( Interactive ).
  2. Transport layer: è il livello delle suite di protocolli TCP, UDP, SPX e NetBEUI/NBF, che si occupano del trasporto dei dati.

  3. Network layer: è il livello delle suite di protocolli IP ( IP; IPv4, IPv6; IP NAT; IPsec; Mobile IP ), di ICMP, IPX, DLC, PLP e dei protocolli di routing ( RIP, BGP, EGP, OSPF, GGP, HELLO, IGRP, EIGRP ). Il protocollo IP si occupa dell’indirizzamento dei pacchetti di dati e del loro instradamento.

  4. Link layer: è il livello delle suite di protocolli IEEE 802.2 LLC, una commissione dell’Institute of Electrical and Electronics Engineers ( IEEE ), dedicata allo sviluppo degli standard per le reti locali ( LAN ) e metropolitane ( MAN ), quali Ethernet, Token Ring, FDDI, CDDI, dei protocolli IEEE 802.11 ( WLAN, Wi-Fi ), HomePNA, HomeRF, ATM, SLIP e PPP. I protocolli presenti in questo livello sono, generalmente, al di fuori della responsabilità della comunità Internet, che, intenzionalmente, utilizza, dove possibile, gli standard già esistenti. La standardizzazione, quindi, al livello Link Layer, riguarda solo la risoluzione degli indirizzi e le regole per il trasporto di pacchetti IP su specifici protocolli di rete locale ( Ethernet, per esempio ).

Ciascun protocollo aggiungerà una serie di informazioni al pacchetto di dati in transito. Il pacchetto di dati originale viene chiamato payload, mentre le informazioni aggiunte da ciascun protocollo vengono incapsulate in un header ( intestazione ). Naturalmente, nel percorrere la stratificazione TCP/IP, per ogni nuovo strato, il payload diventa la somma di: pacchetto di dati originale + header aggiunti dai protocolli precedenti.

comando : ifconfig

Il comando ifconfig ( InterFace CONFIGuration ) configura le schede di rete presenti nel computer. Può essere usato anche per verificare lo stato corrente delle schede di rete:


ifconfig

Senza alcun parametro, restituisce l’elenco delle schede di rete attive. Nei sistemi UNIX e UNIX-like ( come Linux ) esiste un’interfaccia di rete virtuale, che viene attivata ogni qualvolta si abilita il sistema alle comunicazioni TCP/IP. Stiamo parlando dell’interfaccia di rete di “loopback”, normalmente visibile con il nome lo oppure lo0.


lo Link encap:Loopback locale
indirizzo inet:127.0.0.1 Maschera:255.0.0.0
indirizzo inet6: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:5522 errors:0 dropped:0 overruns:0 frame:0
TX packets:5522 errors:0 dropped:0 overruns:0 carrier:0
collisioni:0 txqueuelen:0
Byte RX:565608 (565.6 KB) Byte TX:565608 (565.6 KB)

Per convenzione, a questa interfaccia viene assegnato l’indirizzo IP:


127.0.0.1/8

Questa interfaccia è di estrema importanza per il corretto funzionamento del sottosistema di rete TCP/IP.


ifconfig -a

restituisce tutte le schede di rete presenti nel sistema, comprese quelle non attive. Per avere informazioni dettagliate su una particolare scheda di rete, è sufficiente specificare il nome ( Linux ) della scheda di rete:


ifconfig wlan0

wlan0 Link encap:Ethernet HWaddr 00:06:25:09:6A:B5
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:47379 errors:0 dropped:0 overruns:0 frame:0
TX packets:107900 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:4676853 (4.4 Mb) TX bytes:43209032 (41.2 Mb)
Interrupt:43 Indirizzo base:0xc000

In questo caso, stiamo interrogando la scheda di rete wireless wlan0, che utilizza ethernet, ha un MAC address pari a 00:06:25:09:6A:B5, un indirizzo IP pari a 192.168.1.100, con maschera 255.255.255.0, un indirizzo IP per il broadcast pari a 192.168.1.255, è pronta all’uso ( UP ) e operativa ( RUNNING ), è parte di una rete che supporta il BROADCAST, supporta il MULTICAST, ha ricevuto 47379 pacchetti di dati ( RX packets ), per un totale di 4676853 byte ( RX bytes ), ha inviato 107900 pacchetti di dati ( TX packets ), per un totale di 43209032 byte ( TX bytes ), con una Maximum Transmission Unit ( MTU ) di 1500 byte. Il sistema operativo ha identificato, per questa scheda Ethernet, l’interrupt numero 43 e un’area di memoria, per le operazioni di I/O ( input / output ), che inizia all’indirizzo 0xc000. L’interrupt è il segnale che un processo invia alla kernel, per attirare la sua attenzione. Ricordo che Unicast significa che la comunicazione avviene tra due computer; Broadcast significa che un messaggio è inviato a tutti i computer di una rete; Multicast significa che un messaggio è destinato a uno o più computer di una rete, ma non a tutti. Per quanto riguarda la MTU, occorre ricordare che la scheda di rete utilizza il protocollo di trasmissione Ethernet. Il valore della MTU, quindi, è riferito ai pacchetti Ethernet. Un pacchetto Ethernet deve essere composto da un minimo di 46 byte, fino ad un massimo di 1500 byte ( MTU: Maximum Transmission Unit ). Il valore della MTU è da riferirsi al messaggio stesso, il Payload, cioè l’insieme dei dati da trasmettere. Ethernet, poi, per avviare la trasmissione fisica dei dati, aggiungerà al Payload una intestazione iniziale ed un Trailer finale. Se il pacchetto da inviare fosse stato composto dal protocollo superiore TCP, il payload preso in esame da Ethernet sarebbe, invece, la somma del Payload TCP e i bit di intestazione aggiunti dai protocolli TCP e IP. Il valore corrispondente alla MTU, nel protocollo TCP, è MMS ( Maximum Segment Size ). Quindi, nel caso di una trasmissione TCP/IP, abbiamo:


MTU = MMS + Header TCP/IP

Per quanto riguarda i pacchetti inviati e ricevuti, ifconfig restituisce alcuni dati statistici:

  • errors

  • dropped: i pacchetti lasciati cadere ( insufficiente memoria? ).

  • overruns: errore tipicamente dipendente dalla velocità di ricezione dei pacchetti, che impedisce al kernel di elaborarli: il segnale di interrupt ( 43 ) arriva senza che il kernel abbia completato l’elaborazione dei dati ricevuti precedentemente. Questo dato riporta il numero di byte che non rientravano nelle dimensioni del buffer.

  • frame: i pacchetti corrotti ricevuti ( troppo piccoli o troppo grandi, un errore nel checksum, etc. ).

  • carrier: è stato rilevato un problema di segnale sul cavo fisico.

  • collisions: nel corso della trasmissione, sono avvenute delle collisioni tra frame inviate contemporaneamente da più macchine ( mentre Ethernet esige che sia effettuata una trasmissione alla volta ).

  • txqueuelen: è la dimensione della coda ( buffer ) per i dati in partenza.

L’ultimo parametro che richiede una qualche spiegazione è Metric. Metric è un parametro importante nell’ambito del protocollo Routing Information Protocol ( RIP ). Il protocollo RIP ha il compito di mantenere aggiornate le tabelle di routing, memorizzando, per ciascuna rete remota conosciuta, o anche per ciascun computer appartenente ad una rete remota, l’indirizzo IP, la distanza, espressa in numero di HOP ( Metric ), cioè in numero di router attraverso il quale un pacchetto dovrà passare, per arrivare a destinazione, e il primo router al quale destinare il pacchetto in uscita. Per completezza, aggiungo che i router possono anche scambiarsi queste informazioni, inviando ai router conosciuti parte di esse, utilizzando messaggi UDP, inviati attraverso la porta 520 o 521. Per quanto riguarda la scheda di rete, occorre ricordare che essa rappresenta, comunque, un HOP verso una rete ( la nostra ). In alcuni sistemi operativi, ifconfig crea una tabella di routing, per ciascuna scheda di rete identificata con un indirizzo IP. In questo caso, RIP selezionerebbe, per l’invio dei pacchetti, la scheda di rete con il parametro Metric più basso. Naturalmente, una scheda di rete direttamente connessa al router dovrebbe avere un valore di Metric pari a zero. Linux, al contrario, non crea una tabella di routing, durante l’esecuzione del comando ifconfig. Quindi, Linux non utilizza l’informazione conservata nel parametro Metric. Ora, passiamo ai comandi di ifconfig con i quali è possibile impostare o modificare alcuni dei parametri appena visti, oppure modificare il comportamento della scheda di rete. Vediamone alcuni, ricordando che le variazioni apportate verranno perse ad ogni reboot del sistema. Il comando:


ifconfig eth0 172.16.12.2 netmask 255.255.255.0 \
broadcast 172.16.12.255

imposta indirizzo IP, netmask e indirizzo di broacast della interfaccia di rete “eth0”. L’opzione:


sudo ifconfig eth0 arp
sudo ifconfig eth0 -arp

abilita o disabilita l’utilizzo del protocollo ARP, per l’interfaccia indicata. Richiede i privilegi di root ( amministratore ). Il protocollo ARP ( Address Resolution Protocol ) viene usato per mappare gli indirizzi IP con gli indirizzi della rete sottostante ( per esempio, gli indirizzi MAC per reti Ethernet ). Il protocollo RARP ( Reverse Address Resolution Protocol ) esegue l’operazione inversa ( dagli indirizzi di rete MAC ai corrispondenti indirizzi IP ). L’opzione:


sudo ifconfig eth0 promisc
sudo ifconfig eth0 -promisc

abilita o disabilita la modalità promiscua per la scheda di rete indicata. Richiede i privilegi di root ( amministratore ). In modalità promiscua, una scheda di rete accetta tutto il traffico in transito, non solo quello destinato alla scheda stessa. In modalkità non promiscua, solitamente, una scheda di rete trascura le frame di dati che non contengano il proprio indirizzo MAC ( oppure che siano frame con indirizzi di broadcast o multicast ). La modalità operativa della scheda di rete, quindi, è riferita al protocollo Ethernet. L’opzione:


sudo ifconfig eth0 allmulti
sudo ifconfig eth0 -allmulti

abilita o disabilita la ricezione dei pacchetti multicast ( destinati a più postazioni, ma non a tutte ). L’opzione:


sudo ifconfig eth0 broadcast [addr]
sudo ifconfig eth0 -broadcast

abilita o disabilita la ricezione dei pacchetti broadcast ( destinati a tutte le postazioni ). E’ possibile, in fase di abilitazione, indicare un indirizzo IP di broadcast. L’opzione:


ifconfig eth0 mtu 1500

imposta la Maximum Transmission Unit ( MTU ) a 1500 byte. L’opzione:


ifconfig eth0 metric 1

imposta il valore Metric a 1. I comandi:


ifconfig eth0 add addr/prefixlen
ifconfig eth0 del addr/prefixlen

assegnano o deassegnano un indirizzo IP, versione 6, alla scheda di rete indicata, con aggiunta della lunghezza dell’indirizzo di rete. I comandi:


ifconfig eth0 down
ifconfig eth0 up
ifconfig eth0 172.16.1.2 up

disabilitano ( down ) o abilitano ( up ) una interfaccia di rete.

Per conoscere tutte le opzioni disponibili, da usare con cautela, chiamate il manuale di ifconfig:


man ifconfig

/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?