iso udf
Transcript
iso udf
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 testuale presente 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 configurazione Anche sotto questo aspetto, linux is about choice: Fedora, Mandrivia, Debian, Ubuntu, RedHat, SuSe Knoppix, 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 necesari rmmod 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 Documentazione comando -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 rappresentati dalla 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) FileDescriptors Ogni 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 processi ps [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] pid invia 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 assegnamento echo $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 di dimensioni 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 ● cp [opzioni] sorgente destinazione Copia file o directory ● mv [opzioni] sorgente destinazione Sposta (rinomina) file o directory ● rm [opzioni] file ● mkdir [opzioni] directory Crea una directory ● rmdir [opzioni] directory Elimina una directory Cambia la directory corrente Rimuovi file o directory Visualizzare File Visualizza il contenuto di un file ● cat [opzioni] [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 ] device Smonta 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] dispositivo Verifica 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|others es: -rw-r-----: il proprietario legge e scrive, il gruppo legge, gli altri nessun accesso chown [-R][utente] file Assegna 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 un certo numero di criteri, come il nome, la data di creazione e la dimensione... ● locate filename Ricerca file o directory tramite il db costruito da Updatedb ● sort [opzioni] [file] Ordina le righe di un file ● diff nomefile1 nomefile2 confronto fra il contenuto di due file di testo. Utilizzato per creare una patch dei sorgenti. ● md5sum nomefile calcola un checksum standard, utile per verificare l'integrità e confrontare file di qualsiasi natura Archiviazione tar [opzioni] filearchivio files crea/scompatta un file archivio tar gzip [num] [opzioni] filename comprime 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 testuali echo [args] dalla riga di comando allo standard output uniq elimina le righe duplicate cut seleziona solo alcune “colonne” sed elaborazione testuale delle righe awk elaborazione testuale delle righe xargs 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 RPM rpm -U [opzioni] [pacchetti] Aggiorna pacchetti RPM rpm -e [opzioni] [pacchetti] Disinstalla pacchetti RPM rpm -q [opzioni] [pacchetti] Interroga pacchetti RPM rpm -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|down ip link set dev <interface> up|down abilita 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 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 primario nameserver 192.168.1.10 ; IP del DNS server secondario domain dominio.it ; Nome del dominio dove si trova l'host ● 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... diagnostica di rete verifica se un host è raggiungibile (usa ICMP) ● ping <host> ● traceroute <host> visualizza il percorso verso un host ● host, dig ● netstat , lsof -i (vedere le diverse opzioni) ● tcpdump, ethereal (wireshark) analizzatori del traffico di rete (sniffer) normalmente richiedono i permessi di root richiedono di mettere l'interfaccia in modo promiscuo non tutte le religioni lo permettono possono essere usati anche per visualizzare un file di pacchetti catturati in precedenza effettuano query DNS visualizza le connessioni attive 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 grafico componenti ● 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|udp and many more... iptables - targets -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 pacchetto Registra tramite syslog il matching del ● ● 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... NAT ● Nelle configurazioni di rete in cui interviene il NAT, è utile considerare il mondo diviso in due parti dal router NAT rete esterna rete interna ● ● ● ● ● connettività parziale (solo via NAT) nascosta dall'esterno (“general internet”) tipicamente indirizzi IP privati ● ● ● connettività completa visibile dall'esterno (“general internet”) tipicamente indirizzi IP pubblici i casi reali possono essere anche molto più complessi (es: livelli multipli di NAT) con iptables, il NAT è configurato nella tabella nat (-t nat) 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 ppp0 vengono 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…