Capitolo 5. Impostazione della rete

# Capitolo 5. Impostazione della rete

| Suggerimento
Per una guida moderna sull'uso della rete specifica per Debian, leggere The Debian Administrator's Handbook — Configuring the Network.

| Suggerimento
In systemd, si può usare networkd per gestire il le reti. Vedere `systemd-networkd`(8).

## 5.1. L'infrastruttura base di rete

In questa sezione viene descritta in breve l'infrastruttura base di rete in un sistema Debian moderno.

Tabella 5.1. Elenco degli strumenti di configurazione della rete

pacchetto | popcon | dimensione | tipo | descrizione
--- | --- | --- | --- | ---
`network-manager` | V:421, I:484 | 7805 | config::NM | NetworkManager (demone): gestisce la rete automaticamente
`network-manager-gnome` | V:53, I:197 | 18 | config::NM | NetworkManager (frontend GNOME)
`netplan.io` | V:1, I:7 | 340 | config::NM+networkd | Netplan (generatore): interfaccia unificata, dichiarativa ai backend NetworkManager e systemd-networkd
`ifupdown` | V:619, I:973 | 201 | config::ifupdown | strumento standard per attivare e disattivare la rete (specifico di Debian)
`isc-dhcp-client` | V:169, I:707 | 2884 | config::low-level | client DHCP
`pppoeconf` | V:0, I:4 | 174 | config::helper | strumento di aiuto di configurazione per la connessione PPPoE
`wpasupplicant` | V:399, I:529 | 3901 | config::helper | supporto client per WPA e WPA2 (IEEE 802.11i)
`wpagui` | V:0, I:1 | 784 | config::helper | client GUI Qt per WPA supplicant
`wireless-tools` | V:192, I:264 | 292 | config::helper | strumenti per manipolare le estensioni wireless per Linux
`iw` | V:38, I:490 | 332 | config::helper | strumento per configurare dispositivi wireless per Linux
`iproute2` | V:756, I:984 | 4122 | config::iproute2 | iproute2, IPv6 e altra configurazione di rete avanzata: `ip`(8), `tc`(8), ecc.
`iptables` | V:353, I:629 | 2410 | config::Netfilter | strumenti amministrativi per filtraggio di pacchetti di rete e NAT (Netfilter)
`nftables` | V:212, I:850 | 191 | config::Netfilter | strumenti amministrativi per filtraggio di pacchetti di rete e NAT (Netfilter) (successore di {ip,ip6,arp,eb}tables)
`iputils-ping` | V:195, I:997 | 188 | test | testa la raggiungibilità di rete di un host remoto con nome host o indirizzo IP (iproute2)
`iputils-arping` | V:1, I:19 | 53 | test | testa la raggiungibilità di rete di un host remoto specificato con il suo indirizzo ARP
`iputils-tracepath` | V:2, I:21 | 50 | test | traccia il percorso di rete verso un host remoto
`ethtool` | V:93, I:250 | 1077 | test | mostra e modifica le impostazioni dei device Ethernet
`mtr-tiny` | V:4, I:39 | 181 | test::low-level | traccia il percorso di rete verso un host remoto (curses)
`mtr` | V:4, I:40 | 230 | test::low-level | traccia il percorso di rete verso un host remoto (curses e GTK)
`gnome-nettool` | V:0, I:10 | 2480 | test::low-level | strumenti per operazioni comuni sulle informazioni di rete (GNOME)
`nmap` | V:25, I:185 | 4607 | test::low-level | strumento per mappatura della rete / esplorazione delle porte (Nmap, console)
`tcpdump` | V:16, I:166 | 1343 | test::low-level | analizzatore del traffico di rete (Tcpdump, console)
`wireshark` | V:2, I:41 | 11267 | test::low-level | analizzatore del traffico di rete (Wireshark, GTK)
`tshark` | V:2, I:23 | 438 | test::low-level | analizzatore del traffico di rete (console)
`tcptrace` | V:0, I:1 | 407 | test::low-level | produce un riassunto delle connessioni dall'output di `tcpdump`
`ntopng` | V:0, I:0 | 15604 | test::low-level | mostra l'uso della rete nel browser web
`dnsutils` | I:174 | 23 | test::low-level | client di rete forniti con BIND: `nslookup`(8), `nsupdate`(8), `dig`
`dlint` | V:0, I:2 | 51 | test::low-level | controlla l'informazione DNS di zona usando interrogazioni del server di nomi
`dnstracer` | V:0, I:1 | 59 | test::low-level | traccia una catena di server DNS fino alla sorgente

