Post on 23-Jul-2020
Linux - Introduzione
UNIX - Architettura• Un sistema operativo UNIX è composto da:• Il nucleo (Kernel): gestisce le risorse del calcolatore:
• Gestisce Processi, Utenti, Memoria• Driver: colloquio con le periferiche (schermo, tastiera, mouse,
dischi, interfacce di rete, scanner, stampanti...)• File system: l’insieme dei meccanismi base per l'organizzazione
dei supporti di memoria di massa in file.• Funzionalità di Rete
• Librerie di sistema: software per realizzare funzionalità di uso comune (shared libraries)
• UNIX Tools: una collezione di programmi con interfaccia testualepresente su quasi tutte le versioni di unix.
• La Shell: è il ‘Command line interpreter’ cioè interpreta i comandi dell’utente e li traduce in azioni da parte dei vari programmi di utilità(che usano il kernel). Rappresenta l’interfaccia fra utente e sistema.
• Applicativi specializzati
Linux• Linux è un kernel di sistema operativo• è una forma di unix, un membro di una complessa famiglia
di sistemi operativi che nasce nel 1969• è software libero, rilasciato sotto la licenza GPL
• il codice sorgente è pubblico• tutti hanno il diritto di leggerlo, modificarlo, distribuire le
versioni modificate (open source – scelta tecnica)• le versioni ridistribuite ricadono sotto la stessa licenza
(Copyleft – scelta politica)• gran parte del software di base che viene usato insieme a
linux è prodotto dal progetto GNU, con lo scopo “politico” di realizzare un sistema operativo completamente libero.
• Licenza GPL• Per questo un sistema operativo nel suo complesso è
(dovrbbe essere) chiamato GNU/Linux.
dal kernel al CD di installazione: le Distribuzioni
Linux è solo un kernel, per creare un ambiente di lavoro funzionante servono molti altri componenti
Si attinge principalmente (ma non solo) dal patrimonio di software libero.
Ogni programma è sviluppato indipendentemente, tipicamente distribuito come sorgenti c.
Una distribuzione linux è costituita da:● kernel● utilità di base (librerie, tools, ...)● Applicativi● Il tutto compilato (per i386, sparc…)● un sistema di gestione dei pacchetti● programmi di installazione e configurazioneAnche sotto questo aspetto, linux is about choice:Fedora, Mandrivia, Debian, Ubuntu, RedHat, SuSeKnoppix, dynebolic (live CD)
Il Kernel Linux● Il kernel Linux è Modulare, ovvero ha la capacità di
caricare/scaricare parti di codice (moduli) secondo necessità e richieste. modprobe nomemodulo carica un modulo e quelli necesarirmmod nomemodulo scarica un modulo (se possibile)
● In fase di compilazione è possibile decidere se ciascuna funzionalità deve essere inclusa nel kernel, compilata come modulo o omessa del tutto
● Ogni distribuzione fornisce un kenel precompilato, ma è sempre possibile (talvolta necessario) compilarne uno su misura
● Leggere il Version Number del kernel Linux (es: 2.6.12):– 2 - Il major number– 6 - Il minor number
Pari: kernel stable e pronto per sistemi in produzione; Dispari: kernel in development, da usare con cautela
– 12 – patch level
Documentazionecomando -h|--help help in linea
man <comando> (dovrebbe esistere per tutti i programmi)
info <command> (programmi GNU)
/usr/share/doc/<pacchetto>
/usr/doc/<pacchetto> Le directory dove risiedono le documentazioni per programmi specifici in diversi formati (txt,html,pdf etc..)
internet (google is your friend)
Utenti• Unix è un sistema operativo multi-utente. • Ogni utilizzo del sistema operativo è associato ad un
particolare utente (processi, file). • Ciascun utente ha un nome testuale (username) ed un numero
(UID), che viene utilizzato internamente al sistema operativo.• Esiste un “super-user” (“root”), preposto all’amministrazione
e alla supervisione del sistema. • Potere <-> Responsabilità• (rischio di perdita di dati o di produttività, privacy)
• L'accesso al sistema (login) si esegue tipicamente digitando user name e password.
• Ad ogni utente del sistema viene assegnata una directory di sua proprietà (HOME DIRECTORY). All’interno l’utente potràcreare tutti i files (e sottodirectory) che desidera.
File
● In unix, gli oggetti del sistema operativo sono rappresentatidalla metafora omogenea del file:
– Archivio di dati su disco– Connessione di rete– Canale di comunicazione (tastiera / schermo, stampante,
scanner)– Dispositivo (tastiera, disco, partizione, bus,…)
Processi● Ciascun programma viene eseguito in una struttura del
sistema operativo chiamata processo, caratterizzata da:
– Spazio di memoria (codice, stack, heap)
– File aperti (filedescriptors)
– utente che ha lanciato il processo
– priorità
● PID: identificativo numerico del processo
● per generare un processo, un altro processo deve usare fork (crea copia di un processo) ed exec (esegui un programma)
● I processi “discendono” tutti da init, che ha PID 1 e rimane sempre in esecuzione
● PPID: PID del processo padre
Stati di un processo● In un dato istante, è fisicamente in esecuzione un solo
processo (per processore)
● Lo stato di un processo può essere:
– R - running, il processo è in esecuzione;
– S - sleeping, il processo è in attesa (input dell'utente, conclusione di altri processi, CPU libera ecc..)
– Z - zombie, il processo è morto ed aspetta che il parent chieda un codice d'uscita.
– T – stoppato (ad esempio con ctrl-z, o da strace)
FileDescriptorsOgni programma lanciato ha per default 3 descrittori di file aperti:● standard input (stdin - file descriptor 0), è il canale attraverso il
quale il programma riceve i dati di ingresso (generalmente la tastiera).
● standard output (stdout - file descriptor 1), è il canale di uscita del risultato dell'elaborazione del programma, di solito il video.
● standard error (stderr - file descriptor 2), è dove il programma stampa eventuali errori durante l'esecuzione, di solito il video.
gestione dei processips [opzioni]
visualizza la lista dei processi attualmente presenti sul sistema
top [opzioni] visualizza la lista dei processi presenti sul sistema, in costante aggiornamento
kill -[signal] pidinvia un segnale ad un processo, principalmente utilizzato per "uccidere“, o meglio terminare, (SIGKILL) un processo
nohup <command> esegue un programma rendendolo immune da segnali, e anche alla chiusura del terminale
nice <priority> <command> modifica la priorità di un processo (numeri + bassi = priorità maggiore). solo root può assegnare priorità < 0
Terminale• Un terminale è un canale per interagire con il sistema
operativo in modalità testuale. Questa è la modalità più comune e più potente di utilizzo di un sistema unix.
• Diverse forme di terminale• Seriale (terminale seriale, o altro calcolatore con emulatore,
connesso a porta seriale)raramente usato, salvo sistemi embedded (e apparati di rete)
• virtuale (TTY): tipicamente 6 terminali virtuali sulla console di un sistema linux (ALT-n: n-esimo TTY)
• grafico: in ambiente grafico all'interno di un emulatore di terminale (xterm, rxvt, gnome-terminal...)
• remoto: accesso remoto ad un sistema (con telnet o ssh)• Un terminale può avere capacità grafiche più o meno ricche
• solo linea di comando/applicazioni a pieno schermo• In un terminale viene tipicamente eseguita una shell...
La shell● La shell o interprete dei comandi è un programma che serve ad
impartire comandi al sistema operativo.● Linux is about choice: Bash, [t]csh, ….● I comandi sono righe di testo inserite al prompt ($), che
vengono interpretate eseguite quando si preme invio.● La shell supporta variabili di ambiente
VAR=valore assegnamentoecho $VAR lettura
● Funzionalità ergonomiche: ● auto completion (TAB) su comandi, nomi di file, di variabli● history dei comandi (freccia su, ctrl-r per cercare nell'history)
● job control: ● mandare un programma in background (&)● Arrestare l’esecuzione di un programma (sospendere) (ctrl-z)● jobs lista dei programmi sospesi● bg manda un programma in background● fg riporta un programma in foreground
Redirezione● E' possibile redirezionare stdin, stout e sterr su un file
tramite gli operatori di redirezionamento:
● > redirige lo standard output di un comando su un file o dispositivo
● >> redirige l'output di un comando su un file o dispositivo, ma se il file esiste già i dati vengono aggiunti alla fine del file. Se il file non esiste viene creato
● < redirige lo standard input da un file o dispositivo
● 2> redirige lo standard error di un comando su un file o dispositivo
● | operatore pipe, concatena standard output e standard input di due programmi
File System● E' il componente del sistema operativo che si occupa di
organizzare i dati sui dispositivi di archiviazione● Due livelli di astrazione:
– Dal dispositivo a blocchi alla collezione di archivi didimensioni arbitrarie
– Spazio dei nomi gerarchico● Permessi e attributi● Choice: diversi tipi di filesystem
– Disco: ext2, ext3, reiserfs, xfs, vfat, ntfs, iso, udf,…– Virtuali: proc, sys, dev, tmpfs– Di rete: nfs, coda, smb/cifs
● Tutti i dispositivi in un unico albero di nomi– mount: collega lo spazio di nomi di un dispositivo
Gestire Directory & File● ls [opzioni] [path]
Elenca contenuto di una directory o file
● cd directory Cambia la directory corrente
● cp [opzioni] sorgente destinazioneCopia file o directory
● mv [opzioni] sorgente destinazione Sposta (rinomina) file o directory
● rm [opzioni] file Rimuovi file o directory
● mkdir [opzioni] directory Crea una directory
● rmdir [opzioni] directory Elimina una directory
Visualizzare File● cat [opzioni] [file] Visualizza il contenuto di un file
● less [file] Visualizza il contenuto di un file, pagina per pagina.
● tail [opzioni] file Visualizza l'ultima parte di un file
● head [opzioni] file Visualizza la prima parte di un file
● file [opzioni] file Visualizza il tipo di un file
● grep [opzioni] PATTERN [file]Elenca righe di un file che contengono il PATTERN specificato
● wc [opzioni] [file]Visualizza numero di byte, parole e righe in un file
Struttura File System● / Radice (root)
● /root Home dell'utente root
● /boot Contiene tutte le immagini del kernel e file indispensabili al bootstrap
● /etc Contiene i file di configurazione del sistema e dei programmi installati
● /home Contiene le home degli utenti tranne quella di root
● /usr Contiene binari, documentazione, librerie e sorgenti della maggior parte dei programmi (e i sorgenti del kernel)
● /var Conitiene tutti file che contengono informazioni dinamiche come log, pid file, directory di spool.
Struttura File System (2)● /proc File system virtuale. Contiene, come se fossero file e
directory, dati dinamici sul sistema e sui processi
● /dev Contiene i file per la gestione dei dispositivi sia a blocchi (hdd) che a carattere (tty) oltre a file speciali (/dev/null)
● /sbin Contiene comandi e programmi riservati a root ( altri comandi sono in /usr/sbin/ )
● /bin Contiene comandi e programmi base per tutti gli utenti (altri comandi sono in /usr/bin/ )
● /usr/local Contiene programmi installati localmente(senza usare gli strumenti della distribuzione)
Gestione dei File System● Molteplici dispositivi, ognuno con un filesystem (di diversi tipi).
● Un unico albero di directory per trovare i file.
mount -t [tipo fs] [opzioni] device dir Monta un file system su una directory
umount [ opzioni ] deviceSmonta un dispositivo (necessario prima di estrarre un dispositivo rimuovibile)
df [opzioni][file] Verifica lo spazio libero su ciascun filesystem
du [opzioni][file] Visualizza lo spazio occupato da file e directory
fsck [opzioni] dispositivoVerifica l'integrità e ripara il Filesystem
mkfs [opzioni] dispositivo Crea un Filesystem (formattazione)
Attributi E Permessi● Ogni file è di proprietà di un utente.
● Permessi: read|write|execute per user|group|otherses: -rw-r-----: il proprietario legge e scrive, il gruppo legge, gli altri nessun accesso
chown [-R][utente] fileAssegna un nuovo proprietario
chgrp [-R][gruppo] file Assegna un nuovo gruppo
chmod [-R] [modo] file Modifica i permessi sul file.
Ricerca e Confronto● find [path][expression]
Ricerca di file o directory in tutto il file system in base a uncerto numero di criteri, come il nome, la data di creazione e la dimensione...
● locate filenameRicerca file o directory tramite il db costruito da Updatedb
● sort [opzioni] [file] Ordina le righe di un file
● diff nomefile1 nomefile2confronto fra il contenuto di due file di testo. Utilizzato per creare una patch dei sorgenti.
● md5sum nomefilecalcola un checksum standard, utile per verificare l'integrità e confrontare file di qualsiasi natura
Archiviazionetar [opzioni] filearchivio files
crea/scompatta un file archivio tar
gzip [num] [opzioni] filenamecomprime file (ed archivi) in formato gz
gunzip [opzioni] filename.gz inverso di gzip
bzip2 [opzioni] filename comprime file (ed archivi) in formato bz2, con rapporto di compressione maggiore di gz
bunzip2 [opzioni] filename.bz2 inverso di gzip
zip [opzioni] filename Comprime file e archivi, è basato sull'algoritmo standard per PC pkzip, raramente si utilizza questo formato in ambiente linux e unix
unzip [opzioni] filename.zip Comando inverso di unzip
Tool testualiecho [args] dalla riga di comando allo standard outputuniq elimina le righe duplicatecut seleziona solo alcune “colonne”sed elaborazione testuale delle righeawk elaborazione testuale delle righexargs dallo standard output alla riga di comando● Tutti questi strumenti sono predisposti per lavorare in una
pipeline: leggere dati in input dallo standard input e scrivere l’output sullo standard output
● Per farlo si utilizza il carattere |, chiamato pipe.es: cat pippo.txt|grep paperino
shell scripting
● la shell definisce un linguaggio di programmazione● strutture di controllo● espressioni aritmetiche● array
● Una lista di comandi può essere salvata in un file per essere rieseguita (shell script)
● Usato per automatizzare compiti semplici, per la configurazione del sistema operativo
Un package manager: RPM● Scopo: aiutare nella gestione dei pacchetti installati e degli
aggiornamenti● Formato di archiviazione di pacchetti per distribuzione (programmi
precompilati)● Script di installazione/disinstallazione● Gestisce le dipendenze tra pacchetti installati● Database dei pacchetti installati● Usato da un gran numero di distribuzioni, derivate da RedHat
(Mandrake, Mandrivia, Fedora), SuSe... alternative: apt (debian), tgz (solo archivi senza metadati –Slackware)
rpm -i [opzioni] [pacchetti] Installa pacchetti RPMrpm -U [opzioni] [pacchetti] Aggiorna pacchetti RPMrpm -e [opzioni] [pacchetti] Disinstalla pacchetti RPMrpm -q [opzioni] [pacchetti] Interroga pacchetti RPMrpm -V [pacchetto] Verifica pacchetto RPM
Installare una applicazione● se è esiste, usare la versione nella distribuzione installata
(ma potrebbe essere la versione sbagliata, o mancare qualche opzione di compilazione...)
● installare dai sorgenti– scaricare il sorgente (tipicamente, un archivio .tgz)– scompattarlo: tar -zxvf package.tar.gz– cd package/, leggere file README, INSTALL e
seguire le istruzioni. tipicamente:– configurarlo per la propria piattaforma: ./configure
● potrebbero esserci opzioni da impostare:./configure --help
● potrebbe essere necessario installare altri pacchetti– compilare: make– installare: make install
debugging● leggere il manuale (era meglio farlo prima!)
● leggere i log di sistema (in /var/log)
● eseguire il programma in modalità debug (log sul terminale)
● cercare su internet i messaggi di errore
● strace comando traccia le chiamate di sistema e i segnali del programma specificato mentre lo esegue.
● ldd comando Stampa l'elenco delle librerie condivise utilizzate dal comando specificato
● lsof [opzioni] Elenca i file aperti. file normali, directory, file speciale a blocchi o caratteri, librerie, socket Internet, socket Unix domain...
Configurazione rete● devono esistere ed essere configurati i driver per i dispositivi
hardware usati per accedere a una rete (tipicamente moduli del kernel)
● per ciascun dispositivo di rete disponibile, il sistema operativo crea una interfaccia, ad esempio:
– eth0, eth1, ...: ethernet– ppp0, ppp1, ... : PPP (connessioni via modem, alcune
configurazioni ADSL, linee seriali)● a ciascuna interfaccia può essere assegnato uno o più
indirizzi IP● per ciascuna interfaccia configurata viene creata
automaticamente una rotta (route) verso la relativa sottorete● defalut route (verso il default gateway)
Configurare le interfacce● due sintassi alternative● ifconfig <interface> up|downip link set dev <interface> up|downabilita o disabilita una interfaccia
● ifconfig <interface> <address>ip address add <interface> <address>associa un indirizzo IP ad una interfaccia
● route add -net default gw <address>ip route add default via <address>imposta la default route
● route add -net <network> gw <address>ip route add <network> via <address>imposta una route specifica
configurare le interfacce con dhcp● dhcp assegna automaticamente la configurazione ad una
interfaccia chiedendola ad un apposito server
● il server deve essere attivo e raggiungibile
● occorre usare un client dhcp – ne esistono diversi:dhclient|pump|dhcpcd <interface>
● viene assegnato l'indirizzo IP, il default gw, il dns...
configurare il DNS● Risoluzione da nomi simbolici (www.uninsubria.it)
in indirizzi IP (193.206.179.145)
● in /etc/resolv.conf:nameserver 10.0.0.150 ; IP del DNS server primarionameserver 192.168.1.10 ; IP del DNS server secondario domain dominio.it ; Nome del dominio dove si trova l'host
diagnostica di rete
● ping <host> verifica se un host è raggiungibile (usa ICMP)
● traceroute <host> visualizza il percorso verso un host
● host, dig effettuano query DNS
● netstat , lsof -i visualizza le connessioni attive (vedere le diverse opzioni)
● tcpdump, ethereal (wireshark)analizzatori del traffico di rete (sniffer)normalmente richiedono i permessi di rootrichiedono di mettere l'interfaccia in modo promiscuo non tutte le religioni lo permettonopossono essere usati anche per visualizzare un file di pacchetticatturati in precedenza
Terminale remoto sicuro: SSH● Scopo: aprire un terminale per eseguire una shell o un’altra
applicazione su un altro host connesso via rete● Lo strumento classico è telnet
– Comunicazione in chiaro, insicuro● Oggi viene preferito ssh
– Comunicazione cifrata (protegge le password e i dati)– Verifica l’autenticità del server
ssh [user@]<host>
● Funziona solo con applicazioni ad interfaccia testuale● Permette di trasportare applicazioni X con un tunnel
Ambiente graficocomponenti
● Sever X: interazione con la scheda video
– offre primitive di basso livello: rettangoli, testo
● Client X: applicazione che vuole visualizare finestre e ricevere input dall'utente
● Window manger: è un particolare client X, che permette di far convivere diverse applicazioni, ciascun in una o più finestre
● Desktop Environment (gnome, KDE): ambiente integrato con pannelli, icone, temi grafici...
● Display Manager: esegue il login grafico
● Toolkit grafico (gtk, qt): librerie di primitive grafiche di livello più alto (controlli: tasti, menu, caselle di testo...)
iptables - firewall con linux● linux contiene strumenti avanzati di packet filter, che si
amministrano con iptables● un host linux può essere usato come router (inoltrare
pacchetti tra diverse interfacce). per abilitare questa funzione: echo 1 > /proc/sys/net/ipv4/ip_forward
● tabella filter– INPUT: pacchetti in ingresso verso l'host– OUTPUT: pacchetti in uscita dall'host– FORWARD: pacchetti in transito
● tabella nat (POSTROUTING, PREROUTING, OUTPUT)● tabella mangle (altre modifiche ai pacchetti) (INPUT, OUTPUT, FORWARD, POSTROUTING, PREROUTING)
● priorità e traffic shaping: tc
iptables – percorso dei pacchetti
pacchetti dalla rete
pacchetti verso la rete
iptables● ciascuna catena è una ACL: una sequenza di regole tipo
condizione/azione (TARGET). La catena viene attraversata fino a quando una condizione non è verificata
● opzioni di iptables:
-A catena regola Aggiunge una o più regole alla fine
-D catena regola Cancella una o più regole
-F [catena] Cancella tutte le regole o solo quelle della catena indicata
-L [catena] Elenca tutte le regole
-v con contatori
-P catena target Definisce il target di default per la catena indicata (policy della catena)
-N catena Crea una nuova catena definita dall'utente
iptables - condizioni-i [!] interfaccia[+] I pacchetti ricevuti in
entrata sull'interfaccia definita. Il + è una wildcard (es: eth+ per tutte le ethernet)
-o [!] interfaccia[+] Tutti i pacchetti in uscita sull'interfaccia specificata.
-p [!] protocollo I pacchetti che corrispono al protocollo definito: tcp, udp, icmp, all (default)
-s [!] indirizzo[/mask] I pacchetti che hanno l'IP sorgente specificato.
-d [!] indirizzo[/mask] I pacchetti che hanno l'IP e/o la porta di destinazione specificati.
-m tcp|udp –sport porta sorgente del protocollo tcp|udp
-m tcp|udp –dport porta destinazione tcp|udpand many more...
-j TARGET Salta al TARGET indicato o ad una catena definita dell'utente.
TARGET può essere:
● ACCEPT accetta il pacchetto
● DROP scarta il pacchetto
● LOG Registra tramite syslog il matching del pacchetto
● REJECT Elimina il pacchetto e, eventualmente, restituisce un messaggio ICMP (icmp-*-unreachable) configurabile.
● SNAT|DNAT Modifica l'IP sorgente|destinazione (nella catena POSTROUTING|PREROUTING della tabella nat)
and many more...
iptables - targets
NAT● Nelle configurazioni di rete in cui interviene il NAT, è utile
considerare il mondo diviso in due parti dal router NAT
rete interna
● connettività parziale (solo via NAT)
● nascosta dall'esterno (“general internet”)
● tipicamente indirizzi IP privati
● i casi reali possono essere anche molto più complessi (es: livelli multipli di NAT)
● con iptables, il NAT è configurato nella tabella nat (-t nat)
rete esterna
● connettività completa
● visibile dall'esterno (“general internet”)
● tipicamente indirizzi IP pubblici
iptables – Connection tracking● NAT usa il connection tracking per ricordarsi le traduzioni
effettuate e tradurre di conseguenza anche i pacchetti di risposta (modulo ip_conntrack)
● La tabella delle connessioni TCP e UDP è leggibile dallo pseudo-file /proc/net/ip_conntrack
● Alcuni protocolli applicativi trasmettono indirizzi IP e numeri di porta nel payload del pacchetto. Per farli funzionare con NAT sono necessarie estensioni del connection tracking per analizzare i pacchetti ed intercettare/modificare queste informazioni (ip_conntrack_ftp, ip_conntrack_irc, ip_conntrack_tftp, ip_conntrack_amanda).
iptables – Source NAT● Source NAT: si modifica l'indirizzo sorgente del pacchetto
● si agisce dopo il processo di routing: -A POSTROUTING
● target: -j SNAT opzioni:--to-source ipaddr[-ipaddr][:port-port]
● esempio: i pacchetti che provengono da 192.168.10.1 vengono modificati in modo da uscire con l'IP 192.168.20.1
● iptables -t nat -A POSTROUTING -s 192.168.10.1 -j SNAT --to-source 192.168.20.1
● La corrispondenza tra indirizzi IP funziona solo per le connessioni “uscenti” (in questo caso, provenienti da 192.168.10.1)
iptables – Source NAT (2)● esempio (2): i pacchetti che provengono dalla rete
192.168.10.0/24 vengono modificati in modo da uscire con gli IP 192.168.20.1-10
– iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 192.168.20.1-192.168.20.10
– 254 indirizzi IP vengono tradotti con 10 indirizzi IP: due host della rete 192.168.10.0/24 potrebbero venir presentati con lo stesso indirizzo della rete 192.168.20
– IP Overloading: i pacchetti di diverse connessioni vengono distinti sulla base dei numeri di porta TCP/UDP
● Il codice NAT modifica meno possibile il pacchetto, quindi se possibile preserva i numeri di porta. Questi vengono riscritti solo in caso di necessità.
iptables – Masquerading
● Il Masquerading è una forma di Source NAT, in cui non viene specificato l'indirizzo con cui mascherare le connessioni.
● Utile per connessioni dial-up o con IP “pubblico” dinamico.● viene usato l'indirizzo dell'interfaccia usata per far uscire i
pacchetti● esempio: i pacchetti che provengono dalla rete 192.168.10.0/24 ed escono dall'interfaccia ppp0vengono modificati in modo da uscire con l'IP dell'interfaccia
● iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ppp0 -j MASQUERADE
● anche questo è un caso di IP Overloading● questa configurazione è quella tipicamente usata per router
ADSL SOHO
iptables – Destination NAT● Destination NAT: si modifica l'indirizzo destinazione del
pacchetto● applicazioni:
– rendere accessibili dall'esterno alcuni host in una rete privata (port forwarding)
– “imbrogliare” le applicazioni (routing incompleto, server non configurabili)
● si agisce prima del processo di routing. – per un router che inoltra i pacchetti di altri host: -A PREROUTING
– per un host che vuole modificare i pacchetti generati dalle applicazioni locali: -A OUTPUT
● target: -j DNAT opzioni:--to-destination ipaddr[-ipaddr][:port-port]
Bridge software● Consente di mettere più interfacce nella stessa rete● Configurato con brctl
– Brctl addbr <bridge> crea un bridge– Brctl delbr <bridge> elimina un bridge– Brctl addif <bridge> <device> aggiungi una
interfaccia ad un bridge– Brctl show mostra la lista dei bridge configurati– Brctl showmacs <bridge> mostra la tabella di
inoltro del bridge● Il bridge creato è a sua volta una interfaccia, cui si può
assegnare un indirizzo, regole iptables…