Skip to content

PrivatVpn.se : correction de l'installation par défaut

PrivatVpn est un fournisseur de VPN suédois. Son infrastructure fonctionne très bien pour un internaute qui souhaite rester anonyme sur le Net (IP d'origine cachée et pas de logs), en supposant que ce fournisseur garde bien ses informations secrètes...

L'installation sous Linux (en l'occurrence Mandriva 2012), basée sur openvpn, présente cependant une faille majeure connue sous le nom de DNS leak : les requêtes DNS passent par le fournisseur d'accès d'origine, ce qui ne permet ni de les masquer ni de les chiffer. Un sniffeur peut alors savoir à quels serveurs vous accédez, sans pour autant connaître le détail des échanges.

la suite de ce billet explique comment colmater cette brèche sous Linux.

Le site http://www.dnsleaktest.com/ détecte la même vulnérabilité avec l'installation sous Windows, mais le client fourni étant propriétaire, il est plus difficile d'intervenir sur les commandes d'openvpn.
Il faut tout d'abord créer un script (ne pas oublier le chmod +x) qui va permettre de mettre à jour le resolver de Linux en adaptant le contenu du fichier /etc/resolv.conf

Nous placerons ce script dans /etc/openvpn/update-resolv-conf par exemple. Voici son contenu

#!/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.
#
# 05/2006 chlauber@bnc.ch
#
# 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                                                                                                              
case $script_type in
up)
for optionname in ${!foreign_option_*} ; do
option="${!optionname}"
echo $option
part1=$(echo "$option" | cut -d " " -f 1)
if [ "$part1" == "dhcp-option" ] ; then
part2=$(echo "$option" | cut -d " " -f 2)
part3=$(echo "$option" | cut -d " " -f 3)
if [ "$part2" == "DNS" ] ; then
IF_DNS_NAMESERVERS="$IF_DNS_NAMESERVERS $part3"
fi
if [ "$part2" == "DOMAIN" ] ; then
IF_DNS_SEARCH="$part3"
fi
fi
done
R=""
if [ "$IF_DNS_SEARCH" ] ; then
R="${R}search $IF_DNS_SEARCH\n"
fi
for NS in $IF_DNS_NAMESERVERS ; do
R="${R}nameserver $NS\n"
done
echo -ne "$R" | /sbin/resolvconf -a "${dev}.inet"
;;
down)
/sbin/resolvconf -d "${dev}.inet"
;;
esac

Il est à noter que le script d'origine, que l'on peut trouver à l'adresse http://www.subvs.co.uk/openvpn_resolvconf présente une anomalie qui est ici corrigée.

Le script ci-dessous va être appelé directement par openvpn qui met à jour les variables d'environnement foreign_option avec les données provenant du serveur DHCP de PrivatVpn. Pour qu'open vpn appelle effectivement ce script, deux manipulations sont nécessaires.

La première consiste à ajouter les deux lignes suivantes à etc/openvpn/privatvpn.conf :

up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
La deuxième consiste à changer les options d'appel à openvpn dans /usr/bin/privatvpn. Voici à quoi ressemble le script après modification (ce script permet aussi de choisir son fichier de configuration, ce qui me permet de choisir le pays de géolocalisation du VPN) :

#!/bin/bash
if [ "x$1" != "x"  ] ; then
CONF="-$1"
fi
/usr/sbin/openvpn --script-security 3 system --config /etc/openvpn/privatvpn$CONF.conf

Voilà il ne reste plus qu'à composer des règles iptables pour n'autoriser le trafic que sur l'interface virtuelle chiffrée tap0 et on est sûr de ne plus avoir de fuite...

Voici par exemple ce que l'on peut faire. L'idée est de n'autoriser rien par défaut. Nous sommes sur un portable pour lequel les interface eth0 (ehternet) et wlan0 (wifi) sont disponibles.

#! /bin/bash
ORIGL="wlan0 eth0"
EXTIFL=tap0