### 5.1.1. Risoluzione dei nomi di host

La risoluzione del nome host è attualmente supportata dal meccanismo NSS (Name Service Switch). Il flusso di eventi nella risoluzione è il seguente.

1. Il file "`/etc/nsswitch.conf`" con blocchi tipo "`hosts: files dns`" detta l'ordine di risoluzione dei nomi di host. (Questo rimpiazza la vecchia funzionalità del blocco "`order` in "`/etc/host.conf`".)

2. Il metodo `files` è invocato per primo. Se il nome host viene trovato nel file "`/etc/hosts`", vengono restituiti tutti gli indirizzi validi per esso e il programma termina. (Il file "`/etc/host.conf`" contiene "`multi on`".)

3. Viene invocato il metodo `dns`. Se il nome host viene trovato dalla interrogazione al DNS (Internet Domain Name System, sistema dei nomi di dominio Internet), identificato dal file "`/etc/resolv.conf`", vengono restituiti tutti gli indirizzi validi per esso e il programma termina.

Una postazione di lavoro tipica può essere installata con il nome host impostato, ad esempio, come "host_name" e il suo nome di dominio opzionale impostato come stringa vuota. Poi, `/etc/hosts`" avrà l'aspetto seguente.

    127.0.0.1 localhost
    127.0.1.1 host_name

    # The following lines are desirable for IPv6 capable hosts
    ::1     localhost ip6-localhost ip6-loopback
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters

Ogni riga inizia con un indirizzo IP e prosegue con l'hostname associato.

L'indirizzo IP `127.0.1.1` nella seconda riga dell'esempio può non essere presente in altri sistemi simil-Unix. L'Installatore Debian crea questa voce per i sistemi senza un indirizzo IP permanente come soluzione per alcuni software (es., GNOME) come documentato nel bug#719621.

Il nome_host corrisponde al nome host definito in "`/etc/hostname`" (vedere Sezione 3.8.1, «Il nome host»).

Per un sistema con un indirizzo IP permanente, si dovrebbe usare qui tale indirizzo invece di `127.0.1.1`.

Per un sistema con un indirizzo IP permanente e un FQDN (Fully Qualified Domain Name, nome di dominio pienamente qualificato) fornito dal DNS (Domain Name System), dovrebbe essere usato qui il canonico nome_host.nome_dominio, invece del semplice nome_host.

Il file "`/etc/resolv.conf`" è un file statico se non è installato il pacchetto `resolvconf`. Se invece quest'ultimo è installato il file è un collegamento simbolico. In ogni caso contiene le informazioni che inizializzano le routine del risolutore. Se il DNS si trova all'IP="`192.168.11.1`", il file conterrà la riga seguente.

    nameserver 192.168.11.1

Il pacchetto `resolvconf` rendo questo file "`/etc/resolv.conf`" un collegamento simbolico e gestisce il suo contenuto con script eseguiti in automatico.

Per le postazioni PC nei tipici ambienti LAN ad hoc, il nome host può essere risolto usando il Multicast DNS (mDNS) in aggiunta ai metodi di base con `file` e `dns`.

- Avahi fornisce un'infrastruttura per il Multicast DNS Service Discovery in Debian.

- È equivalente a Apple Bonjour / Apple Rendezvous.

- Il pacchetto plugin `libnss-mdns` fornisce la risoluzione dei nomi host attraverso mDNS per la funzionalità GNU Name Service Switch (NSS) della libreria C GNU (glibc).

