Problème VPN

Bonjour à tous, après maintes recherches sur mon ami Google qui ne sait malheureusement pas résoudre mon problème je viens demander votre aide.
Je vous explique le problème, dans le cadre d’un stage j’ai mis en place un serveur VPN basé sur OpenVPN et OpenSSL, celui-ci tourne sur un serveur Debian.
Mes clients quant à eux sont sur windows ou Mac. J’ai donc fait un test de connectivité en local tout fonctionne sans problème, j’ai donc décidé de faire un test avec un client configuré de chez moi, là encore il se connecte au VPN, mais après pas d’accès internet, et aucune possibilité de pinguer le serveur ou quoi que ce soit …
J’ai bien définit les routes ( enfin je présume puisque ça marchait en “local” ).
Bien que je pense que ce soit un problème de route, je ne sais pas trop où chercher car le réseau du CNRS est assez spécifique puisque toutes les machines et serveurs ont une ip publique, il ne font donc pas de nat. Au niveau du VPN j’ai opté pour une solution en mode routed.

Je vous détail la configuration du réseau :

un serveur Openvpn : 195.83.85.x MASK 255.255.254.0
un routeur CIsco : 195.83.84.x MASK 255.255.254.0

En “local” j’avais un client avec une ip 195.83.85.x MASK 255.255.254.0
De chez moi j’ai testé en étant derrière une freebox, je parviens à me connecter au serveur, mais ni le pinguer et encore moins accéder au net.

Voici la config serveur :

[code]########################################

Fichier de configuration du serveur

OpenVPN

########################################

Serveur UDP/53##

mode server

;Port en ecoute utilise pour la connexion VPN
;( pour plus de facilite on utilisera celui du DNS )
port 53

;Protocole utilise ( UDP car celui est plus rapide pour l’envoit des datagrammes )
proto udp

;Type d’interface virtuelle eee
dev tun

Cles et certificats

;certificat root auto-signe vu que le serveur joue aussi le role de PKI
ca ca.crt

;certificat du serveur
cert server.crt

;cle privee du serveur
key server.key

;Parametres Diffie Hellman avec une cle de 2048 bits (protection avancee)
dh dh2048.pem

;tls-auth : Protection HMAC supplementaire qui permet de dropper un paquet
;ne portant pas la bonne signature HMAC et de proteger de diverses attaques
tls-auth ta.key 0

;cipher : Alogrithme de chiffrement qui utilise une cle genere precedemment
cipher AES-256-CBC

Reseau

;Plage d’ipour les clients ( sur le dernier octet ), sachant que
;le serveur prend la 10.8.0.1
server 10.8.0.0 255.255.255.0

;Faire passer l’integralite du trafic dans le VPN
push “redirect-gateway local def1 bypass-dhcp”

;Indique aux clients l’adresse du/des serveurs DNS
push “dhcp-option DNS 193.50.6.43”

;Envoit de requete ping toute les 10s, si au bout de 120s aucune requete n’a ete
;envoyee le lien VPN est down
keepalive 10 120

Securite

;Indique un user ou groupe particulier pour le processus
;pour reduire les privilege sur le Daemon apres initialisation
user www-data
group www-data

;Permet de verouiller le daemon pour qu’il n’est pas acces aux fichiers systemes excepte
;certains fichiers specifiques
chroot /etc/openvpn/jail

;Rendre la connexion persistante
persist-key
persist-tun

;Activer la compression
comp-lzo

Log

;Level of log
;file verbosity
verb 5

;Redondance des messages
mute 20

;fichier de log
status openvpn-status.log

;Specifie les logs dans un autre fichier que le syslo (par defaut)
log-append /var/log/openvpn.log[/code]

Le client :

[code]###################################

Configuration du client

#Celle-ci peut etre utilisee par #
#differents client, cependant #
#chaque client aura son propre #
#certificats et cles #
###################################

Client

