IPTABLES : et VPN

Voila mon .conf

client
remote vpn-nl1.privatevpn.com 21000
dev tap
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/ca.crt
auth-user-pass /etc/openvpn/privatvpn.login
ns-cert-type server
comp-lzo
verb 3

A côté de ce fichier j’ai un fichier update-resolv-conf

#!/bin/bash
# 
# Parses DHCP options from openvpn to update resolv.conf
# To use set as 'up' and 'down' script in your openvpn *.conf:
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
#
# Used snippets of resolvconf script by Thomas Hood and Chris Hanson.
# Licensed under the GNU GPL.  See /usr/share/common-licenses/GPL. 
# 
# Example envs set from openvpn:
#
#     foreign_option_1='dhcp-option DNS 193.43.27.132'
#     foreign_option_2='dhcp-option DNS 193.43.27.133'
#     foreign_option_3='dhcp-option DOMAIN be.bnc.ch'
#

[ -x /sbin/resolvconf ] || exit 0
[ "$script_type" ] || exit 0
[ "$dev" ] || exit 0

split_into_parts()
{
	part1="$1"
	part2="$2"
	part3="$3"
}

case "$script_type" in
  up)
	NMSRVRS=""
	SRCHS=""
	for optionvarname in ${!foreign_option_*} ; do
		option="${!optionvarname}"
		echo "$option"
		split_into_parts $option
		if [ "$part1" = "dhcp-option" ] ; then
			if [ "$part2" = "DNS" ] ; then
				NMSRVRS="${NMSRVRS:+$NMSRVRS }$part3"
			elif [ "$part2" = "DOMAIN" ] ; then
				SRCHS="${SRCHS:+$SRCHS }$part3"
			fi
		fi
	done
	R=""
	[ "$SRCHS" ] && R="search $SRCHS
"
	for NS in $NMSRVRS ; do
        	R="${R}nameserver $NS
"
	done
	echo -n "$R" | /sbin/resolvconf -a "${dev}.openvpn"
	;;
  down)
	/sbin/resolvconf -d "${dev}.openvpn"
	;;
esac

Si cela peut aider quelqu’un à m’aiguiller.

Le serveur VPN est spécifié par son nom de domaine mais il ne pointe que vers une seule adresse IP qui ne semble pas varier (pas de “DNS round robin” qui aurait pu être utilisé pour faire de la répartition de charge). Donc la règle avec cette adresse devrait être efficace et permettre l’établissement du VPN.

Concernant le DNS, le script update-resolv-conf que tu cites n’a un effet que si le paquet resolvconf est installé. Le plus simple est de comparer le contenu du fichier /etc/resolv.conf selon que le VPN est établi ou pas.

Mais j’avais posé d’autres questions auxquelles tu n’as pas répondu :
Qu’entends-tu exactement par “pas de connexion au net” ?
Que donne un traceroute vers une adresse IP publique ?
Ajoute les règles LOG et tu verras tout de suite les paquets bloqués dans les logs du noyau.

[quote=“PascalHambourg”]
Mais j’avais posé d’autres questions auxquelles tu n’as pas répondu :
Qu’entends-tu exactement par “pas de connexion au net” ?
Que donne un traceroute vers une adresse IP publique ?
Ajoute les règles LOG et tu verras tout de suite les paquets bloqués dans les logs du noyau.[/quote]

Par pas de connexion au net c’est quand j’applique mes règles iptables, je lance par exemple Firefox et là rien ne ce passe, pas de connexion vers un site internet.

Pour le traceroute j’ai ça (avec mes règles iptables):

traceroute to www.google.fr (173.194.45.88), 30 hops max, 60 byte packets
send: Opération non permise

Sans les règles cela fonctionne bien sûr.

traceroute to www.google.fr (173.194.40.152), 30 hops max, 60 byte packets
 1  79.141.169.129 (79.141.169.129)  40.013 ms  41.216 ms  42.617 ms
 2  irb20.cr1.ams2.nl.ipv4.kaiaglobal.com (79.141.173.1)  43.815 ms  45.507 ms  46.463 ms
 3  xe-0-0-1-0.cr1.ham2.de.ipv4.kaiaglobal.com (193.34.48.162)  58.023 ms  58.980 ms  60.672 ms
 4  po1.cr1.ham1.de.ipv4.kaiaglobal.com (193.34.48.77)  61.889 ms  63.535 ms  64.958 ms
 5  74.125.52.62 (74.125.52.62)  66.914 ms  67.623 ms  69.332 ms
 6  209.85.249.126 (209.85.249.126)  70.765 ms  47.601 ms  47.628 ms
 7  72.14.233.216 (72.14.233.216)  49.279 ms  50.388 ms 72.14.233.167 (72.14.233.167)  52.180 ms
 8  209.85.240.222 (209.85.240.222)  61.773 ms  63.696 ms  64.652 ms
 9  209.85.243.43 (209.85.243.43)  76.209 ms  76.675 ms  78.926 ms
10  209.85.245.80 (209.85.245.80)  79.565 ms  81.277 ms  82.953 ms
11  209.85.243.47 (209.85.243.47)  83.975 ms  86.114 ms  87.247 ms
12  par10s10-in-f24.1e100.net (173.194.40.152)  65.096 ms  64.894 ms  64.782 ms

Pour les logs j’essaye de comprendre comment cela fonctionne car c’est nouveau pour moi.

Je viens de remarquer une erreur de syntaxe qui m’avait échappé malgré plusieurs relectures dans le dernier script que tu as publié :

Dans la chaîne OUTPUT, il faut spécifier l’interface de sortie avec [mono]-o[/mono] et non [mono]-i[/mono]. N’as-tu pas remarqué le message d’erreur résultant lors de l’exécution du script ?
Pour le nom tun0 au lieu de tap0, je suppose que tu avais déjà corrigé.
Une fois la correction faite, pour savoir exactement où on en est, envoie la sortie d’[mono]iptables-save[/mono].

[quote=“Arizona”]Bonjour à tous,

Voila j’utilise un VPN pour surfer et j’aimerais savoir comment on peut interdire l’accès au net quand mon VPN est Down.

Je sais que l’on peut le faire grâce à iptables mais je suis un peu perdu.

Si quelqu’un c’est déjà intéressé à la question et bien j’aimerais bien un petit coup de main.

Merci d’avance

@+[/quote]

Bonjour, je me suis posé la même question il y a quelques jours quand mon VPN est tombé…

J’ai appliqué les règles de ce lien, et maintenant quand le VPN tombe, tout le traffic est stopé. À préciser que pour toi il faudra remplcer “tun0” par “tap0”.

Bon courage.