echo "ACCES PRINCIPAL : $EXTIFL"

#set -en
echo Effacement des chaines
chains=`cat /proc/net/ip_tables_names 2>/dev/null`
for i in $chains; do iptables -t $i -F; done && \
        echo "Flushing all chains: OK" || \
        echo "Flushing all chains: BAD"
for i in $chains; do iptables -t $i -X; done && \
        echo "Removing user defined chains: OK" || \
        echo "Removing user defined chains: BAS"

echo Sécurité par défaut
iptables -N LOG_DROP
iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : '
iptables -A LOG_DROP -j DROP

iptables -N MY_DROP
#iptables -A MY_DROP -j LOG --log-prefix '[IPTABLES DEBUG DROP] : '
iptables -A MY_DROP -j DROP

iptables -P INPUT DROP 
iptables -P OUTPUT DROP 
iptables -P FORWARD DROP 

#echo Spoofing
#iptables -A INPUT -i $EXTIF -s 172.17.0.0/16 -j LOG_DROP

echo Machine a états
iptables -N chk_tcp
iptables -A chk_tcp -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset 
iptables -A chk_tcp -p tcp ! --syn -m state --state NEW -j LOG \
--log-prefix "New not syn:"
iptables -A chk_tcp -p tcp ! --syn -m state --state NEW -j MY_DROP
iptables -A chk_tcp -p tcp --syn -m state --state ESTABLISHED -j LOG \
--log-prefix "Syn not New:"
iptables -A chk_tcp -p tcp --syn -m state --state ESTABLISHED -j MY_DROP

iptables -A INPUT -p tcp -j chk_tcp
iptables -A OUTPUT -p tcp -j chk_tcp
iptables -A FORWARD -p tcp -j chk_tcp

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

for EXTIF in $EXTIFL ; do
echo "=================== Interface $EXTIF ========================="
#Netbios

echo Netbios

iptables -A INPUT -i $EXTIF --protocol udp --dport 137  -m state --state NEW -j MY_DROP
iptables -A OUTPUT -o $EXTIF --protocol tcp --dport 137 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF --protocol udp --dport 137 -m state --state NEW -j ACCEPT

iptables -A INPUT -i $EXTIF --protocol udp --dport 138  -m state --state NEW -j MY_DROP
iptables -A OUTPUT -o $EXTIF --protocol tcp --dport 138  -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF --protocol udp --dport 138 -m state --state NEW -j ACCEPT

iptables -A INPUT -i $EXTIF --protocol udp --dport 139  -m state --state NEW -j MY_DROP
iptables -A OUTPUT -o $EXTIF --protocol tcp --dport 139 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF --protocol udp --dport 139 -m state --state NEW -j ACCEPT

iptables -A OUTPUT -o $EXTIF --protocol tcp --dport 445  -m state --state NEW -j ACCEPT


echo Masquerade

iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

echo Tout en local

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

echo DNS

iptables -A OUTPUT -o $EXTIF -p udp --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp --dport 53 -m state --state NEW -j ACCEPT
 
echo Web

# Accès direct
iptables -A INPUT -i $EXTIF -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -i $EXTIF -p tcp --dport 8080 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp --dport 4470 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp --dport 4400 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp --dport 4401 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp --dport 8090 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp --dport 8009 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp --dport 8080 -m state --state NEW -j ACCEPT

# SSL
iptables -A OUTPUT -o $EXTIF -p tcp --dport 443 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp --dport 444 -m state --state NEW -j ACCEPT

# Proxy
iptables -A OUTPUT -o $EXTIF -p tcp --dport 3128 -m state --state NEW -j ACCEPT

echo NTPD

iptables -A OUTPUT -o $EXTIF -p udp --dport 123 -m state --state NEW -j ACCEPT

echo real

iptables -A OUTPUT -o $EXTIF -p tcp --dport 7070 -m state --state NEW -j ACCEPT

echo CDDB

iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 8880 -m state --state NEW -j ACCEPT

echo FTP

