[[openvpn -> http://doc.ubuntu-fr.org/openvpn ]]

Transcription

[[openvpn -> http://doc.ubuntu-fr.org/openvpn ]]
[[openvpn -> http://doc.ubuntu-fr.org/openvpn]]
Table des matières
A - Installation......................................................................................................................................2
A.1 - OpenVPN................................................................................................................................2
A.2 - Apache, Mysql, PHP...............................................................................................................2
A.3 - Webmin...................................................................................................................................2
B - Configuration des VPN..................................................................................................................2
B.1 - Certificats de sécurité..............................................................................................................2
B.1.1 - Principe...........................................................................................................................2
B.1.2 - Générer le certificat et la clé de l’Autorité de Certification maître.................................3
B.1.3 - Générer un certificat et une clé pour le serveur..............................................................4
B.1.4 - Générer les certificats et les clés pour 3 clients..............................................................4
B.2 - Générer des paramètres Diffie-Hellman(¹).............................................................................5
C - Les fichiers clés..............................................................................................................................5
C.1 - Création des fichiers de configuration pour le serveur et les clients......................................5
C.1.1 - Obtenir les fichiers d’exemple de configuration.............................................................5
C.1.2 - Configuration du serveur................................................................................................6
C.1.3 - Configuration du client...................................................................................................6
D - Démarrage automatique d’OpenVPN au lancement du système...................................................7
E - Démarrage du VPN et tests de la connectivité...............................................................................7
E.1 - Démarrage du serveur.............................................................................................................7
E.2 - Démarrage du client................................................................................................................8
E.3 - Test..........................................................................................................................................8
E.4 - En cas d'utilisation de Firestarter............................................................................................8
F - Administration du serveur VPN......................................................................................................9
F.1 - Par telnet..................................................................................................................................9
F.2 - Utilisation de Webmin.............................................................................................................9
F.3 - Informations complémentaires................................................................................................9
F.3.1 - Inclure des machines côté serveur avec un VPN routé....................................................9
F.3.2 - Inclure des machines côté serveur avec un VPN bridgé................................................10
F.3.3 - Inclure des machines avec un VPN routé......................................................................10
F.3.4 - Inclure des machines côté client avec un VPN bridgé...................................................12
F.3.5 - Attribuer des options DHCP aux clients........................................................................12
G - Créer un VPN avec une adresse IP dynamique............................................................................12
H - Voir aussi......................................................................................................................................12
H.1 - Liens externes.......................................................................................................................12
H.2 - Notes.....................................................................................................................................13
I - Connecter un client Openvpn Windows à un serveur Openvpn Linux..........................................14
administration, réseau, sécurité, vpn
OpenVPN est un logiciel libre permettant de créer un réseau privé virtuel (VPN).
Tutoriel_Ubuntu_Openvpn
1 / 14
A-
Installation
A.1 - OpenVPN
installez les paquets openvpn openssh-server openssl. Vous devrez au préalable activer le dépôt
Universe.
Maintenant que le serveur OpenSSH est installé, il est possible de prendre la main sur le serveur
depuis n’importe où du réseau et même d’Internet (s’il y a une redirection de faite au niveau du
routeur) via l’adresse IP du serveur sur le port 22.
Pour ceux qui voudraient installer openvpn en le compilant c'est ici
A.2 - Apache, Mysql, PHP
L’installation d’Apache, MySQL et PHP n'est pas indispensable mais facilitera l'administration des
VPN grâce à une interface web.
Installez les paquets apache2 mysql-server-5.0 libapache2-mod-php5 php5 php5-common
php5-mysql.
A.3 - Webmin
Webmin fournit un module pour faciliter le paramétrage d'OpenVPN.
B-
Configuration des VPN
B.1 - Certificats de sécurité
B.1.1 - Principe
La première étape dans la construction d’une configuration OpenVPN 2.0 est d’établir une ICP
(Infrastructure de Clés Publiques) (PKI en anglais). Une ICP fonctionne grâce à :
• Une clé publique pour le serveur et une clé privée pour chacun des clients
• Un certificat de l’Autorité de Certification maître et des clés qui sont utilisées pour identifier
(signer, identifier…) chaque certificat serveur et client.
OpenVPN supporte une authentification bidirectionnelle basée sur les certificats, ce qui signifie que
le client doit authentifier le certificat du serveur et le serveur doit authentifier le certificat du client
avant qu’une confiance mutuelle puisse être établie.
Ce modèle de sécurité a un nombre de possibilités intéressante pour une utilisation en VPN :
• Le serveur n’a besoin que de ses propres certificats/clés, il n’a pas besoin de connaître
chacune des clés des clients qui peuvent s’y connecter.
• Le serveur n’acceptera les clients que lorsque le certificat sera signé par l’Autorité de
Certification maître (qui l’aura généré avant). Et comme le serveur peut vérifier cette
signature sans avoir besoin d’accéder à la clé privée de l’Autorité de Certification elleTutoriel_Ubuntu_Openvpn
2 / 14
même, il est possible pour la clé de l’Autorité de Certification (clé la plus sensible dans toute
l’Infrastructure de Clés Publiques) de résider sur une toute autre machine, même une sans
connexion réseau.
• Si une clé privée est compromise, il est possible de la désactiver en ajoutant son certificat à
une Liste de Révocation de Certificat (LRC ou CRL en anglais). La LRC permet aux
certificats compromis d’être rejetés sélectivement sans nécessiter une entière refonte de
l’Infrastructure de Clé Publiques.
Nous allons générer successivement un certificat/une clé de l’Autorité de Certification maître, un
certificat/une clé pour le serveur et des certificats/des clés pour 3 clients différents.
B.1.2 - Générer le certificat et la clé de l’Autorité de Certification maître
Pour la gestion de l’ICP, nous utiliserons un jeu de scripts livrés avec OpenVPN.
Il faut tout d’abord ouvrir un terminal et effectuer une copie dans son dossier /home des scripts de
génération de clés :
cp /usr/share/doc/openvpn/examples/easy-rsa ~/openvpn/ -R
L'ensemble des commandes se feront dans le répertoire déplacé :
cd ~/openvpn/2.0/
Maintenant éditez le fichiers vars et initialiser les variables KEY_COUNTRY, KEY_PROVINCE,
KEY_CITY, KEY_ORG, and KEY_EMAIL. Ne laisser surtout pas un seul champ vide.
Il faut modifier les dernières lignes à sa convenance. Dans notre cas :
export
export
export
export
export
KEY_COUNTRY=fr
KEY_PROVINCE=drome
KEY_CITY=valence
KEY_ORG=boiteinformatique
[email protected]
On initialise les variables (le point/espace/point n'est pas une erreur de frappe) :
. ./vars
On nettoie toutes les clés et certificats existants :
./clean-all
Puis, nous créons le certificat et la clée de l’Autorité de Certification Maitre (master Certificate
Authority (CA) :
./build-ca
La dernière commande (build-ca) va construire le certificat de l’Autorité de Certification et la
clé en utilisant la commande interactive openssl et sortira :
''Generating a 1024 bit RSA private key''
''............++++++''
''...........++++++''
''writing new private key to 'ca.key'''''-----''
''You are about to be asked to enter information that will be incorporated
into your certificate request.''
''What you are about to enter is what is called a Distinguished Name or a
DN.''
''There are quite a few fields but you can leave some blank''
''For some fields there will be a default value,''
''If you enter '.', the field will be left blank.''
''-----''
Tutoriel_Ubuntu_Openvpn
3 / 14
''Country Name (2 letter code) [fr]:''
''State or Province Name (full name) [drome]:''
''Locality Name (eg, city) [valence]:''
''Organization Name (eg, company) [boiteinformatique]:''
''Organizational Unit Name (eg, section) []:''
''Common Name (eg, your name or your server's hostname) []:''
''Email Address [[email protected]]:''
On remarque les champs peuvent être omis puisque l’on a prédéfini des valeurs par défaut (valeurs
entre crochets). Si un champs est laissé vide il faut entrer un point '.'. Le seul paramètre devant être
impérativement complété est le Common Name.
Le certificat et la clé de l’Autorité de Certification sont à présent créés : ca.crt et ca.key dans un
dossier keys.
B.1.3 - Générer un certificat et une clé pour le serveur
Nous allons générer un certificat et une clé privée pour le serveur :
Dans cet exemple, le nom de notre serveur est : server
./build-key-server server
Quand le Common Name est demandé, il faut entrer « server » comme le dernier paramètre entré
dans la commande précédente. Puis il faut mettre un mot de passe et un nom d’entreprise
(facultatif).
Suivent deux dernières questions qui requièrent des réponses positives :
Certificate is to be certified until Oct 26 21:48:37 2017 GMT (3650 days)
Sign the certificate ? [y/n] :y
1 out of 1 certificate requests certified, commit ? [y/n] y
Le certificat et la clé du serveur sont à présent créés : server.crt et server.key.
B.1.4 - Générer les certificats et les clés pour 3 clients
Générer des certificats et des clés pour les clients est une étape similaire à l’étape précédente.
Exemple avec un client nommé client1 :
./build-key client1
Quand le Common Name est demandé, il faudra donc entrer « client1 »
./build-key client2
./build-key client3
Pour protéger avec un mot de passe la clé, il faut utiliser ./build-key-pass au lieu de
./build-key.
Il faut toujours se rappeler que pour chaque client, le champ Common Name doit être renseigné et
unique.
Les certificats et les clés des clients sont créés.
Cette étape aurait pu se faire sur le client même, ce qui aurait évité de faire circuler des clées sur des
canaux moins sûr. Pour cela, il fallait simplement le certificat ca.crt sur la machine cliente qui
génère son certificat et sa clée.
Tutoriel_Ubuntu_Openvpn
4 / 14
B.2 - Générer des paramètres Diffie-Hellman(¹)
Les paramètres Diffie Hellman doivent être générés pour le serveur OpenVPN :
./build-dh
Ce qui donne :
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.................+...........................................
...................+.............+.................+.........
......................................
etc...
Les paramètres Diffie Hellman sont copiés dans le répertoire keys : dh1024.pem
C-
Les fichiers clés
Maintenant, nous pouvons trouver les clés et les certificats fraichement générés dans le dossier keys.
Suit une explication de ce que contiennent les fichiers du dossier keys.
Nom de fichier Utile à
Utilité
Secret
ca.crt
Serveur et tous les clients
Certificat racine CA
NON
ca.key
Clé signant la machine seulement Clé racine CA
dh{n}.pem
Serveur seulement
Paramètres Diffie Hellman NON
server.crt
Serveur seulement
Certificat serveur
NON
server.key
Serveur seulement
Clé serveur
OUI
client1.crt
Client1 seulement
Certificat Client1
NON
client1.key
Client1 seulement
Clé Client1
OUI
client2.crt
Client2 seulement
Certificat Client2
NON
client2.key
Client2 seulement
Clé Client2
OUI
OUI
L’étape finale dans ce processus de génération de clés est de copier tous les fichiers sur la machine
qui en a besoin, en prenant soin de les copier à travers un tunnel sûr.
Au lieu de générer les certificats et les clés clients sur le serveur, le client aurait pu générer sa propre
clé privée localement, et ensuite, soumettre un CSR (Certificat Signing Request ou Demande de
Signature de Certificat) à la machine qui signe les clés. A son tour, la machine signant les clés peut
procéder au CSR et retourner un certificat signé au client. Tout ceci peut se faire sans avoir besoin
qu’un fichier secret .key quitte le disque dur de la machine qui l'a généré.
C.1 - Création des fichiers de configuration pour le serveur et
les clients
C.1.1 - Obtenir les fichiers d’exemple de configuration
Dans le répertoire /usr/share/doc/openvpn/examples/sample-config-files/, vous trouverez des
fichiers de configuration client.conf et server.conf qui peuvent vous servir de base pour la
Tutoriel_Ubuntu_Openvpn
5 / 14
configuration de votre serveur/vos clients.
Si vous devez travailler avec des machines sous Windows l'extension ".conf" doit être changée en
".ovpn" sur le pc Windows.
C.1.2 - Configuration du serveur
Attention pour le serveur le fichier d'exemple est compressé : server.conf.gz, il faut le gunzipper
comme suit:
cd /usr/share/doc/openvpn/examples/sample-config-files
sudo gunzip server.conf.gz
puis exécuter la commande ci dessous
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf
/etc/openvpn/
Il faut donc éditer le fichiers /etc/openvpn/server.conf
Le fichier d’exemple de configuration pour le serveur est un point de départ pour une configuration
serveur d’OpenVPN. Il va créer un VPN utilisant une interface réseau virtuel TUN (pour le
routage), écouter les connections clients sur le port UDP 1194 (port officiel d’OpenVPN), et
distribuer des adresses virtuelles aux clients se connectant depuis le réseau 10.8.0.0/24.
À présent, le fichier de configuration serveur est utilisable. Néanmoins, il est toujours possible de
modifier le fichier plus en détail :
• En cas d’utilisation d’Ethernet bridgé, il faut utiliser server-bridge et dev tap au lieu de
server et dev tun
• Si le serveur doit écouter sur un port TCP au lieu d’UDP, il faut mettre proto tcp au lieu de
proto udp (si OpenVPN doit écouter sur les deux, il faut créer deux instances séparées
d’OpenVPN)
• Si l’adresse IP virtuelle utilisée doit être différente de 10.8.0.0/24, il faut modifier la
directive server. Ne jamais oublier que la plage d’adresse IP virtuelles doit être inutilisée sur
les réseaux de chaque côté du VPN.
• Pour que les clients soient capables de s’atteindre à travers le VPN, il faut décommenter la
directive client-to-client. Par défaut, les clients ne peuvent atteindre que le serveur.
• Pour augmenter la sécurité, il est possible de décommenter les directives user nobody et
group nobody. Diverses options de cryptage et de sécurité peuvent aussi être modifiées.
Pour faire fonctionner plusieurs instances d’OpenVPN sur la même machine, chacune utilisant un
fichier de configuration différent, il faut :
• Utiliser un port différent pour chaque instances (les protocoles UDP et TCP utilisent différent
espaces de port, donc un processus peut écouter le port UDP-1194 et un autre le port TCP1194)
• Faire attention, lorsque les instances d’OpenVPN utilisent le même dossier, que chacune
n’écrive pas sur les mêmes sorties. C'est-à-dire qu’il faut modifier les directives log, logappend, status et ifconfig-pool-persist.
C.1.3 - Configuration du client
Le fichier d’exemple de configuration du client client.conf reflète les directives mises dans le
fichier server.conf.
• Comme le fichier de configuration du serveur, éditez d’abord les paramètres ca, cert et key
pour pointer vers les fichiers générés précédemment. Chaque client doit avoir sa propre paire
Tutoriel_Ubuntu_Openvpn
6 / 14
cert/key. Seul le fichier ca est universel à travers le VPN (le serveur et tous les clients).
• Editez ensuite la directive remote pour indiquer l’adresse IP/nom d’hôte et le port du serveur
OpenVPN (s’il est derrière un routeur, il faut indiquer l’adresse publique et le port sur lequel
le routeur transfert vers le serveur OpenVPN)
• Pour terminer, il faut vérifier que la configuration client correspond bien à la configuration
serveur. Les directives principales à vérifier sont :
dev (tun ou tap)
proto (udp ou tcp)
comp-lzo
fragment
D-
Démarrage automatique d’OpenVPN au
lancement du système
Pour qu’OpenVPN se lance au démarrage du serveur ou du client, il faut placer le fichier de
configuration au bon endroit.
• Pour le serveur, copiez le fichier server.conf dans le répertoire /etc/openvpn
• Pour les clients, copiez le fichier client.conf dans /etc/openvpn
Il faut également déplacer les clés et certificats dans le dossier /etc/openvpn. Sont concernés :
• ca.crt : pour le serveur et le client
• pour le serveur :
• server.crt
• server.key
• dh1024.pem
• Pour le client :
• client.crt
• client.key
E - Démarrage du VPN et tests de la
connectivité
E.1 - Démarrage du serveur
Premièrement, il faut vérifier que le serveur OpenVPN sera accessible depuis Internet. Ce qui
signifie que :
• le port 1194 UDP (ou celui configuré) est bien ouvert sur le pare-feu
• une règle de transfert pour transférer le port 1194 UDP depuis le firewall vers le serveur
OpenVPN est bien établie
Ensuite, il faut vérifier que l’interface TUN/TAP n’est pas derrière un pare-feu.
Pour simplifier la recherche de problèmes, il est préférable de démarrer le serveur OpenVPN depuis
la ligne de commande plutôt que de démarrer le démon. Dans un terminal :
Tutoriel_Ubuntu_Openvpn
7 / 14
cd /etc/openvpn
sudo openvpn server.conf
Un démarrage normal ressemble à ça :
Tue Oct 30 05:22:17 2007 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO]
[EPOLL] built on May 21 2007
Tue Oct 30 05:22:17 2007 Diffie-Hellman initialized with 1024 bit key
Tue Oct 30 05:22:17 2007 TLS-Auth MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0
EL:0 ]
Tue Oct 30 05:22:17 2007 TUN/TAP device tun0 opened
Tue Oct 30 05:22:17 2007 ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu
1500
Tue Oct 30 05:22:17 2007 route add -net 10.8.0.0 netmask 255.255.255.0 gw
10.8.0.2
Tue Oct 30 05:22:17 2007 Data Channel MTU parms [ L:1542 D:1450 EF:42
EB:23 ET:0 EL:0 AF:3/1 ]
Tue Oct 30 05:22:17 2007 UDPv4 link local (bound): [undef]:1194
Tue Oct 30 05:22:17 2007 UDPv4 link remote: [undef]
Tue Oct 30 05:22:17 2007 MULTI: multi_init called, r=256 v=256
Tue Oct 30 05:22:17 2007 IFCONFIG POOL: base=10.8.0.4 size=62
Tue Oct 30 05:22:17 2007 IFCONFIG POOL LIST
Tue Oct 30 05:22:17 2007 Initialization Sequence Completed
E.2 - Démarrage du client
Comme dans la configuration serveur, il est préférable de démarrer le client OpenVPN depuis une
ligne de commande. Exemple pour le client1 configuré plus haut :
cd /etc/openvpn && sudo openvpn client1.conf
Un démarrage normal d’un client doit se terminer comme sur un démarrage de serveur :
Tue Oct 30 05:22:17 2007 Initialization Sequence Completed
E.3 - Test
Maintenant, essayons de pinguer à travers le VPN depuis le client.
Dans une configuration de routage (c’est-à-dire qu’il y a dev tun et non dev tap dans
server.conf), on peut essayer :
ping 10.8.0.1
Dans une configuration bridgée (c'est-à-dire qu’il y a dev tap et non dev tun dans
server.conf), on peut essayer de pinguer une machine sur le sous-réseau du serveur.
Si le ping a fonctionné, le VPN fonctionne !
E.4 - En cas d'utilisation de Firestarter
La méthode suivante a été testée pour une machine cliente en mode route. A
tester pour le mode bridge ou un serveur.
Il faut configurer FireStarter pour permettre le passage du VPN au travers du firewall :
Tutoriel_Ubuntu_Openvpn
8 / 14
Editez le fichier de configuration de Firestarter :
gksudo gedit /etc/firestarter/user-pre
Rajouter les lignes suivantes :
# Allow traffic on the OpenVPN inteface
$IPT -A INPUT -i tun+ -j ACCEPT
$IPT -A OUTPUT -o tun+ -j ACCEPT
Redémarrez Firestarter
sudo /etc/firestarter/firewall.sh start
F-
Administration du serveur VPN
F.1 - Par telnet
Il faut au préalable modifier le fichier de configuration du serveur.
Éditez le fichier /etc/openvpn/server.conf.
et ajoutez-y :
management localhost <un numéro de port>
Le numéro de port est libre pour peu qu'il ne soit pas utilisé par un autre service ou application.
Une fois la configuration modifiée, recharger ou redémarrez OpenVPN.
Un telnet localhost <le numéro de port> vous confirmera que tout s'est bien passé.
La commande help vous affichera la liste de commandes disponibles.
F.2 - Utilisation de Webmin
Si vous avez installé cet outil et le module d'administration d'OpenVPN, un sous-menu OpenVPN +
CA a fait son apparition dans le menu Serveurs
Ainsi, depuis Webmin, il est possible :
• de créer et/ou gérer les Autorités de Certification
• de créer et/ou gérer les VPN
• de lister les connexions actives
F.3 - Informations complémentaires
F.3.1 - Inclure des machines côté serveur avec un VPN routé
Une fois que le VPN est opérationel entre le client et le serveur, il peut être utile d’étendre le champ
du VPN pour que les clients puissent accéder à de multiples machines sur le réseau du serveur, au
lieu de pouvoir accéder seulement au serveur lui-même.
Tutoriel_Ubuntu_Openvpn
9 / 14
Pour l’exemple, nous admettrons que le sous-réseau côté serveur est en 192.168.1.0/24 et le
pool d’adresse IP du VPN est 10.8.0.0/24 comme utilisé précédemment. Pour être sûr de la
configuration, il faut vérifier le fichier /etc/openvpn/server.conf.
La première chose à faire, c’est indiquer au client que le réseau 192.168.1.0/24 peut-être
accessible à travers le VPN. Ceci peut-être fait facilement en utilisant la directive côté serveur
suivante :
push "route 192.168.1.0 255.255.255.0"
Puis, il faut créer une route sur la passerelle réseau côté serveur pour router le sous-réseau VPN du
client vers le serveur OpenVPN (seulement si le serveur OpenVPN n’est pas aussi la passerelle).
Pour ceci, il faut voir la documentation de votre passerelle et lui dire que tout le trafic venant de
l’extérieur sur le port attribué au VPN doit être redirigé sur le serveur OpenVPN
(adresseIP:port).
L’IP forwarding et le TUN/TAP forwarding doivent être activés sur le serveur OpenVPN.
Pour le vérifier, il est possible de tester chaque interface ou le système en général :
Vérification de l’interface TUN :
cat /proc/sys/net/ipv4/conf/tun0/forwarding
Vérification de l’interface réseau (exemple pour eth0) :
cat /proc/sys/net/ipv4/conf/eth0/forwarding
Vérification de toutes les interfaces :
cat /proc/sys/net/ipv4/conf/all/forwarding
Vérification de l’IP forwarding en général :
cat /proc/sys/net/ipv4/ip_forward
F.3.2 - Inclure des machines côté serveur avec un VPN bridgé
Dans cette configuration, les machines sont inclues directement sans avoir à modifier quoi que ce
soit.
F.3.3 - Inclure des machines avec un VPN routé
Dans un scénario typique d’accès distant ou même d’utilisation itinérante, la machine cliente se
connecte au VPN comme étant seule. Mais supposons que la machine cliente est une passerelle pour
un réseau local, et que chaque machine veut être capable de router à travers le VPN.
Pour l’exemple, nous admettrons que le sous-réseau côté client est en 192.168.4.0/24, et que le
client VPN utilise un certificat avec le «common name» client2. Le but est de créer un VPN qui
permettrait à chaque machine du réseau client de communiquer avec chaque machine du réseau
serveur à travers le VPN.
Avant de commencer, il y a des prérequis qui doivent être suivis :
• Le sous-réseau client (192.168.4.0/24 dans l’exemple) doit être unique. Il peut y avoir des
conflits en cas de sous-réseau identique.
• Le client doit avoir un «common name» unique dans son certificat et le marqueur «duplicatecn» (ce marqueur permet d’avoir des clients avec le même nom de certificat) ne doit pas être
utilisé dans le fichier de configuration du serveur OpenVPN.
L’IP forwarding et le TUN/TAP forwarding doivent être activés sur le client OpenVPN qui servira
Tutoriel_Ubuntu_Openvpn
10 / 14
de passerelle.
Puis, il faut modifier des configurations côté serveur. Si le fichier de configuration du serveur ne fait
pas référence à un dossier de configuration client, il faut en créer un :
mkdir /etc/openvpn/ccd
(il peut être créé ailleurs mais il faudra penser à modifier à chaque fois son chemin)
Puis, dans le fichier server.conf, il faut ajouter la ligne :
client-config-dir ccd
Dans cette directive, «ccd» fait référence au répertoire qui vient d’être créé.
Quand un nouveau client se connecte au serveur OpenVPN, le processus OpenVPN va vérifier ce
dossier pour y trouver un fichier qui porte le même nom que le «common name» du certificat du
client. Si un fichier correspondant est trouvé, il sera lu et utilisé pour appliquer des directives
supplémentaires au client.
L’étape suivant est de créer un fichier nommé «client2» dans le dossier /etc/openvpn/ccd dans
lequel vous ajouterez (dans cet exemple) :
iroute 192.168.4.0 255.255.255.0
Ceci permet d'indiquer au serveur OpenVPN que le sous-réseau 192.168.4.0/24 peut être routé
vers le client2.
Dans le fichier de configuration du serveur /etc/openvpn/server.conf (et non dans ccd/client2), il
faut ajouter :
route 192.168.4.0 255.255.255.0
Pourquoi mettre des informations redondantes ? « route » contrôle le routage dans le noyau vers le
serveur OpenVPN (via l’interface tun) alors que «iroute» contrôle le routage depuis le serveur
OpenVPN vers le client distant. Les deux sont nécessaires.
Maitenant, la question est : Est-ce que l’on veut permettre aux différents clients du VPN de
dialoguer ensemble. Si c’est le cas, il faut ajouter dans le fichier de configuration du serveur
/etc/openvpn/server.conf :
client-to-client push "route 192.168.4.0 255.255.255.0"
Ceci permet au serveur OpenVPN d'indiquer aux autres clients que le réseau du client2 existe.
La dernière étape, celle qui est souvent oubliée, est d’ajouter une route sur la passerelle du réseau
côté serveur qui redirigera le trafic allant vers 192.168.4.0/24 vers le serveur OpenVPN (inutile si la
passerelle est le serveur OpenVPN).
Pour ceci, il faut voir la documentation de votre passerelle et lui indiquer que tout le trafic allant
vers 192.168.4.0/24 doit être redirigé sur le serveur OpenVPN (adresseIP:port).
Si cette étape n’est pas faite, et qu’il faille pinguer une machine sur le réseau côté serveur depuis le
192.168.4.8, le ping sortant atteindrait probablement la machine mais ensuite, la machine ne saurait
pas comment router la réponse au ping parce qu’elle n’a aucune idée de comment elle peut atteindre
192.168.4.0/24.
La règle empirique à utiliser est que le routage d'un réseau entier à travers un VPN (c'est-à-dire
lorsque le serveur OpenVPN n’est pas la passerelle) nécessite que la passerelle route tous les sousréseaux VPN vers le serveur OpenVPN.
De manière identique, si la machine client utilisant OpenVPN n’est pas la passerelle pour le réseau
côté client, il faut que la passerelle côté client route tous les sous-réseaux atteignables à travers le
Tutoriel_Ubuntu_Openvpn
11 / 14
VPN vers la machine client OpenVPN.
F.3.4 - Inclure des machines côté client avec un VPN bridgé
Ceci requiert une installation plus complexe (mais peut-être moins complexe en pratique qu’à
expliquer en détails), il faut :
• Faire un pont entre l’interface tap et l’interface réseau sur le client
• Fixer manuellement l’adresse IP et le masque de sous-réseau de l’interface tap du client
• Configurer les machines côté client pour qu’elles utilisent une adresse IP et un masque de
sous-réseau pour être sur le même sous-réseau que l’interface tap du client OpenVPN. Il est
possible de faire attribuer une adresse automatiquement par un serveur DHCP du côté
serveur
F.3.5 - Attribuer des options DHCP aux clients
Le serveur OpenVPN peut attribuer une adresse automatique aux clients mais aussi toutes les
options DHCP tels que les adresses des serveurs DNS ou WINS. Il faut que le client soit configuré
de telle manière qu’il soit capable d’accepter ce genre d’information.
Exemple : supposons que le client veuille utiliser un serveur DNS et un serveur WINS internes à son
réseau. Pour ceci, il faut ajouter au fichier de configuration du serveur OpenVPN :
push "dhcp-option DNS 192.168.1.4"
push "dhcp-option DNS 192.168.1.5"
push "dhcp-option WINS 192.168.1.8"
G - Créer un VPN avec une adresse IP
dynamique
Alors que les clients peuvent facilement accéder au serveur en ayant une adresse IP dynamique, ça
devient plus intéressant quand le serveur lui-même a une adresse IP publique dynamique. Bien
qu’OpenVPN fonctionne très bien avec ce genre de schéma, il faut quand même configurer certaines
choses.
La première étape est d’obtenir un DNS dynamique qui peut être configuré pour suivre le serveur
chaque fois que l’adresse IP change. Il y a beaucoup de service de DNS dynamique disponible tel
que DynDNS.
Il faudra toutefois s'assurer de la mise à jour de l'adresse IP correspondant au nom d'hôte choisi afin
de pouvoir retrouver facilement le serveur VPN.
H-
Voir aussi
H.1 - Liens externes
• Le site officiel d'OpenVPN
• Un HOWTO sur l'installation/configuration d'OpenVPN sous Debian Etch (que vous pouvez
Tutoriel_Ubuntu_Openvpn
12 / 14
suivre en lançant en premier lieu un shell super utilisateur avec la commande « sudo -s »)
• Article sur Wikipédia
H.2 - Notes
1. Échange_de_clés_Diffie-Hellman
Pour plus d'informations, n'hésitez pas à contacter pezzos.
Contributeurs : pezzos, krop (élagage, nettoyage, corrections), zedtux.
openvpn.txt · Dernière modification: 2009/03/06 04:06 par 213.95.41.13
Le contenu de ce wiki est sous double licence : CC BY-SA et GNU FDL
Tutoriel_Ubuntu_Openvpn
13 / 14
I - Connecter un client Openvpn Windows à
un serveur Openvpn Linux.
http://www.system-linux.eu/index.php?post/2009/01/26/Installation-dun-client-Openvpn-Windows
Tout d'abord télécharger la version Windows d’OpenVPN (la même
que le serveur si possible 2.0.9 ou 2.1_rc15) :
téléchargement ici : http://openvpn.net/index.php/downloads.html
Ensuite Il faut copier dans C :/Program Files/OpenVPN/config/
les fichiers client que l’on a normalement créé sur notre serveur : ca.crt, client1.crt et client1.key.
On utilise ensuite le fichier de configuration d’exemple client.ovpn situé dans
C :/Program Files/OpenVPN/sample-config/
On le copie dans le répertoire C :/Program Files/OpenVPN/config/ et on édite les directives
comme ceci :
remote 195.43.56.xx 1194 ; adresse IP du serveur OPENVPN
ca ca.crt
cert client1.crt
key client1.key
On démarre OpenVPN comme ceci :
Démarrer, Programmes, OpenVPN, OpenVPN-GUI.
Pour se connecter, on clique droit sur l’icone d’OpenVPN à côté de l’heure,
puis Se connecter.
L’installation a du vous créer une interface TAP-Win32
Voila
Tutoriel_Ubuntu_Openvpn
14 / 14

Documents pareils

Installation-d-un-se..

Installation-d-un-se.. « appliance » avancées, les connexions à des sites « https » peuvent être autorisées sans pour autant que le VPN SSL soit fonctionnel. Attention ! Si votre serveur est hébergé sur une plateforme vi...

Plus en détail

configuration de openvpn avec client fedora et client windows

configuration de openvpn avec client fedora et client windows ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/VPNSRV.crt key /etc/openvpn/easy-rsa/keys/VPNSRV.key dh /etc/openvpn/easy-rsa/keys/dh1024.pem tls-auth /etc/openvpn/easy-rsa/key...

Plus en détail

un tuto

un tuto Authentication: Using 160 bit message hash 'SHA1' for HMAC

Plus en détail

Passerelle VPN : OpenVPN

Passerelle VPN : OpenVPN La configuration des clients est beaucoup plus simple que celle du serveur : il suffit de définir les éléments de base et les certificats SSl à utiliser pour établir la connexion. Une configuration...

Plus en détail