#1 Le 18/04/2019, à 20:48
- abecidofugy
[Résolu] Couper internet en cas de déconnexion à un vpn
Salut,
Je voudrais pouvoir couper toute connexion à internet si une déconnexion à mon vpn devait arriver. Une idée de comment faire ça ?
Je précise que je suis sous KDE, mais bon, je ne pense pas que ça joue… ?
Merci de votre aide.
//EDIT : ça existe sous Windows : http://www.logitheque.com/articles/comm … n_1300.htm
Dernière modification par abecidofugy (Le 22/04/2019, à 17:08)
KDE neon pour le plaisir d’avoir un O/S moderne et puissant et Firefox Nightly comme navigateur. Aussi sous Windows 11 pour une partie de mon travail…
Hors ligne
#2 Le 18/04/2019, à 22:06
- kamaris
Re : [Résolu] Couper internet en cas de déconnexion à un vpn
Salut, ça va être à base d'iptables si tu dois le faire à la main. Tu bannis par défaut toute connexion, et tu ne l'autorises ensuite que sur ton vpn.
Pour bannir c'est :
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
Ensuite pour autoriser sur un vpn d'interface tun0, de protocole udp sur le port 1194, ça peut être :
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A INPUT -i tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 1194 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A OUTPUT -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 1194 -j ACCEPT
C'est tiré de ce qui est fait pour ProtonVPN.
Après ça, à voir si tu dois rajouter des choses, comme autoriser le trafic en local, ou vers des IPs particulières… il faut que tu prennes le temps de lire la page de manuel d'iptables.
Dernière modification par kamaris (Le 18/04/2019, à 22:08)
Hors ligne
#3 Le 21/04/2019, à 20:54
- LukePerp
Re : [Résolu] Couper internet en cas de déconnexion à un vpn
Je voudrais pouvoir couper toute connexion à internet si une déconnexion à mon vpn devait arriver.
Voici deux solutions pour répondre à ton besoin, ce sont des kill switch :
https://github.com/primaryobjects/vpndemon
https://github.com/Philippe734/VPN-Lifeguard
J'utilise le premier en l'ayant un peu modifié, car c'est du script
Gamer inside - Ubuntu Mate dernière LTS - Intel i5, 16 Go - Dual boot Windows - Utilisateur de Dapps sur Ethereum
Hors ligne
#4 Le 22/04/2019, à 17:08
- abecidofugy
Re : [Résolu] Couper internet en cas de déconnexion à un vpn
abecidofugy a écrit :Je voudrais pouvoir couper toute connexion à internet si une déconnexion à mon vpn devait arriver.
Voici deux solutions pour répondre à ton besoin, ce sont des kill switch :
https://github.com/primaryobjects/vpndemon
https://github.com/Philippe734/VPN-Lifeguard
J'utilise le premier en l'ayant un peu modifié, car c'est du script
Merci beaucoup, ça marche impeccablement
Juste à installer Zenity
KDE neon pour le plaisir d’avoir un O/S moderne et puissant et Firefox Nightly comme navigateur. Aussi sous Windows 11 pour une partie de mon travail…
Hors ligne
#5 Le 01/05/2019, à 16:16
- abecidofugy
Re : [Résolu] Couper internet en cas de déconnexion à un vpn
@LukePerp : J’ai épinglé l’icône de VPN Demon, mais lorsque je cherche à le lancer via celui-ci, j’ai ce message d’erreur : "Impossible d'exécuter la commande spécifiée. Le fichier ou le dossier zenity n'existe pas."
Si j’efface le lanceur et fais un ALT + F2 en pointant VPN Demon, là le script se lance. Une idée de comment résoudre ça ?
Merci.
KDE neon pour le plaisir d’avoir un O/S moderne et puissant et Firefox Nightly comme navigateur. Aussi sous Windows 11 pour une partie de mon travail…
Hors ligne
#6 Le 01/05/2019, à 18:15
- LukePerp
Re : [Résolu] Couper internet en cas de déconnexion à un vpn
Oui, moi aussi j'avais le même problème. J'avais trouvé une solution. Je la récupère et je complète ce post.
Edit : voici la solution
J'avais trouvé un utilisateur qui avait modifié le script VPNDemon pour palier à ce défaut. La solution est d'utiliser trois scripts, dont vpndemon.sh que je colle ici. Le premier est à démarrer, il va démarrer vpndemon, connecter le vpn et démarrer les applications surveillées tel que qBittorrent. Le second va déconnecter le vpn à la fin et le troisième est vpndemon.
Premier script, celui qui va démarrer le vpn. Il est à épingler dans ton dock ou ajouter son lien dans le menu démarrer :
AutorecoVPN.sh
#!/bin/bash
# étape 1 : récupérer le UUI du vpn : nmcli con
# étape 2 : saisir le UUI dans ce script et DecoVPN.sh
TargetProgramName="qbittorrent"
VPNUUID="xxxxxxxxxxxx" # <<<<<<<< modifier ce UUI
#notify-send "Connexion du VPN..."
exec /ThePathTo/vpndemon.sh &
while [ "true" ]
do
VPNCON=$(nmcli con show --active | grep "$VPNUUID")
if [ -z "$VPNCON" ]; then
echo "VPN déconnecté"
(sleep 1s && nmcli con up uuid "$VPNUUID")
FLAGRECO="vrai"
else
if [[ $FLAGRECO = "vrai" ]]; then
FLAGRECO="faux"
#exec $TargetProgramName &
fi
fi
sleep 10
done
Le second script va fermer les applications surveillées lors de la déconnexion manuel du vpn, tel que qBittorrent :
DecoVPN.sh
#!/bin/bash
KillProgName="qbittorrent"
notify-send "Fermeture des torrents..."
pkill $KillProgName
pkill $KillProgName
pkill $KillProgName
sleep 2
notify-send "Déconnexion..."
pkill AutorecoVPN.sh
sleep 2
nmcli con down uuid xxx-xx-xx-xx-xxxxx # <<<< remplacer xxx par UUID du VPN
notify-send "VPN déconnecté"
Et le troisième script, vpndemon.sh
#!/bin/bash
killProgramName="qbittorrent"
killProgramNameB="firefox"
interface="org.freedesktop.NetworkManager.VPN.Connection"
member="VpnStateChanged"
logPath="/tmp/vpndemon"
header="VPNDemon\nProtection contre déconnexion VPN\n\n"
# Clear log file.
> "$logPath"
list_descendants()
{
local children=$(ps -o pid= --ppid "$1")
for pid in $children
do
list_descendants "$pid"
done
echo "$children"
}
# Consider the first argument as the target process
if [ -z "$killProgramName" ]
then
killProgramName=$(zenity --entry --title="VPNDemon" --text="$header Enter name of process to kill when VPN disconnects:")
fi
result=$?
if [ $result = 0 ]
then
if [ $killProgramName ]
then
header="$header Cibles : $killProgramName + $killProgramNameB\n\n"
(tail -f "$logPath") |
{
zenity --progress --title="VPNDemon" --text="$header Surveillance du VPN"
# Kill all child processes upon exit.
kill $(list_descendants $$)
} |
{
# Monitor for VPNStateChanged event.
dbus-monitor --system "type='signal',interface='$interface',member='$member'" |
{
# Read output from dbus.
(while read -r line
do
currentDate=`date +'%m-%d-%Y %r'`
# Check if this a VPN connection (uint32 2) event.
if [ x"$(echo "$line" | grep 'uint32 3')" != x ]
then
echo "VPN Connected $currentDate"
echo "# $header VPN Connecté $currentDate" >> "$logPath"
fi
# Check if this a VPN disconnected (uint32 7) event.
if [ x"$(echo "$line" | grep 'uint32 6\|uint32 7')" != x ]
then
echo "VPN Disconnected $currentDate"
notify-send "Déconnexion du VPN" "Reconnexion en cours..."
echo "# $header VPN Déconnecté $currentDate" >> "$logPath"
# Kill target process.
pkill $killProgramName
pkill $killProgramName
pkill $killProgramName
pkill $killProgramNameB
pkill $killProgramNameB
pkill $killProgramNameB
fi
done)
}
}
else
zenity --error --text="No process name entered."
fi
fi
echo "Déconnecter VPN"
exec /ThePathTo/DecoVPN.sh &
Dernière modification par LukePerp (Le 01/05/2019, à 19:51)
Gamer inside - Ubuntu Mate dernière LTS - Intel i5, 16 Go - Dual boot Windows - Utilisateur de Dapps sur Ethereum
Hors ligne
#7 Le 02/05/2019, à 18:16
- abecidofugy
Re : [Résolu] Couper internet en cas de déconnexion à un vpn
Donc je résume :
juste à installer Zenity
J'ai changé d’icône : j’ai épinglé /usr/share/applications/VPNDemon.desktop à mon panel de lancement, et ça marche sans autre procédure.
Dernière modification par abecidofugy (Le 05/01/2020, à 23:39)
KDE neon pour le plaisir d’avoir un O/S moderne et puissant et Firefox Nightly comme navigateur. Aussi sous Windows 11 pour une partie de mon travail…
Hors ligne