modprobe ip_conntrack_ftp
iptables -A OUTPUT -o $EXTIF -p tcp --dport 21 -m state --state NEW -j ACCEPT 
iptables -A INPUT -i $EXTIF -p tcp --dport 21 -m state --state NEW -j ACCEPT 

echo traceroute

iptables -A OUTPUT -o $EXTIF -p udp --dport 33434:33600  -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p icmp -m state --state NEW -j ACCEPT

echo Mail

# pop
iptables -A OUTPUT -o $EXTIF -p tcp --dport 110 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp --dport 995 -m state --state NEW -j ACCEPT
# SMTP
iptables -A OUTPUT -o $EXTIF -p tcp --dport 25 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp --dport 465 -m state --state NEW -j ACCEPT
#IMAP
iptables -A OUTPUT -o $EXTIF -p tcp --dport 993 -m state --state NEW -j ACCEPT

echo SSH

iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 22 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 2222 -m state --state NEW -j ACCEPT
iptables -A INPUT -i $EXTIF --protocol tcp --destination-port 22 -m state --state NEW -j ACCEPT

echo Real

iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 554 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 7070 -m state --state NEW -j ACCEPT

echo CVS

iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 2401 -m state --state NEW -j ACCEPT

echo Mysql
iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 3306 -m state --state NEW -j ACCEPT

echo Imprimantes

iptables -A OUTPUT -o $EXTIF --protocol udp --destination-port 8611 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 8611 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 9100 -m state --state NEW -j ACCEPT

echo LDAP
iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 389 -m state --state NEW -j ACCEPT

echo privatVPN
for ORIG in $ORIGL ; do
iptables -A OUTPUT -o $ORIG -p udp --dport 21000:21003 -m state --state NEW -j ACCEPT 
done

echo XMPP

iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 5222 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 5222 -j ACCEPT
iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 5223 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 5223 -j ACCEPT
iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 7777 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 7777 -j ACCEPT #transfert de fichier
iptables -A OUTPUT -o $EXTIF -p udp --dport 7777 -m state --state NEW -j ACCEPT
iptables -A INPUT -i $EXTIF -p udp --sport 7777 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 8010 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 8010 -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p udp --dport 8010:8013 -m state --state NEW -j ACCEPT
iptables -A INPUT -i $EXTIF -p udp --sport 8010:8013 -m state --state NEW -j ACCEPT

echo radio.fr
iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 8000 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXTIF --protocol tcp --destination-port 8058 -m state --state NEW -j ACCEPT

echo poubelle silencieuse

#bootp
iptables -A INPUT -i $EXTIF --protocol udp --dport 67 -m state --state NEW -j MY_DROP
iptables -A INPUT -i $EXTIF --protocol udp --dport 68 -m state --state NEW -j MY_DROP

#SUN RPC
iptables -A INPUT -i $EXTIF --protocol udp --dport 111  -m state --state NEW -j MY_DROP
iptables -A INPUT -i $EXTIF --protocol udp --dport 7938  -m state --state NEW -j MY_DROP

#Network Time Procol
iptables -A INPUT -i $EXTIF --protocol udp --dport 123  -m state --state NEW -j MY_DROP

#SNMP
iptables -A OUTPUT -o $EXTIF --protocol udp --dport 161 -j MY_DROP

#445
iptables -A OUTPUT -o $EXTIF --protocol tcp -d 172.17.9.19 --dport 445 -j MY_DROP
iptables -A OUTPUT -o $EXTIF --protocol tcp -d 172.17.9.34 --dport 445 -j MY_DROP

#RIP
#iptables -A INPUT -i $EXTIF --protocol udp --dport 520 -j MY_DROP

#Timed
iptables -A INPUT -i $EXTIF -p udp --dport 525 -m state --state NEW -j MY_DROP

#IPP
iptables -A INPUT -i $EXTIF -p udp --dport 631 -m state --state NEW -j MY_DROP
iptables -A OUTPUT -o $EXTIF -p udp --dport 631 -m state --state NEW -j MY_DROP