- Il file "`/etc/nsswitch.conf`" dovrebbe contenere una sezione simile a "`hosts: files mdns4_minimal [NOTFOUND=return] dns`" (vedere `/usr/share/doc/libnss-mdns/README.Debian` per altre configurazioni).

- I nomi host che terminano con lo pseudo-dominio di livello più alto ".local" vengono risolti inviando un messaggio di interrogazione mDNS in un pacchetto UDP multicast usando l'indirizzo IPv4 "`224.0.0.251`" o l'indirizzo IPv6 "`FF02::FB`".

| Nota
L'espansione dei gTLD (generic Top-Level Domain, domini di più alto livello generici) nel Domain Name System (Sistema di nomi di dominio) è in corso d'opera. Fare attenzione a possibili collisioni di nomi quando si sceglie un nome di dominio usato solamente all'interno di una LAN.

| Nota
L'uso di pacchetti come `libnss-resolve` insieme a `systemd-resolved`, o `libnss-myhostname`, o `libnss-mymachine`, con quanto corrispondente elencato nella riga "`hosts`" nel file "`/etc/nsswitch.conf`" può scavalcare la configurazione di rete tradizionale discussa sopra. Vedere `nss-resolve`(8), `systemd-resolved`(8), `nss-myhostname`(8) e `nss-mymachines`(8) per maggiori informazioni.

### 5.1.2. Il nome dell'interfaccia di rete

systemd usa "nomi di interfacce di rete prevedibili (Predictable Network Interface Name)", come "`enp0s25`".

### 5.1.3. L'intervallo degli indirizzi di rete per la LAN

Ecco un ripasso degli intervalli di indirizzi IPv4 a 32 bit in ciascuna classe, riservati per l'uso in reti locali (LAN) dalla rfc1918. È garantito che questi indirizzi non creino conflitti con altri indirizzi della vera e propria rete Internet.

| Nota
Indirizzi IP scritti con i due punti sono indirizzi IPv6, es. "`::1`" per `localhost`.

Tabella 5.2. Elenco di intervalli di indirizzi di rete

Classe | indirizzi di rete | maschera di rete | maschera rete /bit | numero di sottoreti
--- | --- | --- | --- | ---
A | 10.x.x.x | 255.0.0.0 | /8 | 1
B | 172.16.x.x — 172.31.x.x | 255.255.0.0 | /16 | 16
C | 192.168.0.x — 192.168.255.x | 255.255.255.0 | /24 | 256

| Nota
Se uno di questi indirizzi viene assegnato ad un host, allora l'host non deve accedere ad Internet direttamente, ma deve accedervi attraverso un gateway che agisca da proxy per i singoli servizi o che, in alternativa, faccia da NAT (Network Address Translation, traduzione degli indirizzi di rete). I router a banda larga di solito agiscono da NAT per l'ambiente LAN dell'utente finale.

### 5.1.4. Il supporto per i dispositivi di rete

Nonostante la maggior parte dei dispositivi hardware sia supportata dal sistema Debian, ci sono alcuni dispositivi di rete che necessitano, per essere supportati, firmware non libero secondo la definizione nelle DFSG. Vedere Sezione 9.10.5, «Driver per hardware e firmware».

## 5.2. La configurazione moderna della rete per il desktop

Le interfacce di rete sono tipicamente inizializzate in "`networking.service`" per l'interfaccia `lo` e "`NetworkManager.service`" per le altre interfacce nei moderni sistemi desktop Debian che usano `systemd`.

Debian può gestire la connessione di rete attraverso software per demoni di gestione come NetworkManager (NM) (network-manager e pacchetti associati).

- Questi sono forniti con propri programmi per l'interfaccia utente con GUI o a riga di comando.

- Sono forniti con un proprio demone come sistema di backend.

- Permettono al proprio sistema di connettersi facilmente ad Internet.

- Permettono una facile gestione della configurazione delle reti cablate e wireless.

