3 155
contributi
Wtf (discussione | contributi) m (→Sintassi nft) |
Wtf (discussione | contributi) |
||
Riga 3: | Riga 3: | ||
<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. | ||
==Installazione== | ==Installazione== | ||
Per usare gli strumenti del gruppo <code>xtables-nft</code> non è necessario fare alcunché in ''Buster'', infatti questi sono già disponibili di serie come già detto, mentre in ''Stretch'' è necessario installare il pacchetto <code>iptables-nftables-compat</code> | Per usare gli strumenti del gruppo <code>xtables-nft</code> non è necessario fare alcunché in ''Buster'', infatti questi sono già disponibili di serie come già detto, mentre in ''Stretch'' è necessario installare il pacchetto <code>iptables-nftables-compat</code> | ||
Riga 11: | Riga 10: | ||
<pre># apt install nftables</pre> | <pre># apt install nftables</pre> | ||
presente sia in ''Buster'' che ''Stretch''. | presente sia in ''Buster'' che ''Stretch''. | ||
=== Cambiare infrastruttura === | === 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: | 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> | <pre> | ||
Riga 27: | Riga 24: | ||
Premere Invio per mantenere il valore predefinito[*] o digitare il numero della selezione: 1 | Premere Invio per mantenere il valore predefinito[*] o digitare il numero della selezione: 1 | ||
</pre> | </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>. | 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> == | == 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): | ||
Riga 72: | Riga 67: | ||
<pre>nft flush table filter</pre> | <pre>nft flush table filter</pre> | ||
Per maggiori informazioni sulla nuova sintassi si rimanda alla sezione ''Approfondimenti'' in coda a questa pagina. | 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> | ||
Riga 83: | Riga 77: | ||
<pre>@reboot /usr/sbin/nft -f /etc/nftables.conf</pre> | <pre>@reboot /usr/sbin/nft -f /etc/nftables.conf</pre> | ||
in modo che ad ogni riavvio vengano ricaricate in automatico tutte le regole. | in modo che ad ogni riavvio vengano ricaricate in automatico tutte le regole. | ||
==Migrare da iptables== | ==Migrare da iptables== | ||
Sono stati sviluppati alcuni strumenti di conversione per facilitare la migrazione dalla sintassi di <code>iptables</code> a quella di <code>nftables</code>. In particolare: | Sono stati sviluppati alcuni strumenti di conversione per facilitare la migrazione dalla sintassi di <code>iptables</code> a quella di <code>nftables</code>. In particolare: | ||
* <code>iptables-translate</code> che permette di tradurre al volo un comando qualsiasi di <code>iptables</code> (e qualora non ne sia in grado avvisa l'utente). | * <code>iptables-translate</code> che permette di tradurre al volo un comando qualsiasi di <code>iptables</code> (e qualora non ne sia in grado avvisa l'utente). | ||
* <code>iptables-restore-translate</code> che invece traduce un file di regole generato attraverso <code>iptables-save</code>. | * <code>iptables-restore-translate</code> che invece traduce un file di regole generato attraverso <code>iptables-save</code>. | ||
=== iptables-translate === | === iptables-translate === | ||
Se non si hanno molte regole da convertire questo è probabilmente il modo migliore di procedere, per tre motivi: | Se non si hanno molte regole da convertire questo è probabilmente il modo migliore di procedere, per tre motivi: | ||
# 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: | ||
<pre> | <pre> | ||
Riga 101: | Riga 91: | ||
nft add rule ip filter INPUT tcp dport 22 ct state new counter accept | nft add rule ip filter INPUT tcp dport 22 ct state new counter accept | ||
</pre> | </pre> | ||
=== iptables-restore-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: | ||
<pre># iptables-save > save.txt</pre> | <pre># iptables-save > save.txt</pre> | ||
Riga 111: | Riga 99: | ||
<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 possibile metodo è stato presentato nella sezione precedente ''Caricare automaticamente le regole''). | 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 == | ||
=== Manpages === | === Manpages === | ||
* <code>man xtables-nft</code> in ''Buster'' e successive, <code>man iptables-compat</code> in ''Stretch'' | |||
* <code>man xtables-nft</code> in ''Buster'', <code>man iptables-compat</code> in ''Stretch'' | * <code>man xtables-translate</code> in ''Buster'' e successive, <code>man iptables-translate</code> in ''Stretch'' | ||
* <code>man xtables-translate</code> in ''Buster'', <code>man iptables-translate</code> in ''Stretch'' | |||
* <code>man nft</code> | * <code>man nft</code> | ||
=== Sitografia === | === Sitografia === | ||
* [https://wiki.nftables.org/wiki-nftables/index.php/Main_Page Wiki ufficiale], pagina principale | * [https://wiki.nftables.org/wiki-nftables/index.php/Main_Page Wiki ufficiale], pagina principale | ||
* [https://wiki.nftables.org/wiki-nftables/index.php/Moving_from_iptables_to_nftables Wiki ufficiale, migrazione], pagina dedicata alla migrazione da <code>iptables</code> | * [https://wiki.nftables.org/wiki-nftables/index.php/Moving_from_iptables_to_nftables Wiki ufficiale, migrazione], pagina dedicata alla migrazione da <code>iptables</code> | ||
Riga 136: | Riga 119: | ||
|Numero_revisori=0 | |Numero_revisori=0 | ||
}} | }} | ||
[[Categoria:Firewall]] | [[Categoria:Firewall]] |
contributi