#Groove
iptables -A INPUT -i $EXTIF -p udp --dport 1211 -m state --state NEW -j MY_DROP

#Open Connect license manager
#iptables -A INPUT -i $EXTIF --protocol udp --dport 1448 -j MY_DROP

# Découverte de service sur le port 1900
iptables -A INPUT -i $EXTIF --protocol udp --dport 1900 -d 239.255.255.250 -j MY_DROP
iptables -A OUTPUT -o $EXTIF --protocol udp --dport 1900 -j MY_DROP

#Axon Control Protocol (Architecture distribuée)
iptables -A INPUT -i $EXTIF --protocol udp --dport 2071 -j MY_DROP

#vérification de licenses MS-office pour macs
iptables -A INPUT -i $EXTIF --protocol udp --dport 2223 -j MY_DROP

#Sybase Active Server
iptables -A INPUT -i $EXTIF --protocol udp --dport 2638 -j MY_DROP

#ENPC (contôle d'imprimante EPSON)
#iptables -A INPUT -i $EXTIF --protocol udp --dport 3289 -j MY_DROP

#Web Service Discovery (UPnP v2 Discovery)
iptables -A INPUT -i $EXTIF --protocol udp --dport 3702 -j MY_DROP

# Multicast DNS (Itune ?)
iptables -A INPUT -i $EXTIF --protocol udp --dport 5353 -j MY_DROP
iptables -A OUTPUT -o $EXTIF --protocol tcp --dport 5353 -j MY_DROP

#dropbox lanSync
iptables -A INPUT -i $EXTIF -p udp --sport 17500 -m state --state NEW -j MY_DROP
done

echo Log des erreurs
iptables -A INPUT -j LOG_DROP
iptables -A OUTPUT -j LOG_DROP
iptables -A FORWARD -j LOG_DROP

echo FIN

Rétroliens

Pas de rétroliens

Commentaires

Afficher les commentaires en Vue non groupée | Vue groupée

Anonyme sur :

Bonjour je suis actuellement avec le VPN privatvpn et je demande si cela est toujours d'actualité et comment on peut composer des règles iptables pour couper toute connexion quand le VPN est down.

Merci

Christian sur :

Bonjour peut on avoir les règles iptables correspondant pour pouvoir autoriser le trafic que sur l'interface tap0

Merci

@+

Sebastien sur :

Bonjour,

j'ai mis un exemple de règles iptables

Christian sur :

Bonjour et encore merci pour le suivi du post.

Par contre quand j'applique ces régles cela ne fonctionne pas chez moi.
Aucun accès internet,mail etc.

J'ai juste modifié ORIGL="wlan0 eth0" en ORIGL="eth0 eth1" car c'est un PC de bureau.

J'ai copié ce fichier dans etc/init.d/ , je l'ai rendu exécutable et j'ai lancé la commande : update-rc.d nomdufichier defaults pour l'activer au démarrage.

Quand je désactive ces règles cela fonctionne mais dés que je les actives j'ai plus d'accès à internet.

J'utilise privatvpn sur le serveur des pays-bas port 21000.

Sébastien sur :

voir ma réponse ci-dessous...

Sébastien sur :

Je viens de vérifier en coupant-collant les règles dans un fichier et tout est OK.

Attention : ces règles sont à appliquer une fois que la connexion VPN est établie. Elle assurent justement que l'interface native ne puisse traiter aucune donnée (on est sût ainsi de passer par l'interface virtuelle qui chiffre les données).

Il faut aussi vérifier que l'on utilise bien l'interface VPN tun0 et pas tap0 par exemple. Une fois que a connexion est établie, la commande ifconfig doit faire apparaître l'interface virtuelle tap0 (ou tun0). Si aucun interface n'apparaît c'est que l'on n'est pas connecté au VPN.