- Permettono di configurare la rete in modo indipendente dal datato pacchetto `ifupdown`.

| Nota
Non usare questi strumenti di configurazione automatica della rete per server. Sono pensati principalmente per utenti con desktop mobili su portatili.

Questi strumenti moderni di configurazione della rete devono essere configurati in modo corretto per evitare conflitti con il datato pacchetto `ifupdown` e con il suo file di configurazione "`/etc/network/interfaces`".

### 5.2.1. Strumenti grafici di configurazione della rete

La documentazione ufficiale per NM in Debian è fornita in "`/usr/share/doc/network-manager/README.Debian`".

Fondamentalmente, la configurazione di rete per il desktop viene fatta nel modo seguente.

1. Aggiungere l'utente desktop, ad esempio `pippo`, al gruppo "`netdev`" con il comando seguente. (In alternativa farlo automaticamente attraverso D-bus nei moderni ambienti desktop come GNOME e KDE).

       $ sudo usermod -a -G netdev foo

2. Mantenere la configurazione di "`/etc/network/interfaces`" semplice come la seguente.

       auto lo
       iface lo inet loopback

3. Riavviare NM con il comando seguente.

       $ sudo systemctl restart NetworkManager

4. Configurare la propria rete attraverso l'interfaccia grafica.

| Nota
Solo le interfacce che non sono elencate in "`/etc/network/interfaces`" sono gestite da NM, per evitare conflitti con `ifupdown`.

| Suggerimento
Se si desiderano estendere le capacità di configurazione della rete di NM, cercare i moduli plugin appropriati e i pacchetti supplementari, quali `network-manager-openconnect`, `network-manager-openvpn-gnome`, `network-manager-pptp-gnome`, `mobile-broadband-provider-info`, `gnome-bluetooth`, ecc.

## 5.3. La configurazione moderna della rete senza GUI

Con systemd, la rete può essere configurata invece in `/etc/systemd/network/`. Vedere `systemd-resolved`(8), `resolved.conf`(5) e `systemd-networkd`(8).

Ciò permette la configurazione moderna della rete senza GUI.

Una configurazione di client DHCP può essere impostata creando "`/etc/systemd/network/dhcp.network`". Es.:

    [Match]
    Name=en*

    [Network]
    DHCP=yes

Una configurazione di rete statica può essere impostata creando "`/etc/systemd/network/static.network`". Es.:

    [Match]
    Name=en*

    [Network]
    Address=192.168.0.15/24
    Gateway=192.168.0.1

## 5.4. La configurazione moderna della rete per il cloud

La configurazione moderna della rete per il cloud può usare i pacchetti `cloud-init` e `netplan.io` (vedere Sezione 3.8.4, «Inizializzazione del sistema cloud»).

Il pacchetto `netplan.io` supporta `systemd-networkd` e `NetworkManager` come suoi backend di configurazione della rete, e permette la configurazione dichiarativa della rete usando dati YAML. Quando si cambia YAML:

- eseguire il comando "`netplan generate`" per generare tutta la necessaria configurazione del backend da YAML.

- Eseguire il comando "`netplan apply`" per applicare la configurazione generata ai backend.

Vedere la "documentazione di Netplan", `netplan`(5), `netplan-generate`(8) e `netplan-apply`(8).

Vedere anche la "documentazione di Cloud-init" (in particolare relativamente alle "fonti di configurazione" e "Netplan Passthrough") per come `cloud-init` può integrare la configurazione di `netplan.io` con fonti alternative di dati.

### 5.4.1. La configurazione moderna della rete per il cloud con DHCP

Una configurazione di client DHCP può essere impostata creando un file di sorgente di dati "`/etc/netplan/50-dhcp.yaml`":

    network:
      version: 2
      ethernets:
        all-en:
          match:
            name: "en*"
          dhcp4: true
          dhcp6: true

### 5.4.2. La configurazione moderna della rete per il cloud con IP statico

