Hello !
Pour mon premier message sur ce forum, je vous propose, en guise de présentation, un petit tutoriel, qui s'intitule donc :
Configurer un serveur VPN sous Mac OS X
Et, pour commencer, que je vous accroche un peu :
1 Serveur « VPN », pourquoi ?
1.1 Serveur « VPN », kézako ?
« VPN » est l'acronyme de « Virtual Private Network ». Pour faire simple, c'est un sur-protocole internet qui va creuser un tunnel à travers le web, depuis un poste client jusqu'à votre serveur ; ceci permet aux clients de se connecter « virtuellement » en réseau local au serveur.
Exemple typique, pour clarifier : vous êtes en déplacement, aux antipodes de votre domicile, et votre MacBook connecté au web via AirPort ; vous avez besoin ou envie d'accéder à un fichier qui se trouve chez vous, sur votre iMac, à des milliers de kilomètres ; aucun problème ! en quelques clics, vous êtes connecté à votre serveur à travers un tunnel protégé par un protocole de Diffie-Hellman à 2048 bits et un certificat de sécurité, et vous récupérez tout ce qu'il vous faut, dans le Finder, comme si de rien était.
1.2 Serveur « VPN », c'est bien ?
Oui, c'est bien ! Pourquoi ça ?
Vous pouvez accéder à votre Mac serveur dès que vous êtes connecté à internet avec votre Mac client.
Vous pouvez partager vos données, en donnant à vos amis des accès restreints personnalisés.
Du point de vue serveur, une fois l'installation effectuée, il n'y a plus rien à faire.
Du point de vue client, la connexion se fait en 2 clics, et le serveur apparaît immédiatement dans le Finder.
Bien mieux que MobileMe, qui ne propose qu'un faible espace payant, et certes plus compliquée qu'avec Mac OS X Server, la solution que je vous propose a le mérite d'être gratuite de A à Z et de partager tous les disques durs (internes et externes) de votre serveur !
Ça vous semble cool ? Alors on attaque.
2 Installation du serveur
Pour commencer, quelques précisions utiles :
Pour mener à bien cette installation, vous devez posséder des accès d'administration sur le Mac serveur. Il doit tourner sous Mac OS X 10.4 (Tiger) ou supérieur (personnellement, je suis sous Snow Leopard). Il doit être connecté à un routeur internet fournissant une IP externe fixe.
Ce tutoriel est un peu long, et il va toucher un peu profond dans votre ordinateur, je décline donc toute responsabilité si ça foire chez vous, et comme on dit toujours : sauvegardez vos données, ça fait pas de mal.
2.1 Préparation de l'installation
Pour commencer, vous devez installer un protocole VPN sur votre futur serveur. Nous allons utiliser OpenVPN, un projet open source et gratuit multi-platefomes (à propos (en anglais)). Téléchargez-le sur le site du projet (choisissez la dernière version, sous la forme ".tar.gz"). Décompressez tout ça, vous obtenez un dossier nommé "openvpn-2.1" ou quelque chose du genre.
C'est le moment d'ouvrir un terminal (/Applications/Utilities/Terminal.app). Entrez les commandes suivantes :
N'oubliez pas, dans la première commande, de mettre le vrai chemin d'accès du dossier téléchargé, celui-ci n'est qu'un exemple. La seconde commande vous demande, après un certain nombre de lignes de code, un mot de passe : il faut le mot de passe administrateur (ne vous inquiétez pas si rien ne s'affiche quand vous le tapez, c'est normal, c'est pour la sécurité, car le meilleur piratage se fait en regardant votre écran par-dessus votre épaule).
À ce stade (avant de taper le mot de passe) peut surgir un problème : les lignes de code se terminent en vous indiquant qu'il manque les bibliothèques LZO. Ces bibliothèques permettent la compression des fichiers durant le transfert et améliorent donc le débit, mais restent facultatifs. Vous pouvez donc tenter d'installer LZO (via fink, par exemple, mais ça ne marche pas toujours), ou faire sans en remplaçant la seconde commande par
Une fois l'installation terminée, vous avez le protocole OpenVPN, félicitations ! Pour le vérifier, go terminal et entrez la commande
et s'il vous affiche la page de manuel demandée, c'est bon, pressez la touche Q, sinon c'est raté. Gardez votre terminal ouvert, il va resservir.
2.2 Installation du serveur
Pour commencer, affichez les fichiers et dossiers cachés (pleins de façons de faire ça, par exemple via les paramètres d'OnyX). Ensuite, rendez-vous dans /etc/ et créez-y un nouveau dossier nommé "openvpn" (sans guillemet) s'il n'existe déjà. Copiez-y le dossier nommé "easy-rsa" qui se trouve dans le dossier que vous avez téléchargé auparavant. Pour tout ceci, /etc/ étant un dossier système, vous aurez besoin d'un mot de passe administrateur.
Bon, maintenant, dans ce dossier /etc/openvpn/easy-rsa/, il y a normalement plusieurs dossiers, genre "1.0", "2.0", "Windows", etc. Choisissez le nombre le plus élevé (par exemple "2.0") et entrez dans le dossier. Vous allez alors pouvoir configurer votre générateur de certificats.
Dans le dossier sus-mentionné se trouve un fichier nommé "vars" ; ouvrez-le avec TextEdit (ou avec "nano" dans le terminal, si vous êtes un(e) pro), et initialisez les variables situées à la fin du fichier (exemple de valeurs) :
Sauvegardez le fichier (n'ajoutez pas l'extension ".txt", et encodez en UTF-8) et fermez-le. C'est là que ça devient compliqué : il faut sourcer ce fichier, puis lancer les builders, or cette seconde partie nécessite d'être super-user ; le problème, c'est que la commande "sudo . ./vars" ne fonctionne pas dans bash (shell par défaut sous OS X) et que le même utilisateur doit sourcer et construire. Pour cela, il nous faut activer l'utilisateur "root" (l'utilisateur qui a tous les droits sur votre ordinateur).
Pour ce faire, dans le terminal, tapez
Il vous demande alors un mot de passe administrateur, puis 2 fois le nouveau mot de passe de "root". Maintenant que c'est fait, il faut se connecter en root, tapez donc
et renseignez le mot de passe que vous venez de définir. Entrez alors les commandes suivantes :
Ceci devrait vous poser plusieurs questions dans le terminal (les réponses entre crochets sont sélectionnez lorsque vous appuyez simplement sur Entrée, et vous les avez prédéfinies juste avant, donc ne vous fatiguez pas) ; tout est presque déjà rempli, reste le champ "Common Name" pour lequel vous pouvez mettre votre nom ou un pseudonyme.
Cette opération a créé l'autorité de certification de votre futur serveur (fichiers ca.crt et ca.key dans le dossier keys/). Maintenant, il vous faut aussi un certificat et une clef. Pour cela, entrez à la suite dans le terminal l'instruction
Laissez tous les champs par défaut, excepté "Common Name". Renseigner un mot de passe est inutile. Cette opération crée les fichiers "server.crt" et "server.key" dans keys/.
Vous suivez toujours ? Alors maintenant, il nous faut un protocole de Diffie-Hellman (protocole de cryptographie). Pour l'obtenir, entrez ensuite :
Choisissez le cryptage à 2048 bits, ceci crée le fichier "dh2048.pem" dans keys/. (Ça peut prendre du temps.)
Enfin, il va vous falloir une adresse DNS : vous devez créer une ardresse internet (du type "forums.macg.co", mais qui pointera sur votre propre serveur). C'est pour ce point que vous avez besoin d'une IP fixe, sinon il vous faudra un client de mise à jour d'IP, ce qui complique la chose. Je vous suggère d'utiliser DynDNS qui vous fournit gratuitement jusqu'à 5 hosts. Je vous laisse découvrir ça par vous-mêmes, je détaillerai si besoin. Vous devez revenir avec un host (ex. : lareinedangletterre.homeunix.org) associé à votre adresse IP.
C'est fait ? Alors let's move on.
2.2 Configuration du serveur
VPN est un protocole assez puissant, et, par conséquent et inévitablement, met en danger votre ordinateur. Pour cela, nous allons restreindre ses pouvoirs, en utilisant, pour lancer le serveur, un utilisateur aux droits limités. Pour ce faire, go Préférences Systèmes -> Comptes.
Commencez par créer un groupe d'utilisateurs nommé "vpn". Ensuite, créez un nouvel utilisateur, nommé "vpn", en mode Partage uniquement ; il doit être l'unique membre du groupe d'utilisateurs "vpn". Dans la liste à gauche de la fenêtre, faites un clic droit sur ce nouvel utilisateur "vpn", et choisissez Options avancées. Là, remplacez le contenu du champ "Shell d'accès" par "/usr/bin/false" et de "Répertoire de départ" par "/dev/null" (sans guillement). Comme c'est si bien marqué, une fois que c'est fait, redémarrez votre ordi (et même une seconde fois, pour être sûr(e)).
Il faut maintenant créer le fichier de configuration. Avec TextEdit (ou "nano" dans le terminal pour les pros ; si vous utilisez TextEdit, faites ⌘⇧T pour passer en mode texte, et pensez à enregistrer en UTF-8 et sans ".txt"), créez dans /etc/openvpn/ un fichier nommé "server.conf". Écrivez-y les coses suivantes :
Sauvegardez le fichier. Copiez les fichiers "ca.crt", "server.crt", "server.key", et "dh2048.pem", situés dans le dossier keys/ de tout-à-l'heure dans /etc/openvpn/, à côté de votre "server.conf". Si vous avez utilisé l'option "--disable-lzo" durant l'installation, supprimez la ligne "comp-lzo".
Bravo ! Vous avez installé un serveur VPN sur votre Mac !
Petit ajout : c'est encore mieux si votre serveur se lance au démarrage de l'ordinateur, n'est-ce pas ? Pour ce faire, allez dans /Library/LaunchDaemons/ et créez un fichier org.openvpn.plist avec TextEdit (ou nano ; encore une fois, avec TextEdit, passez en mode texte, et enregistrez en UTF-8 sans ".txt"). Écrivez-y
Sauvegardez-le.
2.3 Tests
Pour vérifier que tout marche bien, commencez par redémarrer (deux fois, pour être sûr(e)). Avec le launchdaemon créé, au redémarrage, le serveur doit déjà être en route.
Pour vérifier, commencez par taper
dans un terminal. Vous devriez voir une ligne commençant par "tun0".
Ensuite, entrez
qui devrait afficher une ligne du type
Enfin, vous pouvez tenter de contacter votre réseau VPN en tapant
qui ne devrait pas renvoyer de Request timeout (pour stopper le ping, faites ^C (contrôle + C)).
Si tout ça marche, c'est bon, votre serveur est opérationnel ! Félicitations !
2 Installation du client
Cette partie est déjà sur-traitée à travers le web, donc je fais une pause avant de la rédiger.
************************
J'espère que c'est assez clair pour tout le monde. En cas de problème, MP ou e-mail.
Je rajouterai la partie client et des images sous peu.
Merci de m'avoir lu, et bon VPN !
Pour mon premier message sur ce forum, je vous propose, en guise de présentation, un petit tutoriel, qui s'intitule donc :
Configurer un serveur VPN sous Mac OS X
Et, pour commencer, que je vous accroche un peu :
1 Serveur « VPN », pourquoi ?
1.1 Serveur « VPN », kézako ?
« VPN » est l'acronyme de « Virtual Private Network ». Pour faire simple, c'est un sur-protocole internet qui va creuser un tunnel à travers le web, depuis un poste client jusqu'à votre serveur ; ceci permet aux clients de se connecter « virtuellement » en réseau local au serveur.
Exemple typique, pour clarifier : vous êtes en déplacement, aux antipodes de votre domicile, et votre MacBook connecté au web via AirPort ; vous avez besoin ou envie d'accéder à un fichier qui se trouve chez vous, sur votre iMac, à des milliers de kilomètres ; aucun problème ! en quelques clics, vous êtes connecté à votre serveur à travers un tunnel protégé par un protocole de Diffie-Hellman à 2048 bits et un certificat de sécurité, et vous récupérez tout ce qu'il vous faut, dans le Finder, comme si de rien était.
1.2 Serveur « VPN », c'est bien ?
Oui, c'est bien ! Pourquoi ça ?
Vous pouvez accéder à votre Mac serveur dès que vous êtes connecté à internet avec votre Mac client.
Vous pouvez partager vos données, en donnant à vos amis des accès restreints personnalisés.
Du point de vue serveur, une fois l'installation effectuée, il n'y a plus rien à faire.
Du point de vue client, la connexion se fait en 2 clics, et le serveur apparaît immédiatement dans le Finder.
Bien mieux que MobileMe, qui ne propose qu'un faible espace payant, et certes plus compliquée qu'avec Mac OS X Server, la solution que je vous propose a le mérite d'être gratuite de A à Z et de partager tous les disques durs (internes et externes) de votre serveur !
Ça vous semble cool ? Alors on attaque.
2 Installation du serveur
Pour commencer, quelques précisions utiles :
Pour mener à bien cette installation, vous devez posséder des accès d'administration sur le Mac serveur. Il doit tourner sous Mac OS X 10.4 (Tiger) ou supérieur (personnellement, je suis sous Snow Leopard). Il doit être connecté à un routeur internet fournissant une IP externe fixe.
Ce tutoriel est un peu long, et il va toucher un peu profond dans votre ordinateur, je décline donc toute responsabilité si ça foire chez vous, et comme on dit toujours : sauvegardez vos données, ça fait pas de mal.
2.1 Préparation de l'installation
Pour commencer, vous devez installer un protocole VPN sur votre futur serveur. Nous allons utiliser OpenVPN, un projet open source et gratuit multi-platefomes (à propos (en anglais)). Téléchargez-le sur le site du projet (choisissez la dernière version, sous la forme ".tar.gz"). Décompressez tout ça, vous obtenez un dossier nommé "openvpn-2.1" ou quelque chose du genre.
C'est le moment d'ouvrir un terminal (/Applications/Utilities/Terminal.app). Entrez les commandes suivantes :
Bloc de code:
cd /Users/jeandupont/Downloads/openvpn-2.1/
./configure && make && sudo make-install
N'oubliez pas, dans la première commande, de mettre le vrai chemin d'accès du dossier téléchargé, celui-ci n'est qu'un exemple. La seconde commande vous demande, après un certain nombre de lignes de code, un mot de passe : il faut le mot de passe administrateur (ne vous inquiétez pas si rien ne s'affiche quand vous le tapez, c'est normal, c'est pour la sécurité, car le meilleur piratage se fait en regardant votre écran par-dessus votre épaule).
À ce stade (avant de taper le mot de passe) peut surgir un problème : les lignes de code se terminent en vous indiquant qu'il manque les bibliothèques LZO. Ces bibliothèques permettent la compression des fichiers durant le transfert et améliorent donc le débit, mais restent facultatifs. Vous pouvez donc tenter d'installer LZO (via fink, par exemple, mais ça ne marche pas toujours), ou faire sans en remplaçant la seconde commande par
Bloc de code:
./configure --disable-lzo && make && sudo make-install
Une fois l'installation terminée, vous avez le protocole OpenVPN, félicitations ! Pour le vérifier, go terminal et entrez la commande
Bloc de code:
man openvpn
et s'il vous affiche la page de manuel demandée, c'est bon, pressez la touche Q, sinon c'est raté. Gardez votre terminal ouvert, il va resservir.
2.2 Installation du serveur
Pour commencer, affichez les fichiers et dossiers cachés (pleins de façons de faire ça, par exemple via les paramètres d'OnyX). Ensuite, rendez-vous dans /etc/ et créez-y un nouveau dossier nommé "openvpn" (sans guillemet) s'il n'existe déjà. Copiez-y le dossier nommé "easy-rsa" qui se trouve dans le dossier que vous avez téléchargé auparavant. Pour tout ceci, /etc/ étant un dossier système, vous aurez besoin d'un mot de passe administrateur.
Bon, maintenant, dans ce dossier /etc/openvpn/easy-rsa/, il y a normalement plusieurs dossiers, genre "1.0", "2.0", "Windows", etc. Choisissez le nombre le plus élevé (par exemple "2.0") et entrez dans le dossier. Vous allez alors pouvoir configurer votre générateur de certificats.
Dans le dossier sus-mentionné se trouve un fichier nommé "vars" ; ouvrez-le avec TextEdit (ou avec "nano" dans le terminal, si vous êtes un(e) pro), et initialisez les variables situées à la fin du fichier (exemple de valeurs) :
Bloc de code:
export KEY_COUNTRY=FR
export KEY_PROVINCE=France
export KEY_CITY=Paris
export KEY_ORG="MonServeurVPN"
export KEY_EMAIL="[email protected]"
Sauvegardez le fichier (n'ajoutez pas l'extension ".txt", et encodez en UTF-8) et fermez-le. C'est là que ça devient compliqué : il faut sourcer ce fichier, puis lancer les builders, or cette seconde partie nécessite d'être super-user ; le problème, c'est que la commande "sudo . ./vars" ne fonctionne pas dans bash (shell par défaut sous OS X) et que le même utilisateur doit sourcer et construire. Pour cela, il nous faut activer l'utilisateur "root" (l'utilisateur qui a tous les droits sur votre ordinateur).
Pour ce faire, dans le terminal, tapez
Bloc de code:
sudo passwd root
Il vous demande alors un mot de passe administrateur, puis 2 fois le nouveau mot de passe de "root". Maintenant que c'est fait, il faut se connecter en root, tapez donc
Bloc de code:
login root
et renseignez le mot de passe que vous venez de définir. Entrez alors les commandes suivantes :
Bloc de code:
cd /etc/openvpn/easy-rsa/2.0/
. ./vars
./clean-all && ./build-ca
Ceci devrait vous poser plusieurs questions dans le terminal (les réponses entre crochets sont sélectionnez lorsque vous appuyez simplement sur Entrée, et vous les avez prédéfinies juste avant, donc ne vous fatiguez pas) ; tout est presque déjà rempli, reste le champ "Common Name" pour lequel vous pouvez mettre votre nom ou un pseudonyme.
Cette opération a créé l'autorité de certification de votre futur serveur (fichiers ca.crt et ca.key dans le dossier keys/). Maintenant, il vous faut aussi un certificat et une clef. Pour cela, entrez à la suite dans le terminal l'instruction
Bloc de code:
./build-key-server server
Laissez tous les champs par défaut, excepté "Common Name". Renseigner un mot de passe est inutile. Cette opération crée les fichiers "server.crt" et "server.key" dans keys/.
Vous suivez toujours ? Alors maintenant, il nous faut un protocole de Diffie-Hellman (protocole de cryptographie). Pour l'obtenir, entrez ensuite :
Bloc de code:
./build-dh
Choisissez le cryptage à 2048 bits, ceci crée le fichier "dh2048.pem" dans keys/. (Ça peut prendre du temps.)
Enfin, il va vous falloir une adresse DNS : vous devez créer une ardresse internet (du type "forums.macg.co", mais qui pointera sur votre propre serveur). C'est pour ce point que vous avez besoin d'une IP fixe, sinon il vous faudra un client de mise à jour d'IP, ce qui complique la chose. Je vous suggère d'utiliser DynDNS qui vous fournit gratuitement jusqu'à 5 hosts. Je vous laisse découvrir ça par vous-mêmes, je détaillerai si besoin. Vous devez revenir avec un host (ex. : lareinedangletterre.homeunix.org) associé à votre adresse IP.
C'est fait ? Alors let's move on.
2.2 Configuration du serveur
VPN est un protocole assez puissant, et, par conséquent et inévitablement, met en danger votre ordinateur. Pour cela, nous allons restreindre ses pouvoirs, en utilisant, pour lancer le serveur, un utilisateur aux droits limités. Pour ce faire, go Préférences Systèmes -> Comptes.
Commencez par créer un groupe d'utilisateurs nommé "vpn". Ensuite, créez un nouvel utilisateur, nommé "vpn", en mode Partage uniquement ; il doit être l'unique membre du groupe d'utilisateurs "vpn". Dans la liste à gauche de la fenêtre, faites un clic droit sur ce nouvel utilisateur "vpn", et choisissez Options avancées. Là, remplacez le contenu du champ "Shell d'accès" par "/usr/bin/false" et de "Répertoire de départ" par "/dev/null" (sans guillement). Comme c'est si bien marqué, une fois que c'est fait, redémarrez votre ordi (et même une seconde fois, pour être sûr(e)).
Il faut maintenant créer le fichier de configuration. Avec TextEdit (ou "nano" dans le terminal pour les pros ; si vous utilisez TextEdit, faites ⌘⇧T pour passer en mode texte, et pensez à enregistrer en UTF-8 et sans ".txt"), créez dans /etc/openvpn/ un fichier nommé "server.conf". Écrivez-y les coses suivantes :
Bloc de code:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
keepalive 10 120
comp-lzo
user vpn
group vpn
persist-key
persist-tun
status openvpn-status.log
log popenvpn.log
verb 2
Sauvegardez le fichier. Copiez les fichiers "ca.crt", "server.crt", "server.key", et "dh2048.pem", situés dans le dossier keys/ de tout-à-l'heure dans /etc/openvpn/, à côté de votre "server.conf". Si vous avez utilisé l'option "--disable-lzo" durant l'installation, supprimez la ligne "comp-lzo".
Bravo ! Vous avez installé un serveur VPN sur votre Mac !
Petit ajout : c'est encore mieux si votre serveur se lance au démarrage de l'ordinateur, n'est-ce pas ? Pour ce faire, allez dans /Library/LaunchDaemons/ et créez un fichier org.openvpn.plist avec TextEdit (ou nano ; encore une fois, avec TextEdit, passez en mode texte, et enregistrez en UTF-8 sans ".txt"). Écrivez-y
Bloc de code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.openvpn</string>
<key>OnDemand</key>
<false/>
<key>Program</key>
<string>/usr/local/sbin/openvpn</string>
<key>ProgramArguments</key>
<array>
<string>openvpn</string>
<string>--config</string>
<string>server.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>TimeOut</key>
<integer>90</integer>
<key>WorkingDirectory</key>
<string>/etc/openvpn</string>
</dict>
</plist>
Sauvegardez-le.
2.3 Tests
Pour vérifier que tout marche bien, commencez par redémarrer (deux fois, pour être sûr(e)). Avec le launchdaemon créé, au redémarrage, le serveur doit déjà être en route.
Pour vérifier, commencez par taper
Bloc de code:
ifconfig
dans un terminal. Vous devriez voir une ligne commençant par "tun0".
Ensuite, entrez
Bloc de code:
ps aux | grep vpn
qui devrait afficher une ligne du type
Bloc de code:
vpn 600 0,0 0,0 2435400 1452 ?? Ss 7:11 2:15.87 openvpn --config server.conf
Enfin, vous pouvez tenter de contacter votre réseau VPN en tapant
Bloc de code:
ping 10.8.0.1
qui ne devrait pas renvoyer de Request timeout (pour stopper le ping, faites ^C (contrôle + C)).
Si tout ça marche, c'est bon, votre serveur est opérationnel ! Félicitations !
2 Installation du client
Cette partie est déjà sur-traitée à travers le web, donc je fais une pause avant de la rédiger.
************************
J'espère que c'est assez clair pour tout le monde. En cas de problème, MP ou e-mail.
Je rajouterai la partie client et des images sous peu.
Merci de m'avoir lu, et bon VPN !