Nftables: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
Nessun oggetto della modifica
(18 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
{{Versioni compatibili}}{{Gateway-Router}}
{{Versioni compatibili}}{{Gateway-Router}}
==Introduzione==
==Introduzione==
<code>nftables</code> è la nuova infrastruttura per l'analisi e manipolazione dei pacchetti di rete che sostituisce la vecchia <code>iptables</code>. Già in sviluppo da alcuni anni (è disponibile dalla versione 3.13 del kernel di linux) sarà la soluzione predefinita a partire da ''Buster'', attraverso gli strumenti del gruppo <code>xtables-nft</code> che permettono di agire su <code>nftables</code> usando la vecchia sintassi di <code>iptables</code>.<br>
<code>nftables</code> è la nuova infrastruttura per l'analisi e manipolazione dei pacchetti di rete che sostituisce la vecchia <code>iptables</code>. Già in sviluppo da alcuni anni (è disponibile dalla versione 3.13 del kernel di linux) sarà la soluzione predefinita a partire da ''Buster'', attraverso gli strumenti del gruppo '''<code>xtables-nft</code> che permettono di agire su <code>nftables</code> usando la vecchia sintassi''' di <code>iptables</code>.<br>
Naturalmente come sempre in questi casi la transizione non sarà netta da un giorno all'altro, ma il vecchio <code>iptables</code> continuerà a sopravvivere come strumento ''legacy'' (difficile dire per quanto), visto che tra l'altro <code>nftables</code> presenta un livello di compatibilità con il suo predecessore.
Naturalmente come sempre in questi casi la transizione non sarà netta da un giorno all'altro, ma il vecchio <code>iptables</code> continuerà a sopravvivere come strumento ''legacy'' (difficile dire per quanto), visto che tra l'altro <code>nftables</code> presenta un livello di compatibilità con il suo predecessore.


Riga 12: Riga 12:
presente sia in ''Buster'' che ''Stretch''.
presente sia in ''Buster'' che ''Stretch''.


==Sintassi <code>nft</code>==
=== Cambiare infrastruttura ===
 
Come scritto nell'introduzione <code>nftables</code> è lo standard in ''Buster'', ma è comunque possibile continuare ad usare la vecchia infrastruttura attraverso <code>iptables-legacy</code> usando il comando <code>update-alternatives</code> come mostrato nel sottostante esempio:
<pre>
# update-alternatives --config iptables
Sono disponibili 2 scelte per l'alternativa iptables (che fornisce /usr/sbin/iptables).
 
  Selezione    Percorso                  Priorità  Stato
------------------------------------------------------------
* 0            /usr/sbin/iptables-nft      20        modalità automatica
  1            /usr/sbin/iptables-legacy  10        modalità manuale
  2            /usr/sbin/iptables-nft      20        modalità manuale
 
Premere Invio per mantenere il valore predefinito[*] o digitare il numero della selezione: 1
</pre>
 
Quindi anche se l'eseguibile di riferimento cambia, il collegamento simbolico no, ovvero i comandi continueranno ad essere dati digitando <code># iptables opzioni comando ecc.</code>.
 
== Sintassi <code>nft</code> ==
Mostrare tutte le regole di tutte le tabelle (tutto in una parola):
Mostrare tutte le regole di tutte le tabelle (tutto in una parola):
<pre># nft list ruleset</pre>
<pre># nft list ruleset</pre>
Salvare tutte regole in un file testuale (utile per rendere permanente il tutto, si veda più sotto):
Salvare tutte regole in un file testuale (utile per rendere permanente il tutto, si veda più sotto):
<pre># nft list ruleset > nftables.conf</pre>
<pre># nft list ruleset > /mio/percorso/nftables.conf</pre>
Caricare tutte le regole salvate in un file:
Caricare tutte le regole salvate in un file:
<pre># nft -f nftables.conf</pre>
<pre># nft -f /mio/percorso/nftables.conf</pre>
Elencare tutte le tabelle:
Elencare tutte le tabelle:
<pre># nft list tables</pre>
<pre># nft list tables</pre>
Elencare tutte le catene e le regole della tabella ''filter'' appartenente alla famiglia ''ip'':
Elencare tutte le catene e le regole della tabella ''filter'' appartenente alla famiglia ''ip'':
<pre># nft list table ip filter</pre>
<pre># nft list table ip filter</pre>
Come sopra, ma in più visualizzando anche gli ''handle'', ovvero i riferimenti univoci di ogni riga:
<pre># nft list table ip filter -a</pre>
Aggiungere una regola in coda a tutte le altre (in questo caso si accettano tutte le connessioni in entrata su "enp1s0" e dirette alla porta 6666):
<pre>nft add rule ip filter INPUT iifname "enp1s0" ct state new tcp dport 6666 counter accept</pre>
Come sopra, ma la regola viene inserita all'inizio e non appesa alla fine (un esempio per riga):
<pre>
nft insert rule ip filter INPUT iifname "enp1s0" ct state new tcp dport 6666 counter accept
nft insert rule ip filter FORWARD iifname "enp1s0" oifname "enp2s0" ct state new udp dport 6667 counter accept
</pre>
Inserire una nuova regola subito dopo quella avente identificativo "8":
<pre># nft add rule filter OUTPUT position 8 ip daddr 127.0.0.8 drop</pre>
Oppure eliminare una riga avente identificativo "8":
<pre># nft delete rule filter OUTPUT handle 8</pre>
Eliminare tutte le regole della tabella ''filter'' catena ''output'':
<pre># nft delete rule filter OUTPUT</pre>
Svuotare completamente la tabella filter:
<pre>nft flush table filter</pre>
Per maggiori informazioni sulla nuova sintassi si rimanda alla sezione ''Approfondimenti'' in coda a questa pagina.


===Caricare automaticamente le regole===
=== Caricare automaticamente le regole ===
Come nel caso di <code>iptables</code> tutte le regole dichiarate saranno perse al riavvio della macchina, ma al momento non esiste uno strumento come <code>iptables-persistent</code>.<br>
Come nel caso di <code>iptables</code> tutte le regole dichiarate saranno perse al riavvio della macchina, ma al momento non esiste uno strumento come <code>iptables-persistent</code>.<br>
Una soluzione può quindi essere quella di usare cron per far caricare in automatico ad ogni avvio un file testuale contenente tutte le regole del firewall.<br>
Una soluzione può quindi essere quella di usare cron per far caricare in automatico ad ogni avvio un file testuale contenente tutte le regole del firewall.<br>
Riga 45: Riga 81:
# permette immediatamente di vedere se una certa regola può essere tradotta correttamente;
# permette immediatamente di vedere se una certa regola può essere tradotta correttamente;
# permette di avere un idea di come è cambiata la sintassi;
# permette di avere un idea di come è cambiata la sintassi;
# permette di generale un elenco di regole chiaro e pulito (vedere il comando <code>nft list ruleset > nftables.conf</code>).
# permette di generale un elenco di regole '''chiaro e pulito''' (vedere il comando <code>nft list ruleset > nftables.conf</code>).


Esempio:
Esempio:
Riga 53: Riga 89:
</pre>
</pre>


=== iptables-rotate-translate ===
=== iptables-restore-translate ===


Per procedere è prima necessario salvare in un file testuale il contenuto di <code>iptables</code> col comando:
Per procedere è prima necessario salvare in un file testuale il contenuto di <code>iptables</code> col comando:
Riga 61: Riga 97:
e infine procedere al caricamento vero e proprio:
e infine procedere al caricamento vero e proprio:
<pre># nft -f ruleset.nft</pre>
<pre># nft -f ruleset.nft</pre>
Come già scritto le regole così importate andranno perse al riavvio e pertanto sta all'utente trovare un modo di caricarle in automatico all'avvio (un metodo è stato presentato nella sezione precedente).
Come già scritto le regole così importate andranno perse al riavvio e pertanto sta all'utente trovare un modo di caricarle in automatico all'avvio (un possibile metodo è stato presentato nella sezione precedente ''Caricare automaticamente le regole'').


== Approfondimenti ==
== Approfondimenti ==
2 853

contributi

Menu di navigazione