Una configurazione di rete statica può essere impostata creando un file di sorgente di dati "`/etc/netplan/50-static.yaml`":

    network:
      version: 2
      ethernets:
        eth0:
          addresses:
            - 192.168.0.15/24
          routes:
            - to: default
              via: 192.168.0.1

### 5.4.3. La configurazione moderna della rete per il cloud con Network Manager

Una configurazione di client di rete che usa l'infrastruttura Network Manager può essere impostata creando un file di sorgente di dati "`/etc/netplan/00-network-manager.yaml`":

    network:
      version: 2
      renderer: NetworkManager

## 5.5. Configurazione della rete a basso livello

Per la configurazione di rete a basso livello in Linux usare i programmi iproute2 (`ip`(8), …) .

### 5.5.1. Comandi iproute2

I comandi Iproute2 offrono funzionalità complete di configurazione della rete a basso livello. Quella che segue è una tabella di traduzione dai comandi obsoleti di net-tools ai nuovi comandi iproute2 ecc.

Tabella 5.3. Tabella di traduzione dai comandi obsoleti `net-tools` ai nuovi comandi `iproute2`

net-tools obsoleti | nuovi iproute2, ecc. | manipolazione
--- | --- | ---
`ifconfig`(8) | `ip addr` | indirizzo di protocollo (IP o IPv6) di un device
`route`(8) | `ip route` | voce nella tabella di instradamento
`arp`(8) | `ip neigh` | voce nella cache ARP o NDISC
`ipmaddr` | `ip maddr` | indirizzo multicast
`iptunnel` | `ip tunnel` | tunnel over IP
`nameif`(8) | `ifrename`(8) | nomina le interfacce di rete in base all'indirizzo MAC
`mii-tool`(8) | `ethtool`(8) | impostazioni del device Ethernet

Vedere `ip`(8) e Linux Advanced Routing & Traffic Control.

### 5.5.2. Operazioni sicure a basso livello sulla rete

Si possono usare i comandi a basso livello per la rete seguenti in modo sicuro dato che non cambiano la configurazione della rete.

Tabella 5.4. Elenco di comandi di rete a basso livello

comando | descrizione
--- | ---
`ip addr show` | mostra lo stato del collegamento e l'indirizzo delle interfacce attive
`route -n` | mostra tutta la tabella di instradamento in indirizzi numerici
`ip route show` | mostra tutta la tabella di instradamento in indirizzi numerici
`arp` | mostra l'attuale contenuto delle tabelle cache ARP
`ip neigh` | mostra l'attuale contenuto delle tabelle cache ARP
`plog` | mostra il registro del demone ppp
`ping yahoo.com` | controlla la connessione Internet verso "`yahoo.com`"
`whois yahoo.com` | controlla chi ha registrato "`yahoo.com`" nel database dei domini
`traceroute yahoo.com` | traccia la connessione Internet verso "`yahoo.com`"
`tracepath yahoo.com` | traccia la connessione Internet verso "`yahoo.com`"
`mtr yahoo.com` | traccia la connessione Internet verso "`yahoo.com`" (ripetutamente)
`dig [@dns-server.com] esempio.com [{a|mx|any}]` | controlla i record DNS di "`esempio.com`" con "`dns-server.com`" alla ricerca di un record "`a`", "`mx`" o "`any`"
`iptables -L -n` | controlla il filtraggio dei pacchetti
`netstat -a` | trova tutte le porte aperte
`netstat -l --inet` | trova le porte in ascolto
`netstat -ln --tcp` | trova le porte (numeriche) TCP in ascolto
`dlint esempio.com` | controlla le informazioni DNS di zona per "`esempio.com`"

| Suggerimento
Alcuni di questi strumenti di configurazione di basso livello della rete sono contenuti in "`/usr/sbin/`". Potrebbe essere necessario fornire il percorso completo dei comandi, come "`/usr/sbin/ifconfig`" o aggiungere "`/usr/sbin`" all'elenco in "`$PATH`" nel proprio file "`~/.bashrc`".

## 5.6. Ottimizzazione della rete

