fwbuilder tra questi è senza dubbio uno dei migliori.
		iptables e ip6tables. La differenza risiede nel fatto che il primo agisce sulle reti IPv4, il secondo su quelle IPv6. Poiché entrambi i protocolli di rete coesisteranno probabilmente per molti anni, entrambi dovranno essere utilizzati in parallelo.
		filter riguarda le regole di filtraggio (accettare, rifiutare o ignorare un pacchetto);
					nat riguarda la traduzione di indirizzi e porte di origine o di destinazione dei pacchetti; da notare che questa tabella esiste solo per l'IPv4;
					mangle riguarda altre trasformazioni sui pacchetti IP (inclusi il campo e le opzioni del ToS: Type of Service);
					raw permette altre modifiche manuali sui pacchetti prima che giungano al sistema di monitoraggio delle connessioni.
					filter contiene tre catene standard:
			INPUT: riguarda i pacchetti che hanno come destinazione il firewall stesso;
					OUTPUT: riguarda i pacchetti emessi dal firewall;
					FORWARD: riguarda i pacchetti che transitano attraverso il firewall (che non è né la sorgente, né la destinazione).
					nat contiene tre catene standard:
			PREROUTING: per modificare i pacchetti non appena arrivano;
					POSTROUTING: per modificare i pacchetti quando sono pronti per essere spediti;
					OUTPUT: per modificare i pacchetti generati dal firewall stesso.
					-j dei comandi) all'azione specificata. Sono stati standardizzati i comportamenti più comuni ed esistono azioni dedicate per ognuno. Intraprendere una di queste azioni standard interrompe l'avanzamento nella catena, dato che il destino del pacchetto è già stato deciso (salvo l'eccezione descritta in seguito):
			ACCEPT: permette al pacchetto di continuare per la sua strada;
					REJECT: rifiuta il pacchetto con un pacchetto di errore ICMP (l'opzione --reject-with tipo di iptables permette di selezionare il tipo di errore);
					DROP: elimina (ignora) il pacchetto;
					LOG: registra (via syslogd) un messaggio con la descrizione del pacchetto; da notare che questa azione non interrompe l'elaborazione, e l'esecuzione della catena prosegue con la regola successiva, ed è per questo che per registrare i pacchetti rifiutati è necessario usare insieme una regola LOG e una REJECT o DROP;
					ULOG: registra un messaggio via ulogd, che può essere maggiormente personalizzato ed è più efficiente di syslogd per analizzare una grande mole di messaggi; da notare che questa azione, come «LOG», anch'essa fa proseguire l'elaborazione con la regola successiva nella catena corrente;
					nome_catena: salta alla catena specificata ed elabora le relative regole;
					RETURN: interrompe l'elaborazione della catena corrente, e ritorna alla catena chiamante; nel caso in cui la catena corrente sia standard, non esiste alcuna catena chiamante, perciò viene eseguita l'azione predefinita (specificata dall'opzione -P di iptables);
					SNAT (solo nella tabella nat, quindi IPv4): applica il Sorgente NAT (opzioni ulteriori descrivono l'esatta modifica da applicare);
					DNAT (solo nella tabella nat, quindi IPv4): applica la Destinazione NAT (opzioni ulteriori descrivono l'esatta modifica da applicare);
					MASQUERADE (solo nella tabella nat, quindi IPv4): applica il mascheramento (caso speciale di Sorgente NAT);
					REDIRECT (solo nella tabella nat, quindi IPv4): reinstrada un pacchetto verso una data porta dello stesso firewall; può essere usato per creare un proxy trasparente alla rete che funziona senza necessità di configurazioni lato client, dato che il client pensa di connettersi al destinatario mentre le comunicazioni in realtà attraversano il proxy.
					mangle, esulano dagli scopi di questo libro. Una lista integrale si ottiene con iptables(8) e ip6tables(8).
			iptables e ip6tables permettono la manipolazione di tabelle, catene e regole. L'opzione -t tabella individua su quale tabella vanno ad operare (filter è la predefinita).
			-N catena crea una nuova catena. -X catena cancella una catena vuota e non usata. -A catena regola aggiunge una regola in coda ad una catena. -I catena numero_regola regola inserisce una regola prima della regola numero numero_regola. -D catena numero_regola (oppure -D catena regola) cancella una regola in una catena; la prima sintassi identifica la regola da rimuovere in base al suo numero, mentre la seconda la identifica in base al suo contenuto. -F catena svuota una catena (rimuove tutte le sue regole); se non è specificata alcuna catena, vengono rimosse tutte le regole dalla tabella. -L catena elenca le regole nella catena. Infine, l'opzione -P catena azione definisce l'azione predefinita, o «linea guida», per una data catena; da notare che solo le catene standard possono avere una «linea guida».
				condizioni -j azione opzioni_azione-p protocollo verifica il campo protocollo del pacchetto IP. I valori più usati sono tcp, udp, icmp e icmpv6. Anteporre un punto esclamativo alla condizione la nega, facendola corrispondere a «qualunque pacchetto con un protocollo differente da quello specificato». Questa meccanismo di negazione non è specifico solo per l'opzione -p, ma può essere utilizzato anche per tutte le altre condizioni.
				-s indirizzo oppure -s rete/maschera verifica l'indirizzo sorgente del pacchetto. Ugualmente, -d indirizzo oppure -d rete/maschera verifica l'indirizzo destinazione.
				-i interfaccia seleziona i pacchetti provenienti dalla data interfaccia di rete. -o interfaccia seleziona quelli uscenti da una specifica interfaccia.
				-p tcp può essere raffinata con ulteriori condizioni sulle porte TCP, con clausole tipo --source-port porta e --destination-port porta.
				--state stato verifica lo stato di un pacchetto in una connessione (questa richiede il modulo del kernel ipt_conntrack, per il monitoraggio delle connessioni). Lo stato NEW descrive un pacchetto che instaura una nuova connessione; ESTABLISHED descrive i pacchetti appartenenti ad una connessione già in essere, e RELATED descrive i pacchetti che instaurano una connessione correlata con una già esistente (che è utile per le connessioni ftp-data in modalità «attiva» del protocollo FTP).
				LOG, per esempio, ha le seguenti opzioni:
				--log-priority, con valore predefinito warning, indica la priorità dei messaggi di syslog.
						--log-prefix permette l'inserimento di un prefisso di testo per differenziare i messaggi di log;
						--log-tcp-sequence, --log-tcp-options e --log-ip-options indicano dati ulteriori da integrare nel messaggio: rispettivamente, il numero di sequenza TCP, opzioni TCP e opzioni IP.
						DNAT (disponibile solo per IPv4) prevede l'opzione --to-destination indirizzo:porta per indicare i nuovi indirizzo IP e/o porta di destinazione. Così pure SNAT prevede --to-source indirizzo:porta per indicare i nuovi indirizzo IP e/o porta di origine.
				REDIRECT (disponibile solo per IPv4) prevede l'opzione --to-ports porta/e per indicare la porta, o l'intervallo di porte, dove i pacchetti vengono reindirizzati.
				iptables/ip6tables. Digitare questi comandi manualmente può essere noioso, perciò sono solitamente memorizzati in uno script in modo tale che ad ogni avvio della macchina venga richiamata automaticamente la stessa configurazione. Questo script può essere scritto a mano, ma può essere interessante prepararlo con uno strumento di alto livello quale fwbuilder.
			fwbuilder traduca le regole in base con gli indirizzi assegnati agli oggetti.
			fwbuilder può generare uno script che configura il firewall in base alle regole che sono state definite. La sua architettura modulare gli conferisce l'abilità di generare script utilizzabili su sistemi differenti (iptables per Linux 2.4/2.6, ipf per FreeBSD e pf per OpenBSD).
			#aptitude install fwbuilder
/etc/ppp/ip-up.d/0iptables (da notare che sono presi in considerazione solo i file senza punti nel nome). Il firewall viene in questo modo ricreato ogni volta che si instaura la connessione PPP.
			up del file /etc/network/interfaces. Nel seguente esempio, lo script è memorizzato in /usr/local/etc/arrakis.fw.
			Esempio 14.1. File interfaces che richiama lo script del firewall
auto eth0
iface eth0 inet static
    address 192.168.0.1
    network 192.168.0.0
    netmask 255.255.255.0
    broadcast 192.168.0.255
    up /usr/local/etc/arrakis.fw