Come escludere il traffico VPN su GNU/Linux

In questo articolo, ti mostrerò come escludere il traffico VPN su DEBIAN, UBUNTU, KALI o comunque qualsiasi distribuzione che usa nftables (il successore di iptables). Se hai familiarità con iptables, puoi facilmente adattarti all’uso di nftables.

Installare nftables

Per prima cosa, assicurati che nftables sia installato sul tuo sistema. Puoi installarlo con il seguente comando:

sudo apt-get update
sudo apt-get install nftables

Accedere come root

Accedi come root per eseguire i comandi successivi:

sudo -i

Creare il file di regole

Ora, crea un file di regole nftables che escluda il traffico desiderato dalla VPN. Apri un editor di testo e crea un nuovo file chiamato escludiTrafficoVPN.rules nella directory /root:

vim /root/escludiTrafficoVPN.rules

Inserisci il seguente contenuto nel file:

table inet escludiTrafficoVPN {
    chain excludeOutgoing {
        type route hook output priority 0; policy accept;
        ip daddr 192.168.0.0/16 ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
    }
}

In questo modo andiamo ad intercettare tutto il traffico della subnet e lo andiamo a marcare.

Nota: Assicurati di adattare 192.168.0.0/16 all’intervallo di indirizzi IP (subnet) che stai utilizzando nella tua rete locale. Se stai quindi utilizzando una classe A o B, ricordati di modificare la subnet, nello specifico:
Classe A: 10.0.0.0/8
Classe B: 172.16.0.0/12

Applica le regole create utilizzando il seguente comando:

nft -f /root/escludiTrafficoVPN.rules

Questo comando carica e applica le regole definite nel file escludiTrafficoVPN.rules.

Rendere le regole persistenti

Per assicurarti che le regole vengano applicate ad ogni riavvio del sistema, aggiungi una riga a /etc/crontab:

Apri il file /etc/crontab con un editor di testo:

vim /etc/crontab

Aggiungi la seguente riga alla fine del file:

@reboot root nft -f /root/escludiTrafficoVPN.rules

Seguendo i passaggi sopra indicati, puoi configurare il tuo sistema in modo che solo una parte del traffico utilizzi la VPN, mentre il resto passa attraverso la connessione diretta.

Questo può essere utile se per esempio si vuole attivare una VPN sopra una macchina virtuale connessa in SSH/RDP e non si vuole perdere la connessione.