Linux Professional Institute Learning Logo.
Torna al contenuto principale
  • Home
    • Tutte le Risorse
    • LPI Learning Materials
    • Collabora
    • Publishing Partner
    • Diventa un Publishing Partner
    • FAQ
    • Collaboratori
    • Contatto
  • LPI.org
4.4 Lezione 1
Argomento 1: La Comunità Linux e una Carriera nell'Open Source
1.1 Evoluzione di Linux e Sistemi Operativi più Diffusi
  • 1.1 Lezione 1
1.2 Principali Applicazioni Open Source
  • 1.2 Lezione 1
1.3 Software e Licenze Open Source
  • 1.3 Lezione 1
1.4 Competenze ICT - Lavorare con Linux
  • 1.4 Lezione 1
Argomento 2: Trovare il Proprio Modo di Operare su un Sistema Linux
2.1 Nozioni di Base sulla Command Line
  • 2.1 Lezione 1
  • 2.1 Lezione 2
2.2 Utilizzo della Command Line per Ottenere Aiuto
  • 2.2 Lezione 1
2.3 Utilizzo di Directory e Elenchi di File
  • 2.3 Lezione 1
  • 2.3 Lezione 2
2.4 Creazione, Spostamento ed Eliminazione di File
  • 2.4 Lezione 1
Argomento 3: Il Potere della Command Line
3.1 Archiviazione dei File sulla Command Line
  • 3.1 Lezione 1
3.2 Ricerca ed Estrazione di Dati dai File
  • 3.2 Lezione 1
  • 3.2 Lezione 2
3.3 Trasformare i Comandi in uno Script
  • 3.3 Lezione 1
  • 3.3 Lezione 2
Argomento 4: Il Sistema Operativo Linux
4.1 Scelta di un Sistema Operativo
  • 4.1 Lezione 1
4.2 Comprendere l'Hardware del Computer
  • 4.2 Lezione 1
4.3 Dove Sono Memorizzati i Dati
  • 4.3 Lezione 1
  • 4.3 Lezione 2
4.4 Il Tuo Computer in Rete
  • 4.4 Lezione 1
Argomento 5: Sicurezza e Permessi sui File
5.1 Sicurezza di Base e Identificazione dei Tipi di Utente
  • 5.1 Lezione 1
5.2 Creazione di Utenti e Gruppi
  • 5.2 Lezione 1
5.3 Gestione delle Autorizzazioni e delle Proprietà dei File
  • 5.3 Lezione 1
5.4 Directory e File Speciali
  • 5.4 Lezione 1
How to get certified
  1. Argomento 4: Il Sistema Operativo Linux
  2. 4.4 Il Tuo Computer in Rete
  3. 4.4 Lezione 1

4.4 Lezione 1

Certificazione:

Linux Essentials

Versione:

1.6

Argomento:

4 Il Sistema Operativo Linux

Obiettivo:

4.4 Il Tuo Computer in Rete

Lezione:

1 di 1

Introduzione

Al giorno d’oggi, qualsiasi tipo di dispositivo informatico scambia informazioni sulle reti. L’idea alla base delle reti di computer è la connessione fisica tra un dispositivo e i suoi peer. Queste connessioni sono chiamate link e sono le connessioni più semplici tra due diversi dispositivi. I link possono essere stabiliti attraverso vari mezzi, come cavi in ​​rame, fibre ottiche, onde radio o laser.

Ogni link è collegato a un’interfaccia di un dispositivo. Ogni dispositivo può avere più interfacce e quindi essere connesso a più link. Attraverso questi link i computer possono formare una rete: una piccola comunità di dispositivi che possono connettersi direttamente tra loro. Esistono numerosi esempi di reti di questo tipo nel mondo. Per essere in grado di comunicare al di fuori di una rete link layer (a livello di link), i dispositivi utilizzano i router. Pensa alle reti link layer come isole collegate da router, proprio come da ponti, sui quali viaggiano le informazioni per raggiungere un dispositivo che fa parte di un’isola remota.

Questo modello porta a diversi livelli di rete:

Link Layer

Gestisce la comunicazione tra dispositivi collegati direttamente.

Network Layer

Gestisce il routing al di fuori delle singole reti e l’indirizzamento univoco dei dispositivi al di fuori di una rete link layer.

Application Layer

Consente ai singoli programmi di connettersi tra loro.

Quando furono inventate, le reti di computer usavano gli stessi metodi di comunicazione dei telefoni in quanto erano a commutazione di circuito. Ciò significa che era necessario creare un link dedicato e diretto tra due nodi affinché fossero in grado di comunicare. Questo metodo funzionava bene, ma richiedeva tutto lo spazio su un dato link perché solo due host potessero comunicare.