;Specifie que le fichier de conf est celui du client
client

;Interface utilisee
;(il faut utiliser la meme que le serveur)
dev tun

;Protocole utilise
proto udp

;Ip externe du serveur
remote 195.83.85.18 53

;Tentive de resolution de l’hostname du serveur OpenVPN
resolv-retry infinite

;Chiffrement
cipher AES-256-CBC

;Algorithme de chiffrement
auth SHA1

cles

ca ca.crt
cert tototest.crt
key tototest.key
tls-auth ta.key 1

Securite

;Ne pas se connectea l’adresse et au port locaux. La pile IP attribuera un
;port dynamique pour renvoyer les datagrammes
nobind

;Rendre la connexion persistante
persist-key
persist-tun

;Compression
comp-lzo

;Log file verbosity
verb 3
[/code]

Au niveau du routage sur le serveur :

[code]# Activation du mode routeur sur le serveur
echo “1”>/proc/sys/net/ipv4/ip_forward

On nat toutes les IP de cette plage d’ip afin qu’elles puissent aller sur internet

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE [/code]

Et voici un semblant de schéma pour tenter d’expliquer un peu mieux la config réseau
img201.imageshack.us/img201/6585/diagramme1.png

Merci d’avance pour votre aide

un petit up, personne n’aurait une petite idée de pourquoi ça ne fonctionne pas ?

Merci d’avance

Que donne route -n et ifconfig sur une machine cliente?
La connexion sur le serveur VPN (par exemple en ssh) est elle possible?

Bonjour,

J’utilise aussi openvpn mais sous netbsd avec une architecture similaire sauf que le réseau réservé pour openvpn est routable dans notre réseau.

Ce n’est pas ton cas.

Ton client derrière ta freebox sous openvpn se voit bien attribué une adresse ip dans le réseau (10.8.0.0. 255.255.255.0) ?

Pour diagnostiquer, il faut essayer de renifler le traffic pour voir les paquets sortir de ton interface réseau physique et entrer sur tun0 sur l’hôte hébergeant openvpn avec la commande tcpdump (tu lances un ping sur le client): Ca permettra de voir où ca bloque.

Bien vérifier la table de routage sur le client pour s’assurer de la passerelle (qui doit être l’autre extrémité du tunnel) de routage pour le réseau 10.8.0.0.

Essaye de pinger l’adresse ip de l’autre extrémité du tunnel puis ping l’adresse ip de l’interface réseau physique puis une machine du rédeau 195.XXX.XXX.XXX

Par contre désactive le parefeu pour tes test.

Si ca peux aider.

Aleph.

Bonjour à vous deux, pour répondre dans l’ordre :

@fran.b : si je fais un route print sur le client, la route par défaut change ( 10.8.0.5 ) et le client prend bien une ip en 10.8.0.6. Vu que la je suis au boulot, et pas sur la machine cliente je ne peux pas poster le détail du route print, car si je prend la main sur ma machine cliente et que je la connecte au VPN, je perd instantanément la main dessus donc pas de possibilité d’afficher un route print complet.
Par contre je n’arrive point à me connecter en SSH dessus.

@aleph : Pour résumer, oui au lancement du client VPN, celui-ci récupère bien une ip en 10.8.0.6 avec la gw 255.255.255.0. Pour la suite des tests je ferais ça ce soir et je posterais les résultats.

Merci pour votre aide à tous les deux.

Petit UP pour vous signaler que j’ai réussi à régler mon soucis, il suffisait de faire une modification dans le fichier de conf du serveur au niveau de cette ligne :

et la remplacer par celle-ci

D’après la doc officielle le “local” serait comme son nom l’indique pour travailler dans un VPN qui serait dans le même sous-réseau que ces clients, or ce n’est pas le cas ici.
Merci à ceux qui m’ont aidé et si vous avez d’autres questions sur le VPN hésitez pas, ça commence à rentrer ^^.