Certains serveurs du /etc/openvpn/privatvpn.conf ne sont pas fonctionnels (en particulier le premier qui est utilisé par défaut). J'utilise pour ma part généralement les serveurs suédois à l'adresse 91.240.64.20

Pour déboguer :

1) vérifier que tap0 est bien opérationnel en faisant un ifconfig

2) regarder les messages d'erreur avec un sudo tail -f /var/log/syslog

christian sur :

Merci pour ta réponse.

Après quelque essais cela fonctionne en rajoutant ces deux lignes :
iptables -A OUTPUT -o $ORIG -p udp --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $ORIG -p tcp --dport 53 -m state --state NEW -j ACCEPT
dans la boucle suivante :
echo privatVPN
for ORIG in $ORIGL ; do
iptables -A OUTPUT -o $ORIG -p udp --dport 21000:21003 -m state --state NEW -j ACCEPT
done

Je ne sais pas si c'est normal ou pas.
Par contre quand je vérifie mon IP j'ai bien une IP néerlandaise.
Et quand je test sur le site dnsleaktest je n'ai pas de fuite DNS.

Par contre une question à quoi correspond ces IP :
#445
iptables -A OUTPUT -o $EXTIF --protocol tcp -d 172.17.9.19 --dport 445 -j MY_DROP
iptables -A OUTPUT -o $EXTIF --protocol tcp -d 172.17.9.34 --dport 445 -j MY_DROP

Sebastien sur :

OK mais en ajoutant ces deux lignes les requêtes DNS peuvent passer en non chiffrées sur l'interface d'origine. Si elles débloque la situation, c'est que tu as au moins une requête DNS qui doit passer en non chiffré. Es-tu vraiment sûr que le test DNSLEAK te donne le bon résultat ?

Quels sont les erreurs dans ton syslog lorsque ces lignes ne sont pas présentes ? Est-ce que dans ce cas l'interface tap0 est montée ? Est-ce que ton privatvpn.conf contient des IP ou des noms de serveurs ?

La règle sur le port 445 bloque les partages windows de manière silencieuse - elle est optionnelle... :-D :-D

Christian sur :

Encore merci pour tes explications ça me permet de mieux comprendre ce que je fait.

Donc pour résumer quand j'applique tes règles sans aucunes modifications : pas d'accès internet.

Mon syslog :
Nov 19 09:53:37 ArizonaPC kernel: [ 85.050976] [IPTABLES DROP] : IN=eth0 OUT= MAC=ac:22:0b:cc:40:75:f4:ca:e5:57:25:2f:08:00 SRC=79.141.173.17 DST=192.168.0.44 LEN=105 TOS=0x00 PREC=0x00 TTL=55 ID=0 DF PROTO=UDP SPT=21000 DPT=37065 LEN=85
Nov 19 09:53:38 ArizonaPC kernel: [ 85.887719] [IPTABLES DROP] : IN=eth0 OUT= MAC=ac:22:0b:cc:40:75:f4:ca:e5:57:25:2f:08:00 SRC=79.141.173.17 DST=192.168.0.44 LEN=105 TOS=0x00 PREC=0x00 TTL=55 ID=0 DF PROTO=UDP SPT=21000 DPT=37065 LEN=85
Nov 19 09:53:39 ArizonaPC kernel: [ 86.896593] [IPTABLES DROP] : IN=eth0 OUT= MAC=ac:22:0b:cc:40:75:f4:ca:e5:57:25:2f:08:00 SRC=79.141.173.17 DST=192.168.0.44 LEN=105 TOS=0x00 PREC=0x00 TTL=55 ID=0 DF PROTO=UDP SPT=21000 DPT=37065 LEN=85
Nov 19 09:53:40 ArizonaPC kernel: [ 87.893957] [IPTABLES DROP] : IN=eth0 OUT= MAC=ac:22:0b:cc:40:75:f4:ca:e5:57:25:2f:08:00 SRC=79.141.173.17 DST=192.168.0.44 LEN=105 TOS=0x00 PREC=0x00 TTL=55 ID=0 DF PROTO=UDP SPT=21000 DPT=37065 LEN=85
Nov 19 09:53:41 ArizonaPC kernel: [ 88.894589] [IPTABLES DROP] : IN=eth0 OUT= MAC=ac:22:0b:cc:40:75:f4:ca:e5:57:25:2f:08:00 SRC=79.141.173.17 DST=192.168.0.44 LEN=105 TOS=0x00 PREC=0x00 TTL=55 ID=0 DF PROTO=UDP SPT=21000 DPT=37065 LEN=85
Nov 19 09:53:41 ArizonaPC kernel: [ 89.349771] [IPTABLES DROP] : IN= OUT=eth0 SRC=192.168.0.44 DST=192.168.0.254 LEN=68 TOS=0x00 PREC=0x00 TTL=64 ID=61605 DF PROTO=UDP SPT=56793 DPT=53 LEN=48
Nov 19 09:53:41 ArizonaPC kernel: [ 89.350108] [IPTABLES DROP] : IN= OUT=eth0 SRC=192.168.0.44 DST=192.168.0.254 LEN=68 TOS=0x00 PREC=0x00 TTL=64 ID=61606 DF PROTO=UDP SPT=27749 DPT=53 LEN=48
Nov 19 09:53:41 ArizonaPC kernel: [ 89.350443] [IPTABLES DROP] : IN= OUT=eth0 SRC=192.168.0.44 DST=192.168.0.254 LEN=68 TOS=0x00 PREC=0x00 TTL=64 ID=61607 DF PROTO=UDP SPT=65073 DPT=53 LEN=48

