<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog personnel de Jérémy TRUFIER &#187; VPN</title>
	<atom:link href="http://www.jeremy-trufier.net/tag/vpn/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jeremy-trufier.net</link>
	<description>Un blog utilisant WordPress</description>
	<lastBuildDate>Fri, 01 Apr 2011 16:50:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Véritable VPN au travers d&#8217;un tunnel SSH</title>
		<link>http://www.jeremy-trufier.net/2009/12/21/veritable-vpn-au-travers-dun-tunnel-ssh/</link>
		<comments>http://www.jeremy-trufier.net/2009/12/21/veritable-vpn-au-travers-dun-tunnel-ssh/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 01:42:04 +0000</pubDate>
		<dc:creator>Jérémy TRUFIER</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Réseaux et Sécurité]]></category>
		<category><![CDATA[Osx]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Tunnel SSH]]></category>
		<category><![CDATA[Virtual Private Network]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://www.jeremy-trufier.net/?p=34</guid>
		<description><![CDATA[Bonjour ami informaticien ! Posons le décor : tu viens d&#8217;arriver dans un hôtel, tu t&#8217;installes confortablement afin de profiter de la connexion internet offerte gratuitement et de pouvoir téléphoner à ta tante Gertrude gratuitement grâce à ton compte SIP, et là ! Misère de misère, les ports SIP sont  bloqués, logique, l&#8217;hôtelier préfère faire [...]]]></description>
			<content:encoded><![CDATA[<p>Bonjour ami informaticien !</p>
<p><a href="http://www.jeremy-trufier.net/wp-content/uploads/2009/12/image_hotel_exterior_night_1.jpg" rel="lightbox[34]"><img class="alignleft size-medium wp-image-99" title="image_hotel_exterior_night_1" src="http://www.jeremy-trufier.net/wp-content/uploads/2009/12/image_hotel_exterior_night_1-225x300.jpg" alt="" width="197" height="262" /></a> Posons le décor : tu viens d&#8217;arriver dans un hôtel, tu t&#8217;installes confortablement afin de profiter de la connexion internet offerte gratuitement et de pouvoir téléphoner à ta tante Gertrude gratuitement grâce à ton compte SIP, et là ! Misère de misère, les ports SIP sont  bloqués, logique, l&#8217;hôtelier préfère faire payer les communications avec une légère surtaxe ! <em>[IRONIE ON] Oui oui, cet exemple est sorti de mon imagination, non non, ça ne m&#8217;est jamais arrivé&#8230; [IRONIE OFF]</em></p>
<p>Le problème est le même si tu désires jouer à un jeu dont les ports sont bloqués.</p>
<p>Ce qu&#8217;on va donc réaliser, c&#8217;est un VPN entre son ordinateur, appelons le A, et son serveur personnel S situé chez soi ou encore chez un hébergeur, S doit bien entendu être affranchi de toute limitation au niveau des ports. S doit également posséder un serveur SSH accessible depuis un port débloqué à l&#8217;hôtel. Généralement le port 22 par défaut est débloqué, cela ne devrait donc pas poser de problème.</p>
<p>Pour rappel un VPN (Virtual Private Network) permet de se connecter à un réseau distant et d&#8217;envoyer tout le trafic réseau par cette nouvelle connexion.</p>
<p><span id="more-34"></span></p>
<p><strong>Mais quels sont les avantages de cette méthode par rapport à un VPN PPTP, L2TP ou OpenVPN ???</strong></p>
<p>Pratiquement aucun, ce tunnel va juste être très rapide à configurer, seulement quelques lignes de commandes seront nécessaires, sécurisé grâce au tunnel SSH, et souvent les ports requis par PPTP ou L2TP sont bloqués.</p>
<p><strong>Bon, un petit schémas pour résumer peut-être ?</strong></p>
<p><strong> </strong></p>
<div id="attachment_48" class="wp-caption alignnone" style="width: 460px"><strong><strong><a href="http://www.jeremy-trufier.net/wp-content/uploads/2009/12/vpnSSH_2-m1.png" rel="lightbox[34]"><img class="size-full wp-image-48 " title="vpnSSH_2-m" src="http://www.jeremy-trufier.net/wp-content/uploads/2009/12/vpnSSH_2-m1.png" alt="VPN et tunnel SSH, schémas" width="450" height="167" /></a></strong></strong><p class="wp-caption-text">VPN et tunnel SSH, schémas</p></div>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong><span style="font-weight: normal;">C&#8217;est plus clair ? En fin de compte, tout le trafic transitera au travers d&#8217;un tunnel SSH, notre ordinateur sera donc connecté au réseau distant (192.168.0.0) comme s&#8217;il en faisait parti.</span></strong></p>
<p><strong><span style="font-weight: normal;">Bien maintenant, on sait où on va, mais on sait pas trop comment ! Pas de panique je ne te largue pas comme ça juste avec le principe ^^, la théorie est faite, place à la pratique.</span></strong></p>
<h3>Configuration du server SSH</h3>
<p><a href="http://www.jeremy-trufier.net/wp-content/uploads/2009/12/ssh.png" rel="lightbox[34]"><img class="size-medium wp-image-100 alignright" title="ssh" src="http://www.jeremy-trufier.net/wp-content/uploads/2009/12/ssh-190x300.png" alt="" width="190" height="300" /></a>Quelques petits prérequis afin que notre tunnel s&#8217;établisse correctement, nous allons devoir modifier un petit peu la configuration de notre serveur SSH :</p>
<p>Ce fichier est généralement situé ici : /etc/ssh/sshd_config<br />
Vous devez vérifier que les réglages suivant soit paramétrés comme ceci :</p>
<blockquote style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"><p>X11Forwarding yes</p>
<p>PermitTunnel yes</p>
<p>PermitRootLogin yes</p></blockquote>
<p>Ensuite il nous faut activer la redirection des paquets, désactivé par défaut sur la majorité des Linux.</p>
<blockquote style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"><p>sudo echo 1 &gt; /proc/sys/net/ipv4/ip_forward</p></blockquote>
<p>Puis finalement redemarrer le serveur SSH :</p>
<blockquote style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"><p>sudo /etc/init.d/sshd restart</p></blockquote>
<h3>Création du Tunnel SSH</h3>
<p>Sur la machine cliente (Ordinateur A sur notre schémas), la commande permettant de creer le tunnel est celle-ci :</p>
<blockquote style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"><p>sudo ssh -NTfv -w 11:10 root@ip_du_serveur_S</p></blockquote>
<p>Passons en revu les différentes options :<a href="http://www.jeremy-trufier.net/wp-content/uploads/2009/12/railway.jpg" rel="lightbox[34]"><img class="alignleft size-thumbnail wp-image-104" title="railway" src="http://www.jeremy-trufier.net/wp-content/uploads/2009/12/railway-150x150.jpg" alt="" width="150" height="150" /></a></p>
<ul>
<li>N : empêche l&#8217;execution d&#8217;une commande</li>
<li>T : n&#8217;alloue pas un terminal TTY à cette instance de connection SSH</li>
<li>f : executé en arrière plan</li>
<li>v : mode verbose, afin d&#8217;afficher les différents messages</li>
<li>w : lie deux interfaces, nous allons avoir l&#8217;interface tun11 sur Ordinateur A et tun10 sur Serveur S. Les deux auraient pu être tun10 ou encore tun0, mais je voulais bien les différencier pour ne pas les confondre. De plus dans mon cas tun0 est déjà utilisé sur mon serveur pour un VPN.</li>
<li>C : je ne l&#8217;ai pas mise, à essayer avec, cette option permet de compresser les données, du coup gain énorme de bande passante, mais perte de réactivité, pour des jeux à bannir, pour des page web à utiliser.</li>
</ul>
<p>Désormais, si tout c&#8217;est bien passé, nous avons notre tunnel SSH entre notre serveur et notre pc, il ne nous reste plus qu&#8217;a configurer les interfaces TUN et rediriger tout le traffic vers ce tunnel pour faire un pseudo-vpn.</p>
<h3>Configuration des interfaces TUN</h3>
<p>Sur notre machine cliente Ordinateur A :</p>
<blockquote>
<pre>sudo ifconfig tun11 192.168.0.61 pointopoint 192.168.0.60</pre>
</blockquote>
<p>si Ordinateur A tourne sous osx :</p>
<blockquote>
<pre>sudo ifconfig tun11 192.168.0.61 192.168.0.60</pre>
</blockquote>
<p>et sur notre serveur distant S :</p>
<blockquote>
<pre>sudo ifconfig tun10 192.168.0.60 pointopoint 192.168.0.61</pre>
</blockquote>
<p>ou sous osx :</p>
<blockquote>
<pre>sudo ifconfig tun10 192.168.0.60 192.168.0.61</pre>
</blockquote>
<p>Ces deux commandes a exécuter permette de définir une adresse ip aux interfaces TUN et de les lier en mode point-à-point pour simplifier les choses à l&#8217;interface distante.</p>
<p>Pour tester la configuration, faites un ping vers 192.168.0.60 depuis l&#8217;ordinateur A :</p>
<blockquote>
<pre>ping 192.168.0.60</pre>
</blockquote>
<p>Si 192.168.0.60 répond, c&#8217;est que vous êtes correctement relié au réseau distant.</p>
<p>Faites de même avec 192.168.0.61 depuis le serveur S pour tester dans l&#8217;autre sens.</p>
<h3>Redirection du trafic et création des routes</h3>
<p><a href="http://www.jeremy-trufier.net/wp-content/uploads/2009/12/DP3_La_ferrage_Cuers_APPIA_la_route.jpg" rel="lightbox[34]"><img class="alignright size-thumbnail wp-image-102" title="DP3_La_ferrage_Cuers_APPIA_la_route" src="http://www.jeremy-trufier.net/wp-content/uploads/2009/12/DP3_La_ferrage_Cuers_APPIA_la_route-150x150.jpg" alt="" width="150" height="150" /></a>Depuis le serveur S, nous allons redirigé tout le traffic envoyé par l&#8217;ordinateur A au travers de l&#8217;interface eth0 relié au réseau local.</p>
<blockquote>
<pre>sudo arp -sD 192.168.0.61 eth0 pub</pre>
</blockquote>
<p>Désormais, tout est bouclé du côté serveur, vous pouvez fermer votre terminal distant.</p>
<p>Maintenant sur ordinateur A, nous allons configurer les routes.</p>
<p>Pour voir les routes déjà configurée :</p>
<blockquote>
<pre>netstat -nr</pre>
</blockquote>
<p>sur linux :</p>
<blockquote>
<pre>sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.61 tun11
sudo route add ip_du_serveur_S gw 172.16.0.254 eth0
sudo route del default gw 172.16.0.254 eth0
sudo route add default gw 192.168.0.61 tun11</pre>
</blockquote>
<p>sur mac :</p>
<blockquote>
<pre>sudo route add -net 192.168.0/24 192.168.0.61
sudo route add ip_du_serveur_S 172.16.0.254
sudo route delete default 172.16.0.254
sudo route add default 192.168.0.61</pre>
</blockquote>
<p>And it&#8217;s done !!!</p>
<p>Un petit test dans un navigateur depuis Ordinateur A sur le site http://monip.org devra montrer l&#8217;IP internet du réseau du serveur S. Si ce n&#8217;est pas le cas, il faut retester les ping, puis si tout est bon, vérifier les routes, il y a surement une erreur de ce coté là.</p>
<p>Edit: Il se peut que vous n&#8217;arriviez pas à joindre des adresses Web, si c&#8217;est votre cas,un petit ping des dns google :</p>
<pre style="padding-left: 30px;">ping 8.8.8.8</pre>
<p>Si le ping passe, alors c&#8217;est que vos DNS ne sont pas correct, allez dans vos préférences réseau et changez les par :</p>
<pre style="padding-left: 30px;">8.8.8.8
4.4.4.4</pre>
<p>(Ce sont les serveurs DNS de google).</p>
<p>Et normalement tout devrais fonctionner.</p>
<p>Si le ping 8.8.8.8 ne passe pas, vous devez surement avoir un problème dans votre configuration des routes, vérifiez là.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeremy-trufier.net/2009/12/21/veritable-vpn-au-travers-dun-tunnel-ssh/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->