linuxaddict:administrer:reseau:novpnfor

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linuxaddict:administrer:reseau:novpnfor [10/05/2018, 18:14] Claude Clerclinuxaddict:administrer:reseau:novpnfor [10/08/2022, 01:53] (Version actuelle) Claude Clerc
Ligne 1: Ligne 1:
 ====== Ne pas passer par le VPN pour certains domaines ====== ====== Ne pas passer par le VPN pour certains domaines ======
  
-Certains domaines vérifient, avant de vous autoriser certains accès, que votre IP est bien une IP de votre pays. Si vous passez par un VPN qui vous donne une IP étrangère, cela vous interdit ces accès.+Certains sites vérifient, avant de vous autoriser certains accès, que votre IP provient bien d'un pays autorisé à utiliser leurs services (par exemple les sites proposant la rediffusion de programmes de télévision ; cela se dit //replay// en patois.Si vous passez par un VPN qui vous donne une IP étrangère, cela vous interdit ces accès.
  
 Ou bien, si votre VPN ralentit votre connexion, vous préférez ne pas passer par celui-ci pour télécharger des fichiers (mises à jour de paquets, par exemple). Ou bien, si votre VPN ralentit votre connexion, vous préférez ne pas passer par celui-ci pour télécharger des fichiers (mises à jour de paquets, par exemple).
Ligne 7: Ligne 7:
 Voici comment faire : Voici comment faire :
  
-Ajouter la ligne ''9 specialvpn'' au fichier ''/etc/iproute2/rt_tables'' +Installer les paquets iproute2 et traceroute 
-  echo "9 specialvpn" | sudo tee -a /etc/iproute2/rt_tables+  apt install iproute2 traceroute
  
 Créez le fichier ''/etc/novpnfor'' qui contiendra la liste des domaines concernés (un par ligne). Par exemple : Créez le fichier ''/etc/novpnfor'' qui contiendra la liste des domaines concernés (un par ligne). Par exemple :
Ligne 29: Ligne 29:
 extras.ubuntu.com extras.ubuntu.com
 archive.canonical.com archive.canonical.com
 +www.netflix.com
 </code> </code>
  
 Ensuite, créez le fichier ''/etc/network/if-up.d/tun0'' contenant : Ensuite, créez le fichier ''/etc/network/if-up.d/tun0'' contenant :
-<code> +<sxh bash>#!/bin/sh
-#!/bin/sh+
  
 NOVPNFOR=/etc/novpnfor NOVPNFOR=/etc/novpnfor
 +IP_ROUTEUR=192.168.0.254
 +
 export NOVPNFOR export NOVPNFOR
 +export IP_ROUTEUR
 +
 if [ ! -f $NOVPNFOR ]; then if [ ! -f $NOVPNFOR ]; then
   exit 0   exit 0
Ligne 45: Ligne 49:
 fi fi
  
-for site in `cat $NOVPNFOR | tr "\n" " "`; do route add -host $site gw 192.168.0.254; done+RT_TABLE9=$(echo -$(cat /etc/iproute2/rt_tables | grep specialvpn))
  
-## Dé-commenter en cas d'utilisation d'apparmor +if [ "$RT_TABLE9" = "" ]; then 
-#service apparmor restart &+  echo "9 specialvpn" | tee -a /etc/iproute2/rt_tables > /dev/null 
 +fi
  
 +if [ ! -f /tmp/novpnfor.tmp ]; then
 +  # echo -n $(stat -c %Y $NOVPNFOR) > /tmp/novpnfor.tmp
 +  touch /tmp/novpnfor.tmp
 +fi
 +
 +TSTAMP_OLD="$(cat /tmp/novpnfor.tmp)"
 +TSTAMP_NEW=$(echo -n $(stat -c %Y $NOVPNFOR))
 +FIRST_LINE=$(echo -n $(ip route show table specialvpn | tail -1))
 +echo "TSTAMP_OLD=$TSTAMP_OLD"
 +echo "TSTAMP_NEW=$TSTAMP_NEW"
 +if [ "$TSTAMP_NEW" != "$TSTAMP_OLD" ] || [ "$FIRST_LINE" = "" ]; then {
 +  for site in $(cat $NOVPNFOR | tr "\n" " "); do {
 +    #route add -host $site gw 192.168.0.254
 +    for anip in $(host -c IN $site | awk '{print $4}' | tr "\n" " "); do {
 +        if [ "$anip" != "alias" ] && [ "$anip" != "out" ]; then
 +           echo $anip
 +           ip route add $anip via $IP_ROUTEUR table specialvpn
 +        fi
 +    }; done
 +  }; done
 +  echo -n $(stat -c %Y $NOVPNFOR) > /tmp/novpnfor.tmp
 +}; fi
 +
 +SPECIALVPN_PRESENT=$(echo -n $(ip rule list | grep specialvpn))
 +if [ "$SPECIALVPN_PRESENT" = "" ]; then
 +  ip rule add table specialvpn
 +fi
 +#service apparmor restart &
 exit 0 exit 0