L'interface tap0 n'est pas construite.
Mon privatvpn.conf contient ceci :
client
remote vpn-nl1.privatevpn.com 21000
etc...

Donc en regardant le syslog je me suis aperçu que cela bloque au niveau du réseau local ( 192.168.0.44 )
Donc j'ai fait un test en rajoutant ces lignes ( en dessous des règles pour la boucle locale )dans mes règles iptables :
iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

Et là ça fonctionne ( ton script + mes 3 lignes ).

test IP :
http://i58.tinypic.com/282lrol.png
test DNS :
http://i58.tinypic.com/ipxklu.png

Sebasitien sur :

Tes lignes ne doivent servir que de tests car elles conduisent à mon avis à une trop grand ouverture (tout ce qui est transmis au routeur, en particulier les requêtes DNS en clair est autorisé).

Tel que ton privatvpn.conf est constitué, tu as besoin du DNS pour traduire vpn-nl1.privatevpn.com en son numéro IP. Faute de cette traduction, tu ne peux pas établir la connexion vers le VPN.

Deux solutions :

1) remplacer la ligne remote par :

remote 109.74.5.13 21000

2) ou bien ne lancer les règles IP qu'après la connexion VPN établie. la parti up) de /etc/openvpn/update-resolv-conf peut être utilisée. Pour ma par je fait tout manuellement après l'établissement de la connexion.

Christian sur :

Merci pour ta réponse.

Je pensais que mon réseau local était sûr car j'ai un seul PC derrière une freebox sans wifi d'activée.

Quand tu dis d'utiliser la partie up) du fichier update-resolv-conf c'est de rajouter une ligne pour exécuter tes règles iptables ?

Ajouter un commentaire

Marquer un texte en gras: *mot*, souligner un texte: _mot_.
Les smilies standard comme :-) et ;-) sont convertis en images.
:'(  :-)  :-|  :-O  :-(  8-)  :-D  :-P  ;-) 
Les adresses Email ne sont pas affichées, et sont seulement utilisées pour la communication.

Pour éviter le spam par des robits automatisés (spambots), merci d'entrer les caractères que vous voyez dans l'image ci-dessous dans le champ de fomulaire prévu à cet effet. Assurez-vous que votre navigateur gère et accepte les cookies, sinon votre commentaire ne pourra pas être enregistré.
CAPTCHA

Form options