Sei sulla pagina 1di 9

Configurazione di una Rete

Marionnet

Su Marionnet quando si collegano due macchine bisogna fare attenzione alla tipologia dei cavi
utilizzati, esistono due tipologie di cavi:
§ Crossover
I "cavi incrociati" (crossover) sono utilizzati per le connessioni fra dispositivi di rete dello stesso
livello dello stack.
Ad es: Switch↔Switch, Host↔Host
§ Straight
I "cavi dritti" (straight) sono utilizzati per le connessioni fra dispositivi di livello differente.
Ad es: Switch↔Host

1
Configurazione di una Rete
Configurazione Permanente
Per configurare permanentemente le Interfacce di Rete bisogna memorizzare la configurazione
delle interfacce in /etc/network/interfaces.
Nel caso il servizio NetworkManager sia in esecuzione si utilizza il tool nmcli, questo
sovrascrive le regole presenti in /etc/network/interfaces. È possibile controllare se il
servizio NetworkManager tramite l'utilizzo del seguente comando:
$ pgrep -l network
È anche possibile utilizzare file di configurazione indipendenti in /etc/network/interfaces.d
(includendoli successivamente all'interno del file interfaces tramite la direttiva source).
$ nano /etc/network/interfaces
source-directory /etc/network/interfaces.d

Si descrivono di seguito gli elementi di configurazione della direttiva iface all'interno del file
/etc/network/interfaces per la configurazione di un Interfaccia di Rete:
Modalità
dhcp Inizializzazione dell'Interfaccia in modo automatico col protocollo DHCP
loopback Interfaccia locale (127.0.0.1)
static Seguono parametri per configurare l'interfaccia

Configurazione Statica dell'Interfaccia


address Indirizzo IP dell'interfaccia (192.168.X.Y)
netmask 255.255.255.0
network Indirizzo della rete (192.168.X.0)
broadcast Indirizzo di broadcast (192.168.X.255)
gateway Default gateway, da utilizzare nel caso la Configurazione di Rete lo richieda

Esempio:
Dato il seguente schema di rete, composto da due Host h1 e h2 collegati tramite uno Switch S1.

Il file interfaces dell'Host H1 avrà le seguenti righe di configurazione:


$ nano /etc/network/interfaces

auto eth0
iface eth0 inet static
address 192.168.1.1

2
Configurazione di una Rete
Applicazione delle Modifiche
All'avvio del sistema, se la direttiva auto non è presente nei file di configurazione opportuni,
l'interfaccia di rete risulterà spenta. Per attivare l'interfaccia, utilizzando le configurazioni dei file di
configurazione, si utilizzano i comandi ifup e ifdown:
$ ifdown <iface> ← Disattiva l'interfaccia
$ ifup <iface> ← Attiva l'interfaccia
Si tenga in considerazione che:
§ L'opzione -a permette di agire su tutte le interfacce configurate.
§ In caso di errori nei file di configurazione, il comando ifup fallirà.
Esempio:
Disattiva l'interfaccia eth0
$ ifdown eth0
Attiva l'interfaccia eth0
$ ifup eth0
Disattiva e Riattiva l'interfaccia eth0
$ ifdown eth0 && ifup eth0

Consultare Configurazione Interfacce


Per consultare le interfacce attualmente configurate su una macchina è possibile usare il comando
ifconfig, se non si specifica nessuna interfaccia questo mostra le interfacce attualmente attive.
§ Con l'utilizzo dell'opzione -a vengono visualizzate tutte le interfacce, anche quelle non attive
§ È possibile consultare la configurazione di una determinata interfaccia specificandone il nome
$ ifconfig [-a] [<iface>]
Un comando alternativo è il seguente, facente parte della suite iproute2:
$ ip addr show [dev <name>]

NOTA:
Quando si controlla la configurazione di un'interfaccia (così come di qualsiasi altra configurazione),
vanno utilizzati prima tutti i comandi e mezzi necessari tramite CLI e solo alla fine si controlla
direttamente il file di configurazione.

3
Configurazione di una Rete
Test Connessione
Per verificare la connettività fra due Host esistono diverse possibilità che sfruttano diversi
protocolli ai vari livelli dello stack TCP/IP.

Ping
Il metodo più diffuso e conosciuto è quello dell'utilizzo del comando ping, che utilizza il
protocollo di supporto ICMP, quindi, di default si basa sul Livello-3.
Il comando ping, di defualt, invia una successione di pacchetti ICMP ECHO_REQUEST e
attende la relativa risposta ECHO_REPLY, misurando il tempo che intercorre tra l’invio e la
ricezione di ogni pacchetto per poi riporta semplici statistiche. L’indirizzo localhost viene
risolto in un indirizzo IP normale che dall’output è 127.0.0.1
$ ping <ip-addr>

Esempio:
Testare la connessione tra H1 e H2 (192.168.1.2) tramite ping
H1$ ping 192.168.1.2

Arping
Un altro tool disponibile su Linux è arping, che verifica la presenza di un indirizzo IP a Livello-2
(H2N) per mezzo di richieste ARP. Il protocollo ARP agisce a Livello-2, quindi il comando arping
permette di raggiungere solo gli Host che fanno parte dello stesso dominio di broadcast.
$ arping [-0] [-i <iface>] {-B,<ip-addr>}
Il comando arping, di default, invia una successione di richieste ARP (in broadcast) per un
determinato indirizzo IP. Funziona anche senza avere configurato l'indirizzo IP dell'interfaccia, ma
l'interfaccia deve comunque essere attiva (in questo caso utilizzare il parametro opzionale -0).

Alcune Opzioni
-0 Specifica di inviare un pacchetto ARP di tipo "who-has" (richiesta di indirizzo MAC)
-B Esegue ARP cercando di risolvere l'indirizzo IP 255.255.255.255
Forza l'utilizzo di un'interfaccia di rete specificata, senza questa opzione, arping cerca
-i
di "indovinare" la configurazione delle interfacce

Esempio:
Testare la connessione tra H1 e H2 (192.168.1.2) tramite arping
H1$ ping -i eth0 192.168.1.2

4
Configurazione di una Rete
Se qualcosa non funziona non controllare subito il file di configurazione delle interfacce, ma
utilizzare i comandi opportuni per verificare lo stato attuale del sistema e dopo aver verificato qual
è lo stato attuale del sistema si va a cercare cosa è stato a causare l'errore.

Correzione Errori di Configurazione


In caso di errori di configurazione, le direttive ifup e ifdown potrebbero non riuscire ad attivare
e disattivare correttamente le interfacce. In certe situazioni potremmo non essere in grado né di
attivare né di disattivare un'interfaccia, perché questa è in uno stato inconsistente!
Workflow Suggerito
ifup → ERRORE
1. Step:
Controllare nella configurazione dell'interfaccia se l'interfaccia è parzialmente configurata, è
probabile che non riusciremo a disattivarla utilizzando ifdown.
2. Step:
Deconfigurare l'interfaccia (rimuovere gli indirizzi assegnati).
3. Step:
ifdown (o disattivare interfaccia con altro comando).
4. Step:
Correzione configurazione.
5. Step:
a. ifup
Oppure:
b. Configurazione Temporanea:
verifichiamo se la nostra configurazione introduce dei conflitti utilizzando i comandi di
configurazione temporanea.

Riavvio Servizi di Rete


In caso di conflitti critici è possibile riavviare i Servizi di Rete mediante l'ausilio del comando:
$ service networking restart
Durante il riavvio, il sistema eseguirà tutte le operazioni svolte durante la fase di boot del sistema,
inclusa la lettura dei file di configurazione. Se ci fossero degli errori nei file di configurazione,
potremmo ottenere un sistema inconsistente anche dopo il riavvio dei servizi. In questi casi, ci
sono due opzioni principali:
1. Rimuovere la direttiva auto, all'interno del file di configurazione, per attivare manualmente le
interfacce e verificare passo-passo il loro comportamento. Per attivazione/disattivazione
dell'interfaccia di rete senza leggere alcun file di configurazione:
$ ifconfig <iface> {up,down}
Oppure:
$ ip link set dev <iface> {up,down}
2. Utilizzare dei comandi che non consultino i file di configurazione incriminati.
Per sistemi che utilizzano systemd, assente nelle macchine UML:
$ systemctl restart networking

5
Configurazione di una Rete
Configurazione Temporanea
I comandi ifconfig e ip possono essere utilizzati per configurare le interfacce di rete senza
utilizzare alcun file. In questo caso, la configurazione sarà temporanea e sarà persa al riavvio della
macchina. La sintassi per la configurazione di un indirizzo IP (Sintassi Semplificata) è la seguente:
$ ifconfig <iface> <ip-address> [up]
Oppure:
$ ip addr {add,change,replace} dev <iface> <ip-address>
Il comando ip è stato pensato per gestire facilmente diversi indirizzi IP associati alla stessa
interfaccia di rete. Per questo motivo è necessario scegliere sempre l'azione opportuna (add,
change, replace). Il comando ip non configura automaticamente la subnet in base alla classe
dell'indirizzo configurato.