-</code>+ 
 +</sxh>
  
 Rendez ce fichier exécutable : Rendez ce fichier exécutable :
Ligne 57: Ligne 91:
  
 Enfin, créez le fichier ''/etc/network/if-post-down.d/tun0'' contenant : Enfin, créez le fichier ''/etc/network/if-post-down.d/tun0'' contenant :
-<code> +<sxh bash>#!/bin/sh
-#!/bin/sh+
  
 NOVPNFOR=/etc/novpnfor NOVPNFOR=/etc/novpnfor
Ligne 70: Ligne 103:
 fi fi
  
-for site in `cat $NOVPNFOR | tr "\n" " "`; do route del -host $site ; done+RT_TABLE9=$(echo -$(cat /etc/iproute2/rt_tables | grep specialvpn))
  
-## Dé-commenter en cas d'utilisation d'apparmor +if [ "$RT_TABLE9" = "" ]; then 
-#service apparmor restart &+  echo "      specialvpn" | tee -a /etc/iproute2/rt_tables > /dev/null 
 +fi 
 + 
 +SPEC_VPN=$(echo -n $(ip rule list | grep specialvpn)) 
 + 
 +if [ "$SPEC_VPN" != "" ]; then 
 +  ip rule del table specialvpn 
 +fi 
 + 
 +if [ ! -f /tmp/novpnfor.tmp ]; then 
 +  touch /tmp/novpnfor.tmp 
 +fi 
 + 
 +TSTAMP_OLD="$(cat /tmp/novpnfor.tmp)" 
 +TSTAMP_NEW=$(echo -n $(stat -c %Y $NOVPNFOR)) 
 + 
 +if [ "$TSTAMP_NEW" != "$TSTAMP_OLD" ]; then 
 +  ip route flush table specialvpn 
 +fi
  
 exit 0 exit 0
-</code>+ 
 +</sxh>
  
 Rendez ce fichier exécutable : Rendez ce fichier exécutable :
Ligne 82: Ligne 134:
  
 Vous pouvez tester ces scripts avec les commandes : Vous pouvez tester ces scripts avec les commandes :
-  sudo route+<sxh bash> 
 +  # On suppose que vous êtes connecté au VPN. 
 +  sudo traceroute -m 1 DOMAINE_NON_LISTÉ 
 +  sudo traceroute -m 1 DOMAINE_LISTÉ 
 +  # Les deux commandes ci-dessus retournent l'IP du routeur de votre fournisseur de VPN.
   sudo IFACE=tun0 /etc/network/if-up.d/tun0   sudo IFACE=tun0 /etc/network/if-up.d/tun0
-  sudo route+  sudo traceroute -m 1 DOMAINE_NON_LISTÉ 
 +  # La commande ci-dessus retourne l'IP du routeur de votre fournisseur de VPN. 
 +  sudo traceroute -m 1 DOMAINE_LISTÉ 
 +  # La commande ci-dessus retourne l'IP de votre routeur. (Pas de VPN pour ce domaine.)
   sudo IFACE=tun0 /etc/network/if-post-down.d/tun0   sudo IFACE=tun0 /etc/network/if-post-down.d/tun0
-  sudo route+  sudo traceroute -m 1 DOMAINE_NON_LISTÉ 
 +  sudo traceroute -m 1 DOMAINE_LISTÉ 
 +  # Les deux commandes ci-dessus retournent l'IP du routeur de votre fournisseur de VPN 
 +  # si vous êtes connecté au VPN, de votre routeur sinon. 
 +</sxh> 
 +où DOMAINE_NON_LISTÉ est un domaine qui ne fait pas partie de la liste contenue dans /etc/novpnfor, et DOMAINE_LISTÉ est un domaine qui en fait partie. 
 + 
 +Le script ''/etc/network/if-up.d/tun0'' est lancé automatiquement dès que la connexion VPN est établie. 
 + 
 +Le script ''/etc/network/if-post-down.d/tun0'' est lancé automatiquement une fois la connexion VPN tombée. 
 + 
 +---- 
 + 
 +{{counter|today| personne a visité cette page aujourd'hui| personnes ont visité cette page aujourd'hui}} et {{counter}} en tout.
  
  
 +~~YOURIP_BOX~~
  • linuxaddict/administrer/reseau/novpnfor.1525968845.txt.gz
  • Dernière modification : 10/05/2018, 18:14
  • de Claude Clerc