/blog/nftables_wg_quick_killswitch
2024-05-20 · 1 min · Management · Tutorial · GNU/Linux · TAG · GNU/Linux · HowTo · Administration · VPN · Command Line

Kill switch per wg-quick e nftables

Introduzione

Un kill switch impedisce al traffico di uscire attraverso la connessione ordinaria quando il tunnel WireGuard non è attivo, evitando di esporre accidentalmente l'indirizzo IP reale.

Dopo il passaggio da iptables a nftables, ho dovuto tradurre le regole nella configurazione del peer di wg-quick. Dato che non ho trovato informazioni utili al momento della configurazione, ho deciso di condividere la soluzione che ho usato.

Configurazione

Questa configurazione presuppone che le regole nftables vengano ricaricate tramite il sistema di init.

Nel file di configurazione di wg-quick aggiungiamo queste due righe.

PostUp = nft insert rule <family> <table> <chain> ip oifname != "%i" mark != $(wg show %i fwmark) fib daddr type != local counter rejectPostDown = systemctl restart <service>

Queste righe vanno adattate al vostro sistema e al vostro firewall.

PostUp

Eseguiamo nft list ruleset e cerchiamo la catena che contiene type filter hook output.

Ora adattiamo la riga PostUp con le informazioni trovate. Nel mio caso questa istruzione si trova nella tabella firewalld, parte della famiglia inet, nella chain filter_OUTPUT.

PostDown

Nella riga PostDown inseriamo il comando necessario a ricaricare il firewall. Nell'esempio viene usato systemd.

Esempio

PostUp = nft insert rule ip inet firewalld filter_OUTPUT oifname != "%i" mark != $(wg show %i fwmark) fib daddr type != local counter rejectPostDown = systemctl restart firewalld.service

Ultimo aggiornamento 2024-05-20.
Sorgente dell’articolo content/blog/nftables_wg_quick_killswitch.

Autore

Nicolò è un software architect di Bergamo. Lavora su firmware ESP32, HMI, app Android native, backend, librerie software e integrazioni tra sistemi.

Prossimo articolo

2024-05-10
iptables vs nftables

Perché nftables rende più ordinata la gestione delle regole firewall rispetto a iptables e ip6tables.