Deconfigurare un'Interfaccia
Per rimuovere l'assegnazione di un indirizzo utilizzare:
$ ifconfig <iface> 0
Oppure:
$ ip addr del <ip-address> dev <iface>

NOTA:
Anche in questo caso, ip è pensato per gestire molteplici indirizzi assegnati alla stessa Interfaccia
di Rete, motivo per cui è necessario specificare l'indirizzo che si vuole rimuovere.

NOTE sul Corso:


• In questo corso utilizzeremo il sistema ifupdown per la configurazione delle reti, gestito
tramite file di configurazione interfaces per le configurazioni permanenti
- Sono sistemi formalmente deprecati, ma de-facto ancora presenti su larga parte dei sistemi
Linux – e ricevono ancora aggiornamenti
• Come alternativa, a volte vedremo la più moderna suite iproute2
- Il comando ip fa parte di questa suite
• Non utilizzeremo NetworkManager (non installato nelle macchine UML per evitare conflitti di
sorta), sistema di gestione omni-presente sulle distribuzioni desktop.
- Conosciuto solitamente per la sua interfaccia grafica (e.g., Gnome), ma gestibile da linea di
comando tramite il comando nmcli - anche su sistemi server – per configurazioni
complesse (e.g., failover, vpn, proxy)
• Altri sistemi per la configurazione di rete noti (Linux):
- Network-scripts (Red-hat, CentOS, ...), connman (Linux embedded), systemd-networkd
(presente con systemd), netplan (Ubuntu server)

