Emulatore di reti - 2 - Primi Esercizi

UmlNetSym - Dischi

  • Per le prime fasi dell'avvio viene utilizzata la directory /etc/ di questo disco, poi viene montato il disco /etc/ (2) della singola macchina
  • Il sistema viene avviato dal disco 1, montato in sola lettura.

UmlNetSym - Dischi

  • Ogni macchina virtuale possiede tre dischi virutali:
    1. / = Sistema operativo Debian 6 (Squeeze) condiviso in sola lettura
    2. /etc/ = un disco di configurazione per ogni macchina in lettura/scrittura
    3. /root/ = una directory del sistema, diversa per ogni machina in lettura/scrittura

UmlNetSym - Disco di avvio

  • Il disco di avvio è montato in sola lettura ed è condiviso da tutte le macchine virtuali
  • E molto altro...

UmlNetSym - Disco di avvio

  • In questo disco sono intallati tutti i paccheti per:
    • Configurazione della rete in IPv4
    • Configurazione della rete in IPv6
    • Diagnostica di rete
    • Server e clinet DHCP
    • Server DNS
    • Server e client SSH
    • Server e client FTP
    • Server e client HTTP
    • Firewall IPTables
    • Vpn con OpenVPN

UML

  • E' una forma molto economica per realizzare una macchina virtuale Linux
  • In questo modo è possibile lanciarlo come programma utente, e quindi avere un sitema Linux che gira come un processo dentro ad un altro sistema Linux
  • Può montare più file che contangano un filesystem e partire da uno di questi
  • User Mode Linux (http://user-mode-linux.sourceforge.net/) è il porting del kernel di Linux per utilizzare i dispositivi di Linux come driver.

UML

  • Per finire, è possibile creare schede di rete. Possono essere connesse alla rete reale tramite l'interfaccia TUN/TAP oppure connesse ad un processo che funge da switch virtuale
  • E' anche in grado di montare una directroy della macchina ospite come fosse un disco.

UmlNetSym - Rete

  • Ogni macchina può avere più schede di rete
  • Ogni esercizio, oltre alle macchine virtuali necessarie, definirà anche gli switch necessari
  • Nell'esercizio, anche in assenza di un disco /etc preconfigurato, è possibile preconfigurare alcune o tutte le schede di rete.
  • Possono essere creati tanti switch virtuali separati quante sono le reti del nostro esercizio
  • Nell'esercizio è definito quale scheda di rete di ogni macchina si connette a quale switch

UmlNetSym - Disco /etc/

  • All'avvio i file di configurazione vengono presi dalla directory /etc contenuta nel disco di avvio
  • Tutta la configurazione di un sistema Linux è contantua nella directory /etc e nelle sue sottodirectory
  • Se non esiste già un disco /etc creato da una precedente esecuzione, ne viene copiato uno di default.
  • Ogni disco /etc occupa meno 8 MiB.
  • I dischi /etc vengono conservati da un'esecuzione all'altra (a meno che non chiediamo di cancellarli e ricostruirli) e quindi manterranno le nostre configurazioni.

UmlNetSym - Disco /etc/

  • Appena vengono montati i dischi supplementari il disco /etc della macchina virtuale prende il controllo.
  • Un esercizio può contere anche dei dischi /etc preconfigurati per alcune sue macchine

UmlNetSym

  • A partire da UML viene creato UmlNetSym http://sourceforge.net/projects/umlnetsym/ che è un sistema per creare esercitazioni di reti tramite macchine virtuali UML
  • Ogni macchina virtuale avrà a diposizione 96 MiB di RAM
  • Un esercizio prevede la creazione di un certo numero di macchine virtuali
  • Queste macchine vietuali saranno connesse da una serie di reti (switch) virtuali

UmlNetSym

  • Ogni esercizio conterrà anche lo schema della rete ed il testo dell'esercizio

UmlNetSym - Disco /root

  • La directory /root di ogni macchina virtuale è mappata su di una directory del sistema ospite
  • In questa directory potranno essere salvati dei file nella macchina virutale, che potranno essere poi recuperati una volta spente le macchine virtuali
  • La directory /root è la home directory dell'utente root, amministratore del sistema
  • E' anche possibile passare file alla macchina virtuale, copiandoli in questa directory.

UmlNetSym - Disco /root

  • Questa directory è utile per salvare risultati di test sulla rete e sui servizi, da esaminare poi, magari per correggere un esercizio.

UmlNetSym - La directory dell'esercizio

  • Per ogni esercizio, in questa directory viene creata uno sottodirectory con il nome dell'esercizio
  • Sempre in questa sottodirectory viene creata una sottodirectory <data>-<ora> per contenere le directory root di ogni macchina virtuale
  • Nella directory home dell'utente (~/) viene creata una directory umlnetsym che conterrà i dati di tutti gli esercizi.
  • In questa sottodirectory vengono create le immagini di /etc per tutte le macchine virtuali create, con il nome etc.<nome_macchina>

UmlNetSym - La directory dell'esercizio

  • Dentro a quest'ultima sottodirectory vengono create le sottodirectory che conterranno i file salvati dall'utente root dalle diverse macchne, ognuno con il nome della macchina.
  • Nella cartella dell'esercizio viene anche creato un archivio tgz conenente i file di tutte le directory root ed i dischi etc di tutte le macchine, con il nome <esercizio>-<utente>-<data>-<ora>.tgz, da poter consengare.

UmlNetSym - Esempio Directory

  • Ad esempio, l'esercizio 1 completo, eseguito alle 9:19 del 20/1/2014 produrrà:
    • ~ (dir) Home directory dell'utente
      • umlnetsim (dir)
        • esercizio1 (dir) directory dell'esercizio 1
          • 20140120-0919 (dir) directory dell'esecuzione delle 9:19 del 20/1/2014
            • m1 (dir) directory /root della macchina m1
            • m2 (dir) directory /root della macchina m2
              • host.txt (file) risultato del comando host server.testnet.org > host.txt
              • hostr.txt (file) risultato del comando host ip_della_nostra_macchina > hostr.txt
              • ifconfig.txt (file) risultato del comando ifconfig > ifconfig.txt
              • ping.txt (file) risultato del comando ping -c 2 192.168.4.1 > ping.txt
              • route.txt (file) risultato del comando route -n > route.txt
              • tcpdump.txt (file) risultato del comando tcpdump -c 10 > tcpdump.txt & ping -c 10 192.168.4.1
          • esercizio1-salvi-20140120-0919.tgz (file) archivio della soluzione
          • etc.m1 (file) immagine disco etc della macchina m1
          • etc.m2 (file) immagine disco etc della macchina m2

Esercizio 5 - Configurazione del router

  • In questo caso configureremo il routing (o meglio il server per al sua funzione di router)
  • L'esercizio si scrica da http://www.salvi.mn.it/stefano/corsi/umlnetsym/umlnetsym_1/esercizio5.umlnz
  • Come prima faremo da riga di comando la configurazione delle interfacce (questa volta due e non una) e della rotta statica per il client-interno
  • Dal client-esterno controlliamo la connettività verso le interfacce del server e verso le maccine interne.

Esercizio 5 - Configurazione del router

  • Per abilitare l'instradamento (forwarding) dei pacchetti dovremo modificare un parametro del kernel. Possiamo farlo scrivendo 1 nel file virtuale /proc/sys/net/ipv4/ip_forward
  • Scopriamo che tutte le intercacce del server sono raggiungibili, ma le reti interne no. Questo deriva da fatto che di default il server non instrada pacchetti.
  • Per finire renderemo questa configurazione permanente modificando i file come nell'esercizio precedente

Esercizio 2 - Configurazione statica manuale

  • Scopo dell'esercizio è quello di configurare manualmente una macchina Linux.
  • L'esercizio si scrica da http://www.salvi.mn.it/stefano/corsi/umlnetsym/umlnetsym_1/esercizio2.umlnz
  • Dovremo impostare il default gateway
  • Dovremo impostare l'IP e la maschera di rete per l'interfaccia eth0
  • Dovremo configurare la risoluzione dei nomi tramite DNS
  • Modificheremo il file /etc/resolv.conf

Esercizio 2 - Configurazione statica manuale

  • Dovremo impostare l' hostname
  • Utilizzeremo i comandi ifconfig, route ed hostname
  • Utilizzeremo il comando man per conoscere i parametri da utilizzare e un editor tra vi, ne, nano o mc

Esercizio 3 - Salvataggio configurazione

  • L'esercizio si scrica da http://www.salvi.mn.it/stefano/corsi/umlnetsym/umlnetsym_1/esercizio3.umlnz
  • Scopo dell'esercizio è di creare una configurazione permanente della macchina, che venga ricaricata al riavvio.
  • In questo caso configureremo IP, maschera, default gateway e DNS.
  • Non modificheremo il nome host, in quanto questo viene sovrascritto all'avvio della macchina con quello configurato nell'esercizio.

Esercizio 3 - Salvataggio configurazione

  • Dovremo questa volta modificare /etc/resolv.conf, come nell'esercizio precedente, ed il file /etc/network/interfaces

Esercizio 1 - salvataggio risultati

  • Il Server contiene già un server DHCP ed un DNS configurati, il Client è impostato come client DHCP, quindi è automaticamente configurato
  • Vengono create due macchine virtuali, Server e Client, connesse da una rete
  • L'esercizio si scrica da http://www.salvi.mn.it/stefano/corsi/umlnetsym/umlnetsym_1/esercizio1.umlnz
  • Scopo dell'esercizio è prendere confidenza con i metodi per salvare i risultati di un'esercizio

Esercizio 1 - salvataggio risultati

  • Potremo poi verificare il risultato nei file lasciati nella directory dell'esercizio ~/esercizio1/<data>-<ora>/m2/.
  • Dovremo loggarci nel Client con utente root, senza password e dare i comandi di diagnostica di rete indicati nel testo dell'esercizio.

Esercizio 4 - tabella di routing nel client

  • In questo esercizio abbiamo una rete più complessa, con due router.
  • Dovremo aggiungere una rotta statica per la seconda rete nella nostra tabella di routing.
  • Per finire aggiungeremo la rotta statica nel file /etc/network/interfaces aggiungendo, tra i parametri dell'intefaccia eth0, una riga conenente up seguito dal comando route (utilizzando il percorso completo /sbin/route) precedentemente dato a mano.
  • Poi potremo aggiungere la rotta a mano utilizzando il comando route

Esercizio 4 - tabella di routing nel client

[any material that should appear in print but not on the slide]