Successivamente le reti di computer sono passate a un meccanismo chiamato commutazione di pacchetto. Secondo questo metodo i dati vengono raggruppati con un header (intestazione), che contiene informazioni sull’origine e sulla destinazione. Le informazioni sul contenuto effettivo sono contenute in questo frame e inviate tramite il link al destinatario indicato nell’header del frame. Ciò consente a più dispositivi di condividere un singolo link e comunicare quasi contemporaneamente.

Rete Link Layer

Il compito di ogni pacchetto è trasportare le informazioni dalla sorgente alla destinazione attraverso un link che collega entrambi i dispositivi. Questi dispositivi hanno bisogno di un modo per identificarsi reciprocamente. Questo è lo scopo di un indirizzo di link layer (indirizzo a livello di link). In una rete Ethernet, gli indirizzi MAC (Media Access Control) vengono utilizzati per identificare i singoli dispositivi. Un indirizzo MAC è composto da 48 bit. Non sono necessariamente univoci a livello globale e non possono essere utilizzati per indirizzare peer al di fuori del collegamento corrente. Pertanto, questi indirizzi non possono essere utilizzati per instradare i pacchetti verso altri collegamenti. Il destinatario di un pacchetto controlla se l’indirizzo di destinazione corrisponde al proprio indirizzo di link layer e, in caso affermativo, elabora il pacchetto. Altrimenti il ​​pacchetto viene scartato. L’eccezione a questa regola è rappresentata dai pacchetti di broadcast (un pacchetto inviato a chiunque in una rete locale) che sono sempre accettati.

Il comando ip link show mostra un elenco di tutte le interfacce di rete disponibili e dei loro indirizzi di link layer, nonché alcune altre informazioni sulla dimensione massima del pacchetto:

$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff

L’output sopra riportato mostra che il dispositivo ha due interfacce, lo e ens33. lo è il dispositivo di loopback e ha indirizzo MAC 00:00:00:00:00:00, mentre ens33 è un’interfaccia ethernet e ha indirizzo MAC 00:0c:29:33:3b:25.

Rete IPv4

Per visitare siti web come Google o Twitter, per controllare la posta elettronica o per consentire alle aziende di connettersi tra loro, i pacchetti devono essere in grado di spostarsi da una rete link layer all’altra. Spesso queste reti sono collegate solo indirettamente, con diverse reti link layer intermedie che i pacchetti devono attraversare per raggiungere l’effettiva destinazione.

Gli indirizzi di link layer di un’interfaccia di rete non possono essere utilizzati al di fuori di quella specifica rete link layer. Poiché questo indirizzo non ha alcun significato per i dispositivi in ​​altre reti link layer, è necessaria una forma di indirizzi univoci a livello globale per implementare il routing. Questo schema di indirizzamento, insieme al concetto generale di routing, è implementato dall'Internet Protocol (IP).

Note

Un protocollo è un insieme di procedure per fare qualcosa in modo che tutte le parti che seguono il protocollo siano compatibili tra loro. Un protocollo può essere visto come la definizione di uno standard. In informatica, l’Internet Protocol è uno standard accettato da tutti in modo che diversi dispositivi prodotti da diversi produttori possano comunicare tra loro.

Indirizzi IPv4

Gli indirizzi IP, come gli indirizzi MAC, rappresentano un modo per indicare da dove proviene un pacchetto dati e dove sta andando. IPv4 è stato il primo protocollo. Gli indirizzi IPv4 hanno 32 bit, fornendo un numero massimo teorico di 4.294.967.296 indirizzi. Tuttavia, il numero di questi indirizzi utilizzabili dai dispositivi è molto inferiore in quanto alcuni intervalli sono riservati per usi speciali come, per esempio, gli indirizzi broadcast (che vengono utilizzati per raggiungere tutti i partecipanti di una specifica rete), gli indirizzi multicast (simili agli indirizzi broadcast, ma il dispositivo deve sintonizzarsi come una radio) o quelli riservati per uso privato.

Gli indirizzi IPv4 sono rappresentati da quattro cifre separate da un punto e ogni cifra può variare da 0 a 255. Per esempio, considera il seguente indirizzo IP:

192.168.0.1

Tecnicamente, ciascuna di queste cifre rappresenta otto singoli bit. Quindi questo indirizzo può anche essere scritto in questo modo:

11000000.10101000.00000000.00000001

All’atto pratico viene utilizzata la notazione decimale come visto sopra. Tuttavia, la rappresentazione bit per bit è importante per comprendere il subnetting.

Sottoreti IPv4