L'ottimizzazione generale della rete va oltre gli scopi che questo documento si prefigge. Vengono trattati solo quegli argomenti che interessano le connessioni dei computer personali.

Tabella 5.5. Elenco degli strumenti di ottimizzazione della rete

pacchetto | popcon | dimensione | descrizione
--- | --- | --- | ---
`iftop` | V:6, I:88 | 93 | mostra informazioni sull'uso della banda su di un'interfaccia di rete
`iperf` | V:2, I:35 | 427 | strumento di misurazione della banda del protocollo Internet
`ifstat` | V:0, I:5 | 52 | Monitoraggio delle STATistiche sulle InterFacce
`bmon` | V:1, I:20 | 141 | strumento portabile per monitoraggio della banda e stime della velocità
`ethstatus` | V:0, I:2 | 41 | script che misura velocemente la quantità di dati passanti per un device di rete
`bing` | V:0, I:0 | 80 | tester empirico stocastico della banda
`bwm-ng` | V:1, I:10 | 95 | strumento piccolo e semplice basato sulla console per il monitoraggio della banda
`ethstats` | V:0, I:0 | 21 | strumento basato su console per il monitoraggio delle statistiche Ethernet
`ipfm` | V:0, I:0 | 78 | strumento di analisi della banda

### 5.6.1. Trovare l'MTU ottimale

NM di solito imposta automaticamente la Maximum Transmission Unit (MTU) ottimale.

In alcune occasioni si può volere impostare l'MTU manualmente dopo esperimenti con `ping`(8) con l'opzione "`-M do`" per inviare un pacchetto ICMP con varie dimensioni di pacchetti di dati. MTU è la dimensione massima di pacchetti dati con successo senza frammentazione IP più 28 byte per IPv4 e 48 byte per IPv6. Per esempio, quanto segue scopre che l'MTU per la connessione IPv4 è 1460 e l'MTU per la connessione IPv6 è 1500.

    $ ping -4 -c 1 -s $((1500-28)) -M do www.debian.org
    PING  (149.20.4.15) 1472(1500) bytes of data.
    ping: local error: message too long, mtu=1460

    ---  ping statistics ---
    1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

    $ ping -4 -c 1 -s $((1460-28)) -M do www.debian.org
    PING  (130.89.148.77) 1432(1460) bytes of data.
    1440 bytes from klecker-misc.debian.org (130.89.148.77): icmp_seq=1 ttl=50 time=325 ms

    ---  ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 325.318/325.318/325.318/0.000 ms
    $ ping -6 -c 1 -s $((1500-48)) -M do www.debian.org
    PING www.debian.org(mirror-csail.debian.org (2603:400a:ffff:bb8::801f:3e)) 1452 data bytes
    1460 bytes from mirror-csail.debian.org (2603:400a:ffff:bb8::801f:3e): icmp_seq=1 ttl=47 time=191 ms

    --- www.debian.org ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 191.332/191.332/191.332/0.000 ms

Questo processo si chiama "Path MTU (PMTU) discovery (RFC1191) e il comado `tracepath`(8) può automatizzarlo.

Tabella 5.6. Linee guida di base per il valore di MTU ottimale

ambiente di rete | MTU | motivo
--- | --- | ---
collegamento dial-up (IP: PPP) | 576 | standard
collegamento Ethernet (IP: DHCP o statico) | 1500 | standard e predefinito

In aggiunta a queste linee guida di base si dovrebbe sapere quanto segue.

- Qualsiasi uso di metodi di tunnelling (VPN, ecc.) può ridurre ulteriormente l'MTU ottimale per il loro carico.

- Il valore di MTU non dovrebbe superare il valore di PMTU determinato sperimentalmente.

- A patto di seguire le indicazioni precedenti un valore maggiore di MTU è meglio.

Il valore di MSS (Maximum Segment Size, dimensione massima di segmento)MSS è usato come misura alternativa della dimensione dei pacchetti. Le relazioni tra MSS e MTU sono le seguenti.