6
Configurazione di una Rete
Configurazione di Rete (2 Interfacce)
Collegare in rete due nodi tramite uno switch.

Far comunicare i due nodi utilizzando gli indirizzi IP e gli Hostname mostrati in figura.

Soluzione:
Marionnet
1. Machine: h1, h2
2. Switch: S1
3. Straight cable: d1 [h1 to S1], d2 [S1 to h2]
§ Then press the [Start all] button.

H1 Terminal
$ nano /etc/network/interfaces ← Configurazione dell'interfaccia eth0 tramite file
auto eth0
iface eth0 inet static
address 192.168.1.1
$ ifup eth0 ← Attivazione dell'interfaccia eth0
$ ifconfig eth0 ← Stampa la configurazione attuale dell'interfaccia eth0, se attiva
Oppure:
$ ip addr show eth0

H2 Terminal
$ nano /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.2
$ ifup eth0
$ ifconfig eth0
$ ping 192.168.1.1

Test Connessione su H1
$ ping 192.168.1.2 ← Verifica della connessione con l'Host h2
Oppure:
$ arping -i eth0 192.168.1.2

7
Configurazione di una Rete
Configurazione di Rete (3 Interfacce)
Provare ad aggiungere un'interfaccia di rete ad h1:
- Lasciare scollegata l'interfaccia
- Configurare un indirizzo IP (192.168.2.1)
- Cercare di risolvere il nuovo indirizzo assegnato tramite arping da h2

Soluzione:
Marionnet
§ Press the [Shutdown all] button.
1. Machine > Modify > h1 > Ethernet cards = 2
§ Then press the [Start all] button.

H1 Terminal
$ ifdown eth0 ← Disattivazione dell'interfaccia eth0
$ nano /etc/network/interfaces ← Configurazione dell'interfaccia eth1 tramite file
auto eth0
iface eth0 inet static
address 192.168.1.1

auto eth1
iface eth1 inet static
address 192.168.2.1
$ ifup eth0 eth1 ← Attivazione delle interfaccie eth0 e eth1

Test Connessione su H2
$ arping -i eth0 192.168.2.1 ← Verifica della connessione con l'Host h1 (eth1)

NOTA:
Ethernet card 1: eth0
Ethernet card 2: eth1

8
Configurazione di una Rete
Configurazione di Rete (3 Interfacce + 2 Switch)
Provare ora collegando la nuova interfaccia allo stesso switch (o a un secondo switch collegato al
primo, per ottenere uno schema migliore in Marionnet):
- Cercare di risolvere il nuovo indirizzo assegnato tramite arping da h2

Soluzione:
Marionnet
§ Press the [Shutdown all] button.
1. Switch: S2
2. Straight cable: d3 [h1 to S2], d4 [S2 to S1]
§ Then press the [Start all] button.

Test Connessione su H2
$ arping -i eth0 192.168.2.1

Potrebbero piacerti anche