Per supportare il routing, gli indirizzi IP possono essere suddivisi in due parti: la porzione di rete e la porzione host. La porzione di rete identifica la rete su cui si trova il dispositivo e viene utilizzata per instradare i pacchetti verso quella rete. La porzione host viene utilizzata per identificare in modo specifico un dato dispositivo su una rete e per consegnare il pacchetto allo specifico destinatario una volta che ha raggiunto la sua rete link layer.

Gli indirizzi IP possono essere suddivisi nella porzione di sottorete e nella porzione host in qualsiasi punto. La cosiddetta maschera di sottorete (subnet mask), chiamata anche maschera di rete (netmask), definisce dove avviene questa divisione. Prendiamo nuovamente in considerazione la rappresentazione binaria dell’indirizzo IP del precedente esempio:

11000000.10101000.00000000.00000001

Per questo indirizzo IP, la subnet mask imposta ogni bit che appartiene alla porzione di rete a 1 e ogni bit che appartiene alla porzione host a 0:

11111111.11111111.11111111.00000000

All’atto pratico la netmask viene scritta in notazione decimale:

255.255.255.0

Ciò significa che questa rete va da 192.168.0.0 a 192.168.0.255. Nota che i primi tre numeri, per i quali sono impostati tutti i bit nella maschera di rete, rimangono invariati negli indirizzi IP.

Infine, c’è una notazione alternativa per la subnet mask, che viene chiamata Classless Inter-Domain Routing (CIDR). Questa notazione indica semplicemente quanti bit sono impostati nella subnet mask e aggiunge tale numero all’indirizzo IP. Nell’esempio precedente, 24 bit su 32 sono impostati a 1 nella subnet mask. Questo può essere espresso secondo la notazione CIDR come 192.168.0.1/24.

Indirizzi Privati IPv4

Come accennato in precedenza, alcune sezioni dello spazio degli indirizzi IPv4 sono riservate per usi speciali. Uno di questi è l’assegnazione di indirizzi privati. Le seguenti sottoreti sono riservate per l’indirizzamento privato:

  • 10.0.0.0/8

  • 172.16.0.0/12

  • 192.168.0.0/16

Chiunque può utilizzare gli indirizzi di queste sottoreti. Tuttavia, queste sottoreti non possono essere instradate sulla rete Internet pubblica poiché sono potenzialmente utilizzate da numerose reti in contemporanea.

Oggi la maggior parte delle reti utilizza questi indirizzi interni. Consentono la comunicazione interna senza la necessità di alcuna assegnazione di indirizzi esterni. La maggior parte delle connessioni Internet oggi viene fornita con un unico indirizzo IPv4 esterno. Quando inoltrano i pacchetti a Internet, i router mappano tutti gli indirizzi interni su quell’unico indirizzo IP esterno. Questo è chiamato Network Address Translation (NAT). Il caso speciale di NAT in cui un router mappa gli indirizzi interni su un singolo indirizzo IP esterno è talvolta chiamato mascheramento (masquerading). Ciò consente a qualsiasi dispositivo sulla rete interna di stabilire nuove connessioni con qualsiasi indirizzo IP globale in Internet.

Note

Con il masquerading non è possibile fare riferimento ai dispositivi interni da Internet poiché non hanno un indirizzo valido a livello globale. Tuttavia, questa non rappresenta una caratteristica di sicurezza. Anche quando si utilizza il masquerading, è comunque necessario un firewall.

Configurazione di Indirizzi IPv4

Esistono due modi principali per configurare gli indirizzi IPv4 su un computer: o assegnando gli indirizzi manualmente o utilizzando il Dynamic Host Configuration Protocol (DHCP) per la configurazione automatica.

Quando si utilizza il DHCP, un server centrale controlla quali indirizzi vengono distribuiti a quali dispositivi. Il server può anche fornire ai dispositivi altre informazioni sulla rete come, per esempio, gli indirizzi IP dei server DNS, l’indirizzo IP del default router, o, nel caso di configurazioni più complesse, può avviare un sistema operativo dalla rete. Il DHCP è abilitato per impostazione predefinita su molti sistemi; quindi probabilmente avrai già un indirizzo IP una volta connesso a una rete.

Gli indirizzi IP possono anche essere aggiunti manualmente a un’interfaccia utilizzando il comando ip addr add. Nel seguente esempio aggiungiamo l’indirizzo 192.168.0.5 all’interfaccia ens33. La rete utilizza la netmask 255.255.255.0 che equivale a /24 secondo la notazione CIDR:

$ sudo ip addr add 192.168.0.5/255.255.255.0 dev ens33

Ora possiamo verificare che l’indirizzo sia stato aggiunto utilizzando il comando ip addr show:

$ ip addr show
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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
25: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.5/24 192.168.0.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::010c:29ff:fe33:3b25/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

L’output mostra sia l’interfaccia lo sia l’interfaccia ens33 con il relativo indirizzo, assegnato tramite il precedente comando.

Per verificare che un dispositivo sia raggiungibile è possibile utilizzare il comando ping. Questo invia un tipo speciale di messaggio chiamato echo request in cui il mittente chiede una risposta al destinatario. Se la connessione tra i due dispositivi può essere stabilita correttamente, il destinatario invierà un echo reply, verificando così la connessione:

$ ping -c 3 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=2.16 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=1.85 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=3.41 ms

--- 192.168.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 5ms
rtt min/avg/max/mdev = 1.849/2.473/3.410/0.674 ms

L’opzione -c 3 interrompe il comando ping dopo aver inviato tre echo request. Altrimenti, ping continua a funzionare all’infinito e deve essere fermato premendo Ctrl+C.

Routing IPv4

Il routing è il processo tramite il quale un pacchetto passa dalla rete di origine alla rete di destinazione. Ogni dispositivo mantiene una tabella di routing che contiene informazioni sulle reti IP che possono essere raggiunte direttamente tramite il collegamento del dispositivo alle reti link layer, e informazioni sulle reti IP che possono essere raggiunte inoltrando i pacchetti a un router. Infine, una default route definisce un router che riceve tutti i pacchetti che non hanno corrispondenza con alcun altro percorso.

Quando si stabilisce una connessione, il dispositivo cerca l’indirizzo IP della destinazione nella sua tabella di routing. Se una voce ha corrispondenza con l’indirizzo, il pacchetto viene inviato o alla rispettiva rete link layer o inoltrato al router indicato nella tabella di routing.

Anche i router stessi mantengono delle tabelle di routing. Quando riceve un pacchetto, un router cerca l’indirizzo di destinazione nella propria tabella di routing e invia il pacchetto al router successivo. Questo viene ripetuto fino a quando il pacchetto arriva al router sulla rete di destinazione. Ogni router coinvolto in questo percorso è chiamato hop. Quest’ultimo router individua, nella sua tabella di routing, un link diretto per l’indirizzo di destinazione e invia i pacchetti alla sua interfaccia.

La maggior parte delle reti domestiche ha solo un punto di uscita: il singolo router fornito dall'internet service provider (ISP). In questo caso, un dispositivo semplicemente inoltra tutti i pacchetti che non sono per la rete interna direttamente al router di casa che li invia quindi al router del provider per un ulteriore inoltro. Questo è un esempio di default route.

Il comando ip route show elenca la tabella di routing IPv4 corrente:

$ ip route show
127.0.0.0/8 via 127.0.0.1 dev lo0
192.168.0.0/24 dev ens33 scope link

Per aggiungere una default route, tutto ciò che serve è l’indirizzo interno del router che sarà il gateway predefinito. Se, per esempio, il router ha l’indirizzo 192.168.0.1, possiamo usare il seguente comando per configurarlo come default route:.

$ sudo ip route add default via 192.168.0.1

Per fare una verifica, esegui nuovamente ip route show:

$ ip route show
default via 192.168.0.1 dev ens33
127.0.0.0/8 via 127.0.0.1 dev lo0
192.168.0.0/24 dev ens33 scope link

Rete IPv6

IPv6 è stato progettato per risolvere le lacune di IPv4, in particolare la mancanza di indirizzi poiché sempre più dispositivi venivano messi online. Tuttavia, IPv6 include anche altre funzionalità come nuovi protocolli per la configurazione automatica della rete. Invece di 32 bit per indirizzo, IPv6 ne utilizza 128. Ciò consente circa 2128 indirizzi. Tuttavia, come IPv4, il numero di indirizzi utilizzabili univoci a livello globale è molto inferiore poichè alcune sezioni sono riservate per altri usi. Questo gran numero di indirizzi significa che ci sono indirizzi pubblici più che sufficienti per ogni dispositivo attualmente connesso a Internet e per molti altri che ci saranno in futuro, riducendo così la necessità di mascheramento e i problemi da esso generati come il ritardo nella traduzione e l’impossibilità di connettersi direttamente a dispositivi mascherati.

Indirizzi IPv6

Gli indirizzi utilizzano 8 gruppi di 4 cifre esadecimali ciascuno separati da due punti:

2001:0db8:0000:abcd:0000:0000:0000:7334
Note

Le cifre esadecimali vanno da 0 a f; quindi ogni cifra può contenere uno dei 16 differenti valori.

