Tuve el mismo problema y un par de problemas similares, así que aquí está mi cadena completa de salida de iptables, que es todo lo que uso y debería resolver su problema y más.
-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
Esto es lo que hace todo:
-A OUTPUT -d 192.168.1.0/24 -j ACCEPT
Este comando permite todo el tráfico en su red local. El parámetro -d
hace que la regla se aplique a todo el tráfico que va a la dirección IP de destino. Cambie 192.168.1
a las primeras tres partes de la dirección IP de su red local. Por ejemplo, si los rangos de ip de su red local van de 15.15.15.0
a 15.15.15.255
, cambie esa línea a
-A OUTPUT -d 15.15.15.0/24 -j ACCEPT
El .0/24
al final incluirá todas las direcciones IP en esa red.
-A OUTPUT -o lo -m owner --uid-owner 110 -j ACCEPT
Esto permite que los programas locales en su computadora se comuniquen entre sí. Esto me estaba causando problemas, así que pensé que lo incluiría. Específicamente, uno de mis programas necesitaba esto para trabajar con el cliente vpn.
-A OUTPUT ! -o tun+ -m owner --uid-owner 110 -j DROP
Estos dos comandos eliminan los paquetes salientes que no salen de una conexión tun. En el tuyo usas eth0
en lugar de tun+
. ¿Has probado si eso realmente funciona como un interruptor para matar? No creo que deba hacerlo porque cuando su conexión VPN se desactiva, eth0 debería permanecer.
Para que esto funcione, la orden importa. Si los comandos de aceptación no son los primeros, serán bloqueados por los comandos soltar.