Wiki des iiens

Piste:

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
tuto_mise_en_place_d_un_vpn [2014/10/21 19:58]
geoffroy2010 créée
tuto_mise_en_place_d_un_vpn [2020/06/02 21:14] (Version actuelle)
Ligne 16: Ligne 16:
 Concernant les VPNs, il existe la solution du riche: les VPNs tout configurés, souvent avec une version au débit ultra limité gratuite et des versions payante, généralement hors de prix. Cette solution est souvent clé en main et dans tous les cas les sites proposant ce genre de services décrivent très bien la marche à suivre pour mettre en place leur produit. Concernant les VPNs, il existe la solution du riche: les VPNs tout configurés, souvent avec une version au débit ultra limité gratuite et des versions payante, généralement hors de prix. Cette solution est souvent clé en main et dans tous les cas les sites proposant ce genre de services décrivent très bien la marche à suivre pour mettre en place leur produit.
  
-Sauf que, comme nous sommes étudiants, nous sommes pauvres et donc on va s'intéresser à une solution avec un meilleur rapport qualité/prix: la mise en place d'un VPN sur un serveur personnel.+Sauf que, comme nous sommes étudiants, nous sommes pauvres et donc on va s'intéresser à une solution avec un meilleur rapport qualité/prix: la mise en place d'un VPN sur un serveur personnel. Avec une offre de serveur pas chère (souvent un VPS) on peut s'en tirer pour moins de 3€ par mois !
  
 Pour cela, il vous faudra (en vrac): Pour cela, il vous faudra (en vrac):
Ligne 70: Ligne 70:
     vim vars     vim vars
 comme ceci:\\  comme ceci:\\ 
-**export KEY_COUNTRY="FR"**\\  +    export KEY_COUNTRY="FR" 
-**export KEY_PROVINCE="91"**\\  +    export KEY_PROVINCE="91" 
-**export KEY_CITY="Evry"**\\  +    export KEY_CITY="Evry" 
-**export KEY_ORG="votredomaine.fr"**\\  +    export KEY_ORG="votredomaine.fr" 
-**export KEY_EMAIL="an@nyme.fr"**\\ +    export KEY_EMAIL="an@nyme.fr"
  
 Pour savoir comment utiliser vim, utilisez dans un terminal la commande vimtutor Pour savoir comment utiliser vim, utilisez dans un terminal la commande vimtutor
Ligne 100: Ligne 100:
     vim server.conf     vim server.conf
  
-Puis remplissez-le comme suit:\\  +Puis remplissez-le comme suit: 
-   # Serveur TCP/443\\  +    # Serveur TCP/443 
-   mode server\\  +    mode server 
-   proto tcp\\  +    proto tcp 
-   port 443\\  +    port 443 
-   dev tun\\  +    dev tun 
-   # Cles et certificats\\  +    # Cles et certificats 
-   ca ca.crt\\  +    ca ca.crt 
-   cert server.crt\\  +    cert server.crt 
-   key server.key\\  +    key server.key 
-   dh dh1024.pem\\  +    dh dh1024.pem 
-   tls-auth ta.key 1\\  +    tls-auth ta.key 1 
-   key-direction 0\\  +    key-direction 0 
-   cipher AES-256-CBC\\  +    cipher AES-256-CBC 
-   # Reseau\\  +    # Reseau 
-   server 10.8.0.0 255.255.255.0\\  +    server 10.8.0.0 255.255.255.0 
-   push "redirect-gateway def1 bypass-dhcp"\\  +    push "redirect-gateway def1 bypass-dhcp" 
-   push "dhcp-option DNS 208.67.222.222"\\  +    push "dhcp-option DNS 208.67.222.222" 
-   push "dhcp-option DNS 208.67.220.220"\\  +    push "dhcp-option DNS 208.67.220.220" 
-   keepalive 10 120\\  +    keepalive 10 120 
-   # Securite\\  +    # Securite 
-   user nobody\\  +    user nobody 
-   group nogroup\\  +    group nogroup 
-   chroot /etc/openvpn/jail\\  +    chroot /etc/openvpn/jail 
-   persist-key\\  +    persist-key 
-   persist-tun\\  +    persist-tun 
-   comp-lzo\\  +    comp-lzo 
-   # Log\\  +    # Log 
-   verb 3\\  +    verb 3 
-   mute 20\\  +    mute 20 
-   status openvpn-status.log\\  +    status openvpn-status.log 
-   ; log-append /var/log/openvpn.log\\ +    ; log-append /var/log/openvpn.log
  
 Voila nous sommes prêt a lancer le serveur pour cela: Voila nous sommes prêt a lancer le serveur pour cela:
Ligne 149: Ligne 149:
 Pour que cela soit toujours en place au prochain demarrage du serveur il faut l'indiquer dans un fichier de configuration soit en ajoutant une ligne soit en dé-commentant celle qui existe déjà dans le fichier /etc/sysctl.conf Pour que cela soit toujours en place au prochain demarrage du serveur il faut l'indiquer dans un fichier de configuration soit en ajoutant une ligne soit en dé-commentant celle qui existe déjà dans le fichier /etc/sysctl.conf
  
-Voici la ligne qui doit être présente dans ce fichier:\\  +Voici la ligne qui doit être présente dans ce fichier: 
-net.ipv4.ip_forward = 1\\  +    net.ipv4.ip_forward = 1 
-Maintenant mettons en place les règles de routage\\  + 
-   iptables -I FORWARD -i tun0 -j ACCEPT \\  +Maintenant mettons en place les règles de routage : 
-   iptables -I FORWARD -o tun0 -j ACCEPT \\  +    iptables -I FORWARD -i tun0 -j ACCEPT 
-   iptables -I OUTPUT -o tun0 -j ACCEPT \\  +    iptables -I FORWARD -o tun0 -j ACCEPT 
-   iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT \\  +    iptables -I OUTPUT -o tun0 -j ACCEPT 
-   iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE \\  +    iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT 
-   iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE \\  +    iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE 
-   iptables -t nat -A POSTROUTING -s 10.8.0.2/24 -o venet0 -j MASQUERADE \\  +    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE 
-A noter la présence de venet0 au lieu de eth0, car sur les serveurs vps souvent ce ne sont pas des interfaces physiques de cartes réseau, mais des cartes virtuelles. Sur un serveur dédie ce sera donc eth0 (généralement).+    iptables -t nat -A POSTROUTING -s 10.8.0.2/24 -o venet0 -j MASQUERADE 
 + 
 +A noter la présence de venet0 au lieu de eth0, car sur les serveurs vps souvent ce ne sont pas des interfaces physiques de cartes réseau, mais des cartes virtuelles. Sur un serveur dédie ce sera donc eth0 (généralement). Vérifiez le nom de votre interface avec ''ifconfig''
 Maintenant nous pouvons sauvegarder les régles dans un fichier afin de pouvoir s'en servir à chaque démarrage du serveur pour cela nous passons la commande Maintenant nous pouvons sauvegarder les régles dans un fichier afin de pouvoir s'en servir à chaque démarrage du serveur pour cela nous passons la commande
     sh -c "iptables-save > /etc/iptables.rules"      sh -c "iptables-save > /etc/iptables.rules" 
Ligne 182: Ligne 185:
     cd /etc/openvpn/clientconf/pcportablenicolargo/     cd /etc/openvpn/clientconf/pcportablenicolargo/
  
-Puis on créé le fichier client.conf suivant (il faut remplacer A.B.C.D par l'adresse publique de votre serveur VPN que vous pouvez obtenir avec la commande "wget -qO- ifconfig.me/ip" ou en lisant ce que vous affiche ubuntu server lors de votre connexion):\\  +Puis on créé le fichier client.conf suivant (il faut remplacer A.B.C.D par l'adresse publique de votre serveur VPN que vous pouvez obtenir avec la commande "wget -qO- ifconfig.me/ip" ou en lisant ce que vous affiche ubuntu server lors de votre connexion): 
- +    # Client 
-   # Client\\  +    client 
-   client\\  +    dev tun 
-   dev tun\\  +    proto tcp-client 
-   proto tcp-client\\  +    remote A.B.C.D 443 
-   remote A.B.C.D 443\\  +    resolv-retry infinite 
-   resolv-retry infinite\\  +    cipher AES-256-CBC 
-   cipher AES-256-CBC\\  +    ; client-config-dir ccd 
-   ; client-config-dir ccd\\  +    # Cles 
-   # Cles\\  +    ca ca.crt 
-   ca ca.crt\\  +    cert SauvezMoïse.crt 
-   cert pcportablenicolargo.crt\\  +    key SauvezMoïse.key 
-   key pcportablenicolargo.key\\  +    tls-auth ta.key 1 
-   tls-auth ta.key 1\\  +    key-direction 1 
-   key-direction 1\\  +    # Securite 
-   # Securite\\  +    nobind 
-   nobind\\  +    persist-key 
-   persist-key\\  +    persist-tun 
-   persist-tun\\  +    comp-lzo 
-   comp-lzo\\  +    verb 3
-   verb 3\\ +
  
 Si vous comptez utiliser votre configuration sur un client qui se trouve derrière un proxy, ajoutez: \\  Si vous comptez utiliser votre configuration sur un client qui se trouve derrière un proxy, ajoutez: \\ 