Per semplificare le cose, gli zeri iniziali di ogni gruppo possono essere rimossi; tuttavia, ogni gruppo deve contenere almeno una cifra:

2001:db8:0:abcd:0:0:0:7334

Quando più gruppi contenenti solo zeri si susseguono direttamente uno dopo l’altro, possono essere completamente sostituiti da "::":

2001:db8:0:abcd::7334

Tuttavia, questo può accadere solo una volta in ogni indirizzo.

Prefisso IPv6

I primi 64 bit di un indirizzo IPv6 sono noti come prefisso di routing (routing prefix). Il prefisso viene utilizzato dai router per determinare a quale rete appartiene un dispositivo e, quindi, su quale percorso devono essere inviati i dati. Il subnetting avviene sempre all’interno del prefisso. Gli ISP di solito distribuiscono i prefissi /48 o /58 ai propri clienti, lasciando 16 o 8 bit per il loro subnetting interno.

Esistono tre principali tipi di prefisso in IPv6:

Global Unique Address

Il prefisso viene assegnato dai blocchi riservati agli indirizzi globali. Questi indirizzi sono validi in tutta Internet.

Unique Local Address

Non può essere instradato su Internet. Possono, tuttavia, essere instradati internamente all’interno di un’organizzazione. Questi indirizzi vengono utilizzati all’interno di una rete per garantire che i dispositivi abbiano un indirizzo anche in assenza di connessione Internet. Sono l’equivalente degli intervalli di indirizzi privati ​​in IPv4. I primi 8 bit sono sempre fc o fd, seguiti da 40 bit generati casualmente.

Link Local Address

Sono validi solo su un particolare link. Ogni interfaccia di rete compatibile con IPv6 ha uno di questi indirizzi, che inizia con fe80. Questi indirizzi vengono utilizzati internamente da IPv6 per richiedere indirizzi aggiuntivi utilizzando la configurazione automatica e per trovare altri computer sulla rete utilizzando il Neighbor Discovery Protocol.

Identificativo dell’Interfaccia IPv6

Mentre il prefisso determina in quale rete risiede un dispositivo, l’identificativo dell’interfaccia viene utilizzato per elencare i dispositivi all’interno di una rete. Gli ultimi 64 bit in un indirizzo IPv6 formano l’identificativo dell’interfaccia, proprio come gli ultimi bit di un indirizzo IPv4.

Quando un indirizzo IPv6 viene assegnato manualmente, l’identificativo dell’interfaccia viene impostato come parte dell’indirizzo. Quando si utilizza la configurazione automatica dell’indirizzo, l’identificativo dell’interfaccia viene scelto casualmente o derivato dall’indirizzo link layer del dispositivo. Questo fa apparire una variante dell’indirizzo di link layer all’interno dell’indirizzo IPv6.

Configurazione di Indirizzi IPv6

Come per IPv4, un indirizzo IPv6 può essere assegnato sia manualmente sia automaticamente. Tuttavia, IPv6 ha due diversi tipi di configurazione automatica, DHCPv6 e Stateless Address Autoconfiguration (SLAAC).

SLAAC è il più semplice dei due metodi automatizzati ed è integrato nello standard IPv6. I messaggi utilizzano il nuovo Neighbor Discovery Protocol che consente ai dispositivi di trovarsi e richiedere informazioni su una rete. Queste informazioni vengono inviate dai router e possono contenere prefissi IPv6 che i dispositivi possono utilizzare combinandoli con un identificativo di interfaccia di loro scelta, purché l’indirizzo risultante non sia ancora in uso. I dispositivi non forniscono feedback al router sugli indirizzi effettivi che hanno creato.

DHCPv6, invece, è il DHCP aggiornato per funzionare con le modifiche di IPv6. Consente un controllo più preciso delle informazioni fornite ai client, per esempio consentendo ogni volta la distribuzione dello stesso indirizzo allo stesso client e l’invio di più opzioni al client rispetto a SLAAC. Con DHCPv6, i client devono ottenere il consenso esplicito di un server DHCP per utilizzare un indirizzo.

Il metodo per assegnare manualmente un indirizzo IPv6 a un’interfaccia è lo stesso di IPv4:

$ sudo ip addr add 2001:db8:0:abcd:0:0:0:7334/64 dev ens33

Per verificare che l’operazione di assegnazione sia andata a buon fine viene utilizzato lo stesso comando ip addr show visto in precedenza:

$ ip addr show
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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
25: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.5/24 192.168.0.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::010c:29ff:fe33:3b25/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
    inet6 2001:db8:0:abcd::7334/64 scope global
       valid_lft forever preferred_lft forever

Qui possiamo vedere anche l’indirizzo link-local fe80::010c:29ff:fe33:3b25/64.

