Come Escludere il traffico LAN dalla VPN con nftables

In questo articolo vedremo come configurare nftables per escludere il traffico della rete locale dal routing VPN su distribuzioni Linux come DEBIAN, UBUNTU o KALI. Questa configurazione è particolarmente utile quando vuoi mantenere l’accesso diretto ai servizi locali mentre utilizzi una VPN per il traffico internet.

Questa configurazione è particolarmente utile in diversi scenari, ad esempio:
– Quando si lavora in remoto su macchine virtuali attraverso SSH/RDP mentre si usa una VPN
– Per mantenere l’accesso ai servizi di rete locale (NAS, stampanti, server domestici)
– Per separare il traffico internet (che passa attraverso la VPN) dal traffico locale (che mantiene la connessione diretta)

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 locale 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;
    }
}

Questa configurazione marca specificamente il traffico destinato alla rete locale in modo che bypassi la VPN. Ciò significa che:
– I servizi esposti sulla rete locale rimangono accessibili direttamente
– Le connessioni SSH/RDP verso macchine nella rete locale non vengono interrotte
– Solo il traffico internet viene instradato attraverso la VPN

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

Applicare le regole

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