Tenía la misma configuración, y los "interruptores de eliminación de VPN" son más complicados de lo que uno pensaría.
Sin embargo, siguiendo su especificación, que se lee como "matar ciertas aplicaciones cuando cae la VPN", hay una solución simple.
En Ubuntu, el monitor de red tiene devoluciones de llamada para eventos de red, por lo que puede escribir un script para eliminar las aplicaciones que desee. El siguiente ejemplo:
Editar /etc/NetworkManager/dispatcher.d/50vpndownkillapps.rb
:
#!/usr/bin/env ruby
if ARGV == [ 'tun0', 'vpn-down' ]
`pkill -f transmission`
`pkill -f deluge`
end
Lo hacen ejecutable: chmod 755 /etc/NetworkManager/dispatcher.d/50vpndownkillapps.rb
y disfrutan :-)
Este script está en Ruby (por lo que requiere ruby), pero se puede convertir trivialmente en un script de shell.
También supone que el adaptador VPN es tun0
, que es el estándar para las configuraciones de OpenVPN.
ARGV
comencé'tun0'
durante mucho tiempo y de repente cambió a'tun1'
sin previo aviso. Entonces, para mantener el interruptor de matar funcionando a pesar de este primer valor de cambio (inútil), tuve que cambiar la prueba aif ARGV.last == 'vpn-down'
Tenía esta misma necesidad y desarrollé mi propia solución, ya que parece que no hay una herramienta dedicada para esto en Linux. ¡No hay necesidad de soltar / cerrar aplicaciones abiertas! :)
Debe configurar el firewall de iptables, para que su máquina pueda conectarse SOLAMENTE a servidores VPN especificados (no se permite otro tráfico, excepto el local, por lo que no habrá "fugas"). Aquí hay un script para eso (lo encontré en la web):
Necesitará configurar la tabla
servers=()
. Simplemente especifique las direcciones IP de sus servidores VPN favoritos.También verifique que otras variables al comienzo del script estén configuradas correctamente, de lo contrario, bloqueará toda su conexión.
Asegúrese de hacer una copia de seguridad de iptables con:
(restaurar con
sudo iptables-restore < working.iptables.rules
)Admite conexiones TCP y UDP, si solo necesita una de ellas, elimine dos líneas no deseadas del
for ()
bucle. También verifique si su proveedor está utilizando los mismos puertos; puede ser diferente.Ejecute este script con fe
sudo /home/user/vpn.sh
.Si desea cargarlo en el arranque (iptables generalmente se restablece después del reinicio), agregue a su
/etc/rc.local
línea de archivo comobash /home/user/vpn.sh
.La siguiente parte es el conector y VPN de VPN. Aquí está mi propio artilugio para esto:
Se conectará automáticamente al inicio y monitoreará su conexión con un intervalo determinado (
amount=10
da un intervalo de 10 segundos) y se volverá a conectar cuando se pierda la conexión. Tiene la función de registro y algunas otras opciones.Verifique las conexiones que usan los UUID
nmcli con show
y agregue sus favoritos (que coincidan con las IP agregadas al firewall) a lavpn=()
tabla. Cada vez seleccionará aleatoriamente una conexión especificada en esta tabla.Puede agregarlo a su inicio automático (no necesita privilegio sudo). Aquí hay un ejemplo de cómo iniciarlo en la terminal:
... y así es como se ve corriendo en la terminal:
... y así es como se ve un ping a prueba de fugas después de que su conexión VPN caiga:
Disfruta :)
fuente
/etc/rc.local
?He podido configurar un simple interruptor de eliminación de VPN con UFW. Funciona con todos los VPN que tengo.
Aquí está mi configuración de ufw:
Funciona para mí bien :)
fuente
sudo ufw allow out 443/tcp
permite una fuga segura del sitio web cuando la VPN no está conectada. ¿No quieres detener eso? Un sitio HTTPS con AJAX o WebSockets puede volver a conectarse por sí solo en segundo plano, tal vez a través de un temporizador de JavaScript.Resolví este problema configurando Ufw para bloquear todo el tráfico saliente y luego colocando en la lista blanca todos los nodos VPN haciendo referencia a sus direcciones IP individuales. Esto no es tan oneroso como parece: en mi experiencia, las VPN permiten el uso de la búsqueda de DNS para obtener sus diversas direcciones IP.
He escrito un programa PHP para hacer esto, llamado ufw-vpn . Lo he usado durante un par de años, con varias pequeñas mejoras realizadas con el tiempo. Necesitará PHP instalado, por supuesto, y Git si desea clonarlo en lugar de descargarlo.
También puedes tomarlo usando wget:
Luego ejecute el comando para verificar que se ve bien (sin parámetros solo muestra un mensaje de sintaxis):
Ahora, suponiendo que su VPN lo admita, puede usar un dominio totalmente calificado para obtener una lista de servidores para una región (necesitará encontrar esto en la documentación de su proveedor, o tal vez de su departamento de soporte):
Eso debería darle una gran lista de reglas de firewall para agregar. Para instalarlos fácilmente, puede hacer esto:
De vez en cuando, los proveedores de VPN actualizarán sus direcciones IP, por lo que deberá actualizar las suyas para que coincidan. Puede hacerlo a través de un diff:
Para una diferencia, vale la pena verificar las reglas antes de ejecutar eso, ya que eliminará todo lo que no pertenezca a la VPN. Por lo tanto, si tiene algunas reglas personalizadas, deberá eliminarlas antes de ejecutarlas.
Hay más documentos disponibles en el repositorio, y todo es de código abierto, por lo que puede consultar el código por problemas de seguridad. Informes de errores y sugerencias de características son bienvenidos.
fuente