Come per IPv4, il comando ping può essere utilizzato per confermare la raggiungibilità dei dispositivi anche in IPv6:

$ ping 2001:db8:0:abcd::1
PING 2001:db8:0:abcd::1(2001:db8:0:abcd::1) 56 data bytes
64 bytes from 2001:db8:0:abcd::1: icmp_seq=1 ttl=64 time=0.030 ms
64 bytes from 2001:db8:0:abcd::1: icmp_seq=2 ttl=64 time=0.040 ms
64 bytes from 2001:db8:0:abcd::1: icmp_seq=3 ttl=64 time=0.072 ms

--- 2001:db8:0:abcd::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 43ms
rtt min/avg/max/mdev = 0.030/0.047/0.072/0.018 ms
Note

Su alcuni sistemi Linux, ping non supporta IPv6. Questi sistemi hanno invece un comando ping6 dedicato.

Per verificare nuovamente l’indirizzo link-local, puoi utilizzare ancora ping. Ma poiché tutte le interfacce usano il prefisso fe80::/64, l’interfaccia corretta deve essere specificata insieme all’indirizzo:

$ ping6 -c 1 fe80::010c:29ff:fe33:3b25%ens33
PING fe80::010c:29ff:fe33:3b25(fe80::010c:29ff:fe33:3b25) 56 data bytes
64 bytes from fe80::010c:29ff:fe33:3b25%ens33: icmp_seq=1 ttl=64 time=0.049 ms

--- fe80::010c:29ff:fe33:3b25 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.049/0.049/0.049/0.000 ms

DNS

Gli indirizzi IP sono difficili da ricordare e non sono sicuramente molto attraenti se stai cercando di commercializzare un servizio o un prodotto. È qui che entra in gioco il Domain Name System. Nella sua forma più semplice, il DNS è una rubrica telefonica distribuita che mappa nomi di dominio facili da ricordare, come example.com, su indirizzi IP. Quando, per esempio, un utente naviga su un sito Web, immette il nome host del DNS come parte dell’URL. Il browser web invia quindi il nome del DNS a qualsiasi resolver DNS sia stato configurato. Questo resolver DNS scopre a sua volta l’indirizzo correlato al dominio; quindi risponde con quell’indirizzo e il browser web cerca di raggiungere il server web a quell’indirizzo IP.

I resolver che Linux utilizza per cercare i dati di DNS si trovano nel file di configurazione /etc/resolv.conf:

$ cat /etc/resolv.conf
search lpi
nameserver 192.168.0.1

Quando il resolver esegue la ricerca di un nome, controlla prima il file /etc/hosts per vedere se contiene un indirizzo per il nome richiesto. Se lo trova, restituisce quell’indirizzo e non contatta il DNS. Ciò consente agli amministratori di rete di impostare la risoluzione dei nomi senza dover configurare un server DNS completo. Ogni riga in qesto file contiene un indirizzo IP seguito da uno o più nomi:

127.0.0.1          localhost.localdomain   localhost
::1                localhost.localdomain   localhost
192.168.0.10       server
2001:db8:0:abcd::f server

Per eseguire una ricerca nel DNS, usa il comando host:

$ host learning.lpi.org
learning.lpi.org has address 208.94.166.198

Puoi ottenere informazioni più dettagliate usando il comando dig:

$ dig learning.lpi.org
; <<>> DiG 9.14.3 <<>> learning.lpi.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21525
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 2ac55879b1adef30a93013705d3306d2128571347df8eadf (bad)
;; QUESTION SECTION:
;learning.lpi.org.		IN	A

;; ANSWER SECTION:
learning.lpi.org.	550	IN	A	208.94.166.198

;; Query time: 3 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Sat Jul 20 14:20:21 EST 2019
;; MSG SIZE  rcvd: 89

Qui possiamo anche vedere il nome dei tipi di record DNS, in questo caso A per IPv4.

Socket

Un socket è un punto finale di comunicazione per due programmi che parlano tra loro. Se il socket è connesso a una rete, i programmi possono essere eseguiti su diversi dispositivi, come un browser web in esecuzione sul laptop di un utente e un server web in esecuzione nel data center di un’azienda.

Esistono tre tipi principali di socket:

Socket Unix

Connettono processi in esecuzione sullo stesso dispositivo.

Socket UDP (User Datagram Protocol)

Connettono applicazioni utilizzando un protocollo veloce ma non robusto.

Socket TCP (Transmission Control Protocol)

Sono più affidabili dei socket UDP e, per esempio, confermano la ricezione dei dati.

