Ho avuto lo stesso problema e un paio di simili, quindi ecco la mia catena completa di iptables OUTPUT che è tutto ciò che uso e dovrebbe risolvere il tuo problema e poi alcuni.
-A OUTPUT -d 192.168.1.0/24 -j ACCEPT
-A OUTPUT -o lo -m owner --uid-owner 110 -j ACCEPT
-A OUTPUT ! -o tun+ -m owner --uid-owner 110 -j DROP
Ecco cosa sta facendo tutto questo:
-A OUTPUT -d 192.168.1.0/24 -j ACCEPT
Questo comando consente tutto il traffico sulla rete locale. Il parametro -d
fa sì che la regola si applichi a tutto il traffico diretto all'ip di destinazione. Cambia 192.168.1
nelle prime tre parti dell'indirizzo IP della tua rete locale. Ad esempio, se gli intervalli IP della rete locale vanno da 15.15.15.0
a 15.15.15.255
, modifica tale linea in
-A OUTPUT -d 15.15.15.0/24 -j ACCEPT
Il .0/24
alla fine includerà tutti gli indirizzi IP su quella rete.
-A OUTPUT -o lo -m owner --uid-owner 110 -j ACCEPT
Ciò consente ai programmi locali sul tuo computer di comunicare tra loro. Questo mi causava problemi, quindi pensavo di includerlo. In particolare uno dei miei programmi aveva bisogno di questo per funzionare con il client VPN.
-A OUTPUT ! -o tun+ -m owner --uid-owner 110 -j DROP
Questi due comandi rilasciano tutti i pacchetti in uscita che non escono da una connessione tun. Nel tuo uso eth0
anziché tun+
. Hai testato se funziona davvero come un kill switch? Non penso che dovrebbe perché quando la tua connessione VPN fallisce, eth0 dovrebbe rimanere.
Affinché questo funzioni, l'ordine è importante. Se i comandi di accettazione non sono i primi, verranno bloccati dai comandi di rilascio.