-http-proxy-retry\\  +    http-proxy-retry 
-http-proxy adresse_du_proxy port_du_proxy\\ +    http-proxy adresse_du_proxy port_du_proxy
 après "; client-config-dir ccd" dans le cas d'un proxy http. Pour un proxy socks, référez-vous à la documentation d'openvpn. après "; client-config-dir ccd" dans le cas d'un proxy http. Pour un proxy socks, référez-vous à la documentation d'openvpn.
  
Ligne 227: Ligne 229:
  
 Dézippez dans un endroit facile à retrouver. Dézippez dans un endroit facile à retrouver.
 +
 +=== OS X ===
  
 Sur un client OS X, installez tunnelblk et indiquez-lui le fichier client.ovpn. Connectez-vous à votre vpn et profitez :-). Sur un client OS X, installez tunnelblk et indiquez-lui le fichier client.ovpn. Connectez-vous à votre vpn et profitez :-).
 +
 +=== Windows ===
  
 Sur un client Windows, installez le client openvpn. Sur le racourcis mis par défaut sur le bureau: clique droit -> propriétés -> compatibilité et cochez "Executer ce programme en tant qu'administrateur". Puis dans le dossier d'installation d'openvpn (typiquement: C:\Programmes\OpenVPN\) copiez le contenu de l'archive (configuration du client + certificats) dans le dossier "config". Lancez openvpn en utilisant le racourcis de votre bureau. Connectez-vous à votre vpn et profitez :-). Sur un client Windows, installez le client openvpn. Sur le racourcis mis par défaut sur le bureau: clique droit -> propriétés -> compatibilité et cochez "Executer ce programme en tant qu'administrateur". Puis dans le dossier d'installation d'openvpn (typiquement: C:\Programmes\OpenVPN\) copiez le contenu de l'archive (configuration du client + certificats) dans le dossier "config". Lancez openvpn en utilisant le racourcis de votre bureau. Connectez-vous à votre vpn et profitez :-).
  
-Sur un client linuxcela risque de varier en fonction de votre distribution donc je vous invite à vous référer aux tutos linkés plus haut ainsi qu'à google.+=== Linux === 
 + 
 +Si la ligne de commande ne vous gêne pas, copiez le fichier de conf client ainsi que les clefs et certificats nécessaires (ceux listé dans la conf client) dans ''/etc/openvpn/''. Il suffit ensuite de lancer ''openvpn --config <chemin/vers/le/fichier/de/conf/client>''
 + 
 +Pour rediriger tout le traffic réseau dans le tunnel crée, ajoutez la ligne suivant dans la conf : 
 +    redirect-gateway def1 
 + 
 +Si vous préférez un client graphiquelisez donc sa doc (et complétez ensuite cette page). 
 + 
 +===== Problèmes possibles ===== 
 + 
 +==== Partager un port ==== 
 + 
 +OpenVPN permet de faire proxy pour //partager// le port avec un autre serveur. Il faut pour cela être en TCP et rajouter côté serveur la ligne suivante (après la ligne indiquant le port) : 
 +    port-share 127.0.0.1 4443 
 + 
 +Ici tout le trafic que OpenVPN reçoit mais qui ne lui est visiblement pas destiné est redirigé vers le port 4443. Cela peut permettre notamment de partager le port 443 avec un serveur HTTPS. 
 + 
 +==== SFR Wifi ==== 
 + 
 +Attention, si vous vous voulez utiliser votre VPN sur un SFR Wifi, il faut changer votre serveur DNS pour en utiliser un accessible depuis votre serveur VPN (par exemple celui fourni par Google (c'est mal, mais il est simple à retenir) : ''8.8.8.8''). 
 + 
 +Cela est du au fait que SFR a eu la bonne idée pour les gens se connectant aux SFR Wifi de ne pas utiliser le serveur DNS sur la box (donc sur le réseau local) mais un serveur distant (chez moi 109.0.66.20 au moment où j'écris ces lignes). Comme cette IP ne fait pas partie du réseau local (qui est en 192.168.2.0/24), la requête passe par le VPN (route par défaut) et est refusée par le serveur DNS qui ne doit sûrement accepter que les requêtes venant des boxs SFR.