Linux/Openvpn/

De GeRgOsNet
  • Installation OpenVPN sous Debian en mode Tunnel sur un serveur dédié :
apt-get install openvpn
  • Générer le certificat et la clé de l’Autorité de Certification maître

Copie dans votre repertoire utilisateur ou root selon votre user

cp /usr/share/doc/openvpn/examples/easy-rsa ~/openvpn/ -R
cd ~/openvpn/2.0/

Maintenant il faut éditer le fichier vars et initialiser les variables KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, and KEY_EMAIL. Ne laisser surtout pas un seul champ vide.

export KEY_COUNTRY=FR
export KEY_PROVINCE=Calvados
export KEY_CITY=Caen
export KEY_ORG=GeRgOsNET
export KEY_EMAIL=gergos_nospam@gergosnet.com

On initialise les variables

. ./vars

On nettoie toutes les clés et certificats existants : (ATTENTION A NE FAIRE QUE SI NOUVEAU VPN !!!)

./clean-all

Puis, nous créons le certificat et la clée de l’Autorité de Certification Maitre (master Certificate Authority (CA) :

./build-ca

Si l'on a l'erreur : you must define KEY_DIR , il suffit de faire :

cd /votrerepertoire/easy-rsa/2.0/
. ./vars


  • Générer un certificat et une clé pour le serveur
./build-key-server monserveur
  • Générer les certificats et les clés
./build-key client1
./build-key client2
etc ...


  • Générer des paramètres Diffie-Hellman
./build-dh
  • Copie des fichiers serveur :
cp keys/dh*.pem keys/ca.crt keys/monserveur.crt keys/monserveur.key /etc/openvpn/


Dans notre HOWTO on aura les ips/reseaux suivant :

10.10.0.0/24 le reseau VPN (Serveur VPN), 192.168.1.0/24 le LAN 1 (Reseau Client 1), 192.168.3.0/24 le LAN 2 (Reseau Client 2),


  • Configuration du serveur

Creer un fichier monserveur.conf dans /etc/openvpn/

#Port en ecoute utiliser pour la connexion VPN
port 1194

#Protocole  (Le protocole udp est plus sécurisé que le tcp)
proto udp

#Type d'interface réseau virtuelle créer
dev tun0

#Nom des fichiers servant a l'authentification des clients via OpenSSL
ca ca.crt
cert monserveur.crt
key monserveur.key
dh dh1024.pem

#Adresse du réseau virtuel (Le serveur aura l'adresse 10.10.0.1)
server 10.10.0.0 255.255.255.0

# Permet de garder les ips en memoire 
ifconfig-pool-persist ccd/ipp.txt

#Cette ligne ajoute sur le client la route du réseau du serveur
;push "route 192.168.1.0 255.255.255.0"

#Ces lignes indiquent aux clients l'adresse des serveur DNS et WINS
;push "dhcp-option DNS 192.168.2.1"
 
# Cette ligne permet aux clients de voire les autres clients

client-to-client

# Cette ligne permet de donner le repertoire des fichiers clients
client-config-dir ccd 


keepalive 10 120

# Cette ligne active la compression
comp-lzo

#Ces lignes indiquent un user et un group particulier pour le processus
user openvpn
group openvpn

#Ces lignes permettent de rendre persistante la connexion
persist-key
persist-tun
#relance si ping down
keepalive 10 120

status openvpn-status.log
log /var/log/openvpn-server.log

#Cette ligne permet d'indiquer le niveau de log souhaité (de 1 à 9)
verb 5


  • Configuration du Client 1

Sur la machine cliente 1 : Recuperer les fichiers client1.crt client1.key et ca.crt et les mettres dans le repertoire /etc/openvpn/ de votre machine cliente 1 .

Fichier de configuration /etc/openvpn/client1.conf :

# Client configuration
client
remote monserveurvpn.com
nobind
dev tun0
comp-lzo

# SSL Configuration
ca bonux/ca.crt
cert client1.crt
key client1.key 

# Logging configuration

log /var/log/openvpn.log
verb 3

Sur le serveur :

Attribuer une ip fixe au client et lui donner les routes à suivre :

Creer un fichier ccd/client1

ifconfig-push 10.10.0.37 10.10.0.38 #Notre ip fixe
push "route 192.168.3.0 255.255.255.0" #La route vers le LAN 2 que l'on veut optenir derriere notre client 2
iroute 192.168.1.0 255.255.255.0 #La route vers le LAN derriere notre client 1

Ajouter dans votre fichier /etc/openvpn/monserveur.conf

route 192.168.1.0 255.255.255.0 #Route vers notre LAN 1


  • Configuration du Client 2

Meme chose que le client 1 Sur la machine cliente 2 : Recuperer les fichiers client2.crt client2.key et ca.crt et les mettres dans le repertoire /etc/openvpn/ de votre machine cliente 2 .

Fichier de configuration /etc/openvpn/client2.conf :

# Client configuration
client
remote monserveurvpn.com
nobind
dev tun0
comp-lzo

# SSL Configuration
ca bonux/ca.crt
cert client2.crt
key client2.key 

# Logging configuration

log /var/log/openvpn.log
verb 3

Sur le serveur :

Attribuer une ip fixe au client et lui donner les routes à suivre :

Creer un fichier ccd/client2

ifconfig-push 10.10.0.33 10.10.0.34 #Notre ip fixe
push "route 192.168.1.0 255.255.255.0" #La route vers le LAN 2 que l'on veut optenir derriere notre client 2
iroute 192.168.3.0 255.255.255.0 #La route vers le LAN derriere notre client 1

Ajouter dans votre fichier /etc/openvpn/monserveur.conf

route 192.168.3.0 255.255.255.0 #Route vers notre LAN 1


Ip fixe possible :

Faire aussi tres attention au couple permis :

[ 1, 2] [ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18] 
[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38] 
[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58] 
[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78] 
[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98] 
[101,102] [105,106] [109,110] [113,114] [117,118] 
[121,122] [125,126] [129,130] [133,134] [137,138] 
[141,142] [145,146] [149,150] [153,154] [157,158] 
[161,162] [165,166] [169,170] [173,174] [177,178] 
[181,182] [185,186] [189,190] [193,194] [197,198] 
[201,202] [205,206] [209,210] [213,214] [217,218] 
[221,222] [225,226] [229,230] [233,234] [237,238] 
[241,242] [245,246] [249,250] [253,254]


  • Authorisé le trafic VPN sur le serveur :

Ajouter ceci dans /etc/network/if-up.d/iptables

#!/bin/sh
# IpTables rules.
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE

Lancer la regle :

sh /etc/network/if-up.d/iptables
  • Authorisé le trafic VPN/LAN sur le client 1 :

Ajouter ceci dans /etc/network/if-up.d/iptables

#!/bin/sh
# IpTables rules.
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE

Lancer la regle :

sh /etc/network/if-up.d/iptables
  • Authorisé le trafic VPN/LAN sur le client 2 :

Ajouter ceci dans /etc/network/if-up.d/iptables

#!/bin/sh
# IpTables rules.
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE

Lancer la regle :

sh /etc/network/if-up.d/iptables


  • Lancer le serveur et client VPN sur vos machines.

Il vous suffit maintenant de faire :

/etc/init.d/openvpn start


Logiquement vous devriez voir le LAN 1 depuis le LAN2 et inversement .


  • Utiliser le serveur VPN comme passerelle pour sortir sur internet.

Il suffit d'ajouter à la fin de votre fichier de configuration client /etc/openvpn/clientX.conf

redirect-gateway def1