- MSS = MTU - 40 per IPv4

- MSS = MTU - 60 per IPv6

| Nota
L'ottimizzazione basata su `iptables`(8) (vedere Sezione 5.7, «Infrastruttura netfilter») può bloccare la dimensione dei pacchetti al valore MSS ed è utile per il router. Vedere "TCPMSS" in `iptables`(8).

### 5.6.2. Ottimizzazione di TCP per la WAN

Il flusso TCP può essere massimizzato regolando i parametri di dimensione del buffer TCP come descritto in "TCP tuning" per le moderne WAN a larga banda e alta latenza. Per adesso, le attuali impostazioni predefinite di Debian funzionano bene persino per la mia LAN connessa con un servizio FTTP veloce a 1G bps.

## 5.7. Infrastruttura netfilter

Netfilter fornisce un'infrastruttura per firewall con stati e traduzione di indirizzi di rete (NAT) con moduli del kernel Linux (vedere Sezione 3.10, «L'inizializzazione dei moduli del kernel»).

Tabella 5.7. Elenco di strumenti per firewall

pacchetto | popcon | dimensione | descrizione
--- | --- | --- | ---
`nftables` | V:212, I:850 | 191 | strumenti amministrativi per filtraggio di pacchetti di rete e NAT (Netfilter) (successore di {ip,ip6,arp,eb}tables)
`iptables` | V:353, I:629 | 2410 | strumenti di amministrazione per netfilter (`iptables`(8) per IPv4, `ip6tables`(8) per IPv6)
`arptables` | V:0, I:1 | 102 | strumenti di amministrazione per netfilter (`arptables`(8) per ARP)
`ebtables` | V:14, I:24 | 276 | strumenti di amministrazione per netfilter (`ebtables`(8) per bridge Ethernet)
`iptstate` | V:0, I:1 | 122 | monitora continuamente lo stato di netfilter (in modo simile a `top`(1))
`ufw` | V:73, I:99 | 859 | Uncomplicated Firewall (UFW) è un programma per gestire un firewall netfilter
`gufw` | V:5, I:10 | 3663 | interfaccia utente grafica per Uncomplicated Firewall (UFW)
`firewalld` | V:16, I:24 | 2482 | firewalld è un programma per firewall gestito dinamicamente con supporto per le zone di rete
`firewall-config` | V:0, I:3 | 1076 | interfaccia utente grafica per firewalld
`shorewall-init` | V:0, I:0 | 88 | inizializzazione di Shoreline Firewall
`shorewall` | V:2, I:5 | 3090 | generatore di file di configurazione per Shoreline Firewall, netfilter
`shorewall-lite` | V:0, I:0 | 71 | generatore di file di configurazione per Shoreline Firewall, netfilter (versione leggera)
`shorewall6` | V:0, I:1 | 1334 | generatore di file di configurazione per Shoreline Firewall, netfilter (versione IPv6)
`shorewall6-lite` | V:0, I:0 | 71 | generatore di file di configurazione per Shoreline Firewall, netfilter (versione IPv6 leggera)

Il principale programma in spazio utente di netfilter è `iptables`(8). Si può configurare manualmente netfilter in modo interattivo dalla shell, salvare il suo stato con `iptables-save`(8) e ripristinarlo attraverso uno script di init con `iptables-restore`(8) al riavvio del sistema.

Script di aiuto per la configurazione come shorewall facilitano questo processo.

Vedere la documentazione in Netfilter Documentation (o in "`/usr/share/doc/iptables/html/`").

- Linux Networking-concepts HOWTO

- Linux 2.4 Packet Filtering HOWTO

- Linux 2.4 NAT HOWTO

| Suggerimento
Anche se questi documenti sono stati scritti per Linux 2.4, sia il comando `iptables`(8) sia la funzione netfilter del kernel sono validi per gli attuali kernel Linux 2.6 e 3.x.

Capitolo 4. Autenticazione e controllo degli accessi |  | Capitolo 6. Applicazioni per la rete