I socket Unix possono solo connettere applicazioni in esecuzione sullo stesso dispositivo. Tuttavia, i socket TCP e UDP possono stabilire connessioni su una rete. TCP consente a un flusso di dati di arrivare sempre nell’ordine esatto in cui è stato inviato. UDP è più "invia e dimentica"; il pacchetto viene inviato, ma la sua consegna non è garantita. UDP, tuttavia, non ha l'overhead di TCP, rendendolo perfetto per applicazioni a bassa latenza come i videogiochi online.

Sia TCP sia UDP utilizzano delle porte per indirizzare più socket sullo stesso indirizzo IP. Mentre la porta di origine per una connessione è solitamente casuale, le porte di destinazione sono standardizzate per uno specifico servizio. HTTP, per esempio, è solitamente ospitato sulla porta 80, mentre HTTPS viene eseguito sulla porta 443. SSH, un protocollo per accedere in modo sicuro a un sistema Linux remoto, è in ascolto sulla porta 22.

Il comando ss consente a un amministratore di esaminare tutti i socket su un computer Linux. Mostra tutto: dall’indirizzo di origine, all’indirizzo di destinazione e al tipo. Una delle sue migliori caratteristiche è l’uso di filtri in modo che un utente possa monitorare i socket in qualsiasi stato di connessione desideri. ss può essere eseguito con un insieme di opzioni oltre che un’espressione di filtro per limitare le informazioni mostrate.

Quando viene eseguito senza alcuna opzione, il comando mostra un elenco di tutti i socket stabiliti. L’opzione -p include informazioni sul processo che utilizza ogni socket. L’opzione -s mostra un riepilogo dei socket. Ci sono molte altre opzioni disponibili per questo strumento, ma le ultime principali da ricordare sono -4 e -6 per restringere il campo di ricerca del protocollo IP rispettivamente a IPv4 o IPv6, -t e -u per consentire all’amministratore di selezionare i socket TCP o UDP, e -l per mostrare solo i socket che sono in attesa di nuove connessioni.

Il seguente comando, per esempio, elenca tutti i socket TCP attualmente in uso:

$ ss -t
State       Recv-Q  Send-Q    Local Address:Port      Peer Address:Port
ESTAB       0       0           192.168.0.5:49412      192.168.0.1:https
ESTAB       0       0           192.168.0.5:37616      192.168.0.1:https
ESTAB       0       0           192.168.0.5:40114      192.168.0.1:https
ESTAB       0       0           192.168.0.5:54948      192.168.0.1:imap
...

Esercizi Guidati

  1. A un ingegnere di rete viene chiesto di assegnare due indirizzi IP all’interfaccia ens33 di un host: un indirizzo IPv4 (192.168.10.10/24) e un indirizzo IPv6 (2001:0:0:abcd:0:8a2e:0370:7334/64). Quali comandi deve usare?

  2. Quali indirizzi del seguente elenco sono privati?

    192.168.10.1

    120.56.78.35

    172.16.57.47

    10.100.49.162

    200.120.42.6

  3. Quale voce dovresti aggiungere nel file hosts per assegnare 192.168.0.15 a example.com?

  4. Qual è l’effetto del seguente comando?

    sudo ip -6 route add default via 2001:db8:0:abcd::1

Esercizi Esplorativi

  1. Indica il tipo di record DNS utilizzato per le seguenti richieste:

    • Dati testuali

    • Ricerca inversa per indirizzo IP (Reverse IP address lookup)

    • Un dominio che non ha un proprio indirizzo e fa affidamento su un altro dominio per queste informazioni

    • Server di posta

  2. Linux prevede una funzionalità chiamata bridging: cosa fa e come può esserti utile?

  3. Quale opzione deve essere passata al comando ss per visualizzare tutti i socket UDP stabiliti?

  4. Quale comando mostra un riepilogo di tutti i socket in esecuzione su un sistema Linux?

  5. Il seguente output è stato generato dal comando dell’esercizio precedente. Quanti socket TCP e UDP sono attivi?

    Total: 978 (kernel 0)
    TCP:   4 (estab 0, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0
    
    Transport Total     IP        IPv6
    *	  0         -         -
    RAW	  1         0         1
    UDP	  7         5         2
    TCP	  4         3         1
    INET	  12        8         4
    FRAG	  0         0         0

Sommario

Questa lezione tratta il collegamento in rete di un computer Linux. Per prima cosa abbiamo imparato a conoscere i vari livelli di rete:

  • Il link layer che collega direttamente i dispositivi;

  • Il netwok layer che prevede il routing tra le reti e uno spazio di indirizzi globale;

  • L’application Layer in cui le applicazioni si connettono tra loro.

Abbiamo visto come IPv4 e IPv6 vengono utilizzati per indirizzare i singoli computer e come TCP e UDP enumerano i socket utilizzati dalle applicazioni per connettersi tra loro. Abbiamo anche appreso come viene utilizzato il DNS per risolvere i nomi in indirizzi IP.

Comandi utilizzati negli esercizi:

dig

Interroga il DNS e fornisce informazioni dettagliate sulle domande e sulle risposte.

host

Interroga il DNS e fornisce un output sintetico.

ip

Configura la rete su Linux, comprese le interfacce di rete, gli indirizzi e il routing.

ping

Testa la connettività di un dispositivo remoto.

ss

Mostra informazioni sui socket.

Risposte agli Esercizi Guidati

  1. A un ingegnere di rete viene chiesto di assegnare due indirizzi IP all’interfaccia ens33 di un host: un indirizzo IPv4 (192.168.10.10/24) e un indirizzo IPv6 (2001:0:0:abcd:0:8a2e:0370:7334/64). Quali comandi deve usare?

    sudo ip addr add 192.168.10.10/24 dev ens33
    sudo ip addr add 2001:0:0:abcd:0:8a2e:0370:7334/64 dev ens33
  2. Quali indirizzi del seguente elenco sono privati?

    192.168.10.1

    X

    120.56.78.35

    172.16.57.47

    X

    10.100.49.162

    X

    200.120.42.6

  3. Quale voce dovresti aggiungere nel file hosts per assegnare 192.168.0.15 a example.com?

    192.168.0.15  example.com
  4. Qual è l’effetto del seguente comando?

    sudo ip -6 route add default via 2001:db8:0:abcd::1

    Aggiunge una default route nella tabella di routing che invia tutto il traffico IPv6 al router con indirizzo interno 2001:db8:0:abcd::1.

Risposte agli Esercizi Esplorativi

  1. Indica il tipo di record DNS utilizzato per le seguenti richieste:

    • Dati testuali

      TXT

    • Ricerca inversa per indirizzo IP (Reverse IP address lookup)

      PTR

    • Un dominio che non ha un proprio indirizzo e fa affidamento su un altro dominio per queste informazioni

      CNAME

    • Server di posta

      MX

  2. Linux prevede una funzionalità chiamata bridging: cosa fa e come può esserti utile?

    Un bridge collega più interfacce di rete. Tutte le interfacce connesse a un bridge possono comunicare come se fossero connesse alla stessa rete link layer: tutti i dispositivi utilizzano indirizzi IP della stessa sottorete e non richiedono un router per connettersi tra loro.

  3. Quale opzione deve essere passata al comando ss per visualizzare tutti i socket UDP stabiliti?

    L’opzione -u mostra tutti i socket UDP stabiliti.

  4. Quale comando mostra un riepilogo di tutti i socket in esecuzione su un sistema Linux?

    Il comando ss -s mostra un riepilogo di tutti i socket.

  5. Il seguente output è stato generato dal comando dell’esercizio precedente. Quanti socket TCP e UDP sono attivi?

    Total: 978 (kernel 0)
    TCP:   4 (estab 0, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0
    
    Transport Total     IP        IPv6
    *	  0         -         -
    RAW	  1         0         1
    UDP	  7         5         2
    TCP	  4         3         1
    INET	  12        8         4
    FRAG	  0         0         0

    I socket TCP e UDP attivi sono 11.

Linux Professional Institute Inc. Tutti i diritti riservati. Visita il sito Learning Materials: https://learning.lpi.org
Quest'opera è sotto la licenza 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License'.

Prossima Lezione

5.1 Sicurezza di Base e Identificazione dei Tipi di Utente (5.1 Lezione 1)

Leggi la prossima Lezione

Linux Professional Institute Inc. Tutti i diritti riservati. Visita il sito Learning Materials: https://learning.lpi.org
Quest'opera è sotto la licenza 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License'.

LPI è una organizzazione non-profit.

© 2023 Linux Professional Institute (LPI) è lo standard di certificazione globale e l'organizzazione di supporto alla carriera per i Professionisti Open Source. Con più di 200,000 titolari di Certificazione, è il primo e il più grande ente di Certificazione Open Source e Linux vendor-neutral. LPI ha professionisti certificati in oltre 180 Paesi, offre i suoi Esami in più lingue e ha centinaia di Partner di formazione in tutto il mondo.

La nostra missione è promuovere l'uso dell'Open Source supportando le persone che vi lavorano.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contattaci
  • Privacy & Cookie Policy

Trovato un errore? Per favore scrivi a contattaci.

© 1999–2023 The Linux Professional Institute Inc. Tutti i diritti riservati.