TOTAL
Depuis Dec 2006
1'942'871 Visiteurs
4'218'042 Pages

Stats Nov 2010
82'909 Visiteurs
146'476 Pages
196 pays
Statistiques completes



Aidez-nous à traduire
nos tutoriaux!

REJOINGNEZ
l'équipe OpenManiak.
OPENVPN - Le Tutorial Facile - Bridging

OpenVPN Bridging
Dernière modif: Mar 01 2008


Outil
Installation
Ergonomie
Forum



Détails OpenVPN, c'est quoi?
Captures d'écran
Prérequis & Installation
Tutorial OpenVPN
-----MODE DE SECURITÉ -----------
Tunnel transparent
Clef statique
SSL & PKI (certificats)
-----ÉTUDE DE CAS-----------
VPN IP (TUN)
VPN Ethernet (TAP)
Configurations VPN avancées
----------------
Bridging
Routing



⚠️⚠️⚠️
Please check our website about
attractions in Western Switzerland !! (Please use english translation).

⚠️⚠️⚠️
Merci de consulter notre site sur les
activités à faire en Suisse romande !!



1. PRINCIPE
2. SCHEMA
 
 
 
3. WINDOWS A
4. WINDOWS B
5. LINUX A
6. LINUX B
7. LINUX C
8. VERIFICATIONS
 
 
 
 
9. ANNEXE
 
 
 
 



1. PRINCIPE

Le principe de ce tutorial est de construire un lien de
couche OSI 2 entre deux portables séparés par deux machines Linux et une Windows.
Pour ce faire, des ponts sont établis sur ces machines parce que, comme les switches, ils opèrent au niveau de la couche OSI 2. Ceci est diffèrent par rapport aux routeurs qui travaillent au niveau de la couche OSI de niveau 3 et arrêtent les broadcasts de niveau 2 pour éviter la saturation du réseau.

Les ponts sur les machines Windows B et Linux B sont composés d'une interface physique et d'une interface virtuelle OpenVPN et construits sur le système d'exploitation. Le pont sur Linux A est composé de deux interfaces virtuelles OpenVPN et construit par OpenVPN.

Dans ce tutorial, OpenVPN est utilisé en mode bridge (pont) et SSL. Ceci est requis pour avoir des tunnels multiples sur une machine et établir un pont OpenVPN.
Vous aurez besoin d'établir une infrastructure à clés publiques et créer une paire de clés privées et publiques pour Linux B (nom commun du certificat: "server"), Windows B ("windows") et Linux B ("Linux").

Vous pouvez également trouver des informations à propos des options avancées d'OpenVPN et de comment securiser un boitier Linux OpenVPN.



2. SCHEMA

openvpn bridge scenario
Haut de la page



3. WINDOWS A

Au niveau du portable Windows A, nous avons juste à configurer une adresse et un masque de sous-réseau (10.9.0.111/24). La passerelle par défaut n'est pas nécessaire étant donné que nous évoluons dans un environnement de couche 2.

- Démarrer -> Paramètres -> "Connexions réseau"
- Sélectionnez l'interface réseau -> Clique droit -> Propriétés

openvpn bridge scenario openvpn bridge scenario
- Sélectionnez "Protocole Internet (TCP/IP)"
- Configurez l'adresse IP et le masque de sous-réseau:

openvpn bridge scenario openvpn bridge scenario
Haut de la page



4. WINDOWS B

Configuration de l'interface WAN:

Au niveau du portable Windows A, nous avons juste à configurer une adresse et un masque de sous-réseau (50.0.1.2/24). La passerelle par défaut n'est pas nécessaire étant donné que nous évoluons dans un environnement de couche 2.

- Démarrer -> Paramètres -> "Connexions réseau"
- Sélectionnez l'interface réseau -> Clique droit -> Propriétés

openvpn bridge scenario openvpn bridge scenario
- Sélectionnez "Protocole Internet (TCP/IP)"
- Configurez l'adresse IP et le masque de sous-réseau

openvpn bridge scenario openvpn bridge scenario
Configuration du bridge:

- Démarrer -> Paramètres -> "Connexions réseau"

openvpn bridge scenario
- Sélectionnez les interfaces réseaux membres du pont.
"Local Area Connection" qui est une des deux interfaces physiques.
"Local Area Connection 2" qui est l'interface virtuelle.

openvpn bridge scenario
- Clic droit -> Connexions de pont.

openvpn bridge scenario
Le pont est maintenant créé avec ses deux membres.

openvpn bridge scenario
Configurez l'adresse IP du pont:
Sélectionnez le pont -> Clic droit -> Propriétés

openvpn bridge scenario
- Sélectionnez "Protocole Internet (TCP/IP)"

openvpn bridge scenario
- Configurez l'adresse IP et le masque de sous-réseau (10.9.0.101/24).

openvpn bridge scenario
Configuration d'OpenVPN:

Au niveau de Windows B, vous devez avoir les fichiers suivants dans le dossier "/etc/openvpn/"

- ca.crt
- linux.crt
- linux.key
- openvpn.conf
Le certificat de l'autorité de certification (CA).
le certificat de "windows" qui contient la clé publique de "windows".
la clef privée de "windows".
La configuration d'OpenVPN.
Les trois premiers fichiers sont fournis par le CA et stockés dans le dossier "C:\Program Files\OpenVPN\config". Référez-vous à l'
introduction de l'étude de cas en haut de la page pour plus d'informations.

Le fichier de configuration est "openvpn.conf" et est également stocké dans le dossier "C:\Program Files\OpenVPN\config".

# mode client
tls-client
# Adresse IP du serveur
remote 50.0.1.1
# Mode bridge (pont)
dev tap
# Port
port 2000
# Certificat de l'autorité de certification. (CA)
ca ca.crt
# Clef privée de "windows"
key windows.key
# clef publique de "windows"
cert windows.crt
# Accepte les données transmises par le serveur.
pull
# Niveau de verbosité
verb 2
Pour démarrer OpenVPN automatiquement au moment de l'ouverture de session, suivez les étapes suivantes:

Démarrer -> Exécuter:

Ouvrez l'éditeur de stratégie de groupe:

gpedit.msc

Stratégie Ordinateur Local -> Configuration ordinateur -> Modèles d'administration -> Système -> Ouverture de session

Sélectionnez "Exécutez ces programmes à l'ouverture de session utilisateur" -> Clic droit "Propriétés"

Cliquez sur "Activé", puis sur le bouton "Afficher..."

Dans la fenêtre "Affichage du sommaire", cliquez sur le bouton "Ajouter":
Entrez la commande suivante: 'openvpn "C:\Program Files\OpenVPN\config\openvpn.conf"'.

Cliquez sur "OK".

Cliquez sur "OK".

Windows est maintenant configuré pour lancer OpenVPN automatiquement à l'ouverture de la session.

Haut de la page



5. LINUX A

Configuration des interfaces réseau:

Configurez l'adresse IP des interfaces:

#ifconfig eth0 50.0.1.1 netmask 255.255.255.0
#ifconfig eth1 60.0.1.1 netmask 255.255.255.0
Pour conserver vos paramètres après un redémarrage, configurez le fichier "/etc/network/interfaces":

#vim /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 50.0.1.1
netmask 255.255.255.0

auto eth1
iface eth1 inet static
address 60.0.1.1
netmask 255.255.255.0
Configuration d'OpenVPN:

Sur Linux A, vous avez besoin des fichiers suivants dans le dossier "/etc/openvpn/":

- ca.crt
- server.crt
- server.key
- openvpn.conf
- ipp.txt
Le certificat de l'autorité de certification (CA).
Le certificat du serveur qui contient la clef privée du serveur.
La clef privée du serveur.
La configuration d'OpenVPN.
Les réservations des adresses IP des clients.
Les trois premiers fichiers sont fournis par le CA.
Référez-vous à l'
introduction de l'étude de cas en haut de la page pour plus d'information.

Créons le fichier de configuration d'OpenVPN.
Soyez attentif à bien mettre le fichier de configuration dans le dossier "/etc/openvpn" avec une extension ".conf" pour être capable d'utiliser le script de démarrage d'OpenVPN.
Notez que le paramètre "lport" est utilisé pour permettre l'établissement de plusieurs tunnels sur un équipement avec un seul fichier de configuration.

# Mode serveur
tls-server
# Mode bridge (pont)
dev tap0
# Paramètres IP, le serveur prends l'IP 10.9.0.1
server 10.9.0.0 255.255.255.0
# Port local
lport 2000
# Certification de l'autorité de certification (CA)
ca ca.crt
# Clef privée de "serveur"
key server.key
# Clef publique de "serveur"
cert server.crt
# Paramètres Diffie-Hellman
dh dh1024.pem
# Autorisation de la connectivité client-à-client
client-to-client
# Réservations des adresses IP des clients
ifconfig-pool-persist ipp.txt
# Niveau de verbosité
verb 2
Par défaut, OpenVPN est automatiquement lancé au moment de l'ouverture de session (logon).

Haut de la page



6. LINUX B

Configuration de l'interface réseau:

#ifconfig eth0 60.0.1.2 netmask 255.255.255.0
Pour conserver vos paramétres après un redémarrage, configurez le fichier "/etc/network/interfaces":

#vim /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 60.0.1.2
netmask 255.255.255.0
Configuration du pont (bridge):

- Installez les outils pour établir un pont:

#apt-get install bridge-utils
- Chargez le module du noyau pour le pontage:

#modprobe bridge
- Vérifiez que le module de pontage est chargé:

#lsmod | grep bridge
- L'interface virtuelle d'OpenVPN doit être montée de manière permanente pour être intégrée dans un pont:

#openvpn --mktun --dev tap0
- Activez l'interface eth1:

#ifconfig eth1 up
Créez le pont:

#brctl addbr br0
- Ajoutez des membres au pont:

#brctl addif br0 eth1
#brctl addif br0 tap0
- Configurez l'adresse IP du pont:

#ifconfig br0 10.9.0.201 netmask 255.255.255.0
- Vérifiez l'état du bridge:

#brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0000ab12cd34 no tap0
      eth1
L'identifiant (ID) du pont commence par "8000" et est suivis par l'adresse MAC la plus basse de ses membres.

- Vérifiez les membres du pont:

#brctl showmacs br0
port no mac addr is local? ageing timer
2   00:00:ab:12:cd:34 yes 0.00
1   00:04:11:22:33:44 yes 0.00
Pour conserver vos paramètres après un redémarrage, créez le script suivant stocké dans le fichier "/root/bridge.sh":

#!bin/bash
# Chargez le module de pontage du noyau
modprobe bridge
# Ouvrez l'interface virtuelle tap0 de manière permanente.
openvpn --mktun --dev tap0
# Activez l'interface eth1
ifconfig eth1 up
# Créez le pont
brctl addbr br0
# Ajoutez des membres au pont
brctl addif br0 eth1
brctl addif br0 tap0
# Configurez l'adresse IP du pont:
ifconfig br0 10.9.0.201 netmask 255.255.255.0
Il suffit ensuite d'ajouter la ligne suivante dans le fichier "/etc/crontab":

#vim /etvc/crontab
@reboot root /root/bridge.sh
Configuration d'OpenVPN:

Sur Linux B, vous avez besoin d'avoir les fichiers suivants dans le dossier "/etc/openvpn/":
- ca.crt
- linux.crt
- linux.key
- openvpn.conf
Le certificat de l'autorité de certification (CA).
Le certificat de "serveur" qui contient la clef publique de "serveur".
La clef privée de "serveur".
La configuration d'OpenVPN.
Les trois premiers fichiers sont fournis par le CA.
Référez-vous à l'
introduction de l'étude de cas en haut de la page pour plus d'information.

Créons le fichier de configuration d'OpenVPN.
Soyez attentif de bien mettre le fichier de configuration dans le dossier "/etc/openvpn" avec une extension ".conf" pour être capable d'utiliser le script de démarrage d'OpenVPN.

# Mode client
tls-client
# Adresse IP du serveur
remote 60.0.1.1
# Mode bridge (pont)
dev tap0
# Port
port 2000
# Certificat de l'autorité de certification (CA)
ca ca.crt
# Clef privée de "linux"
key linux.key
# Clef publique de "linux"
cert linux.crt
# Accepte les données transmises par le serveur
pull
# Niveau de verbosité
verb 2
Par défaut, OpenVPN est automatiquement lancé lors de l'ouverture de session (logon).

Haut de la page



7. LINUX C

Sur Linux C, nous avons uniquement besoin de configurer l'adresse IP de l'interface réseau:

#ifconfig eth0 10.9.0.222 netmask 255.255.255.0
Pour conserver vos paramètres après un redémarrage, configurez le fichier "/etc/network/interfaces":

#vim /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.9.0.222
netmask 255.255.255.0
Haut de la page



8. VERIFICATIONS

Nous sommes maintenant prêts pour procéder aux tests pour valider que Linux C et Windows A peuvent bien se voir mutuellement. (Voir le
schéma de l'étude de cas)

LinuxC#ping 10.9.0.111
Linux C peut aussi pinger avec succès:
- Le pont sur Linux B
- L'interface virtuelle tap0 de Linux B
- Le pont sur Linux A
- Le pont sur Windows B
- L'interface réseau sur Windows A
10.9.0.201
10.9.0.200
10.9.0.1
10.9.0.101
10.9.0.111
Vérifions que nous avons vraiment un lien de niveau deux et aucun routage entre Linux C et Windows A.

LinuxC#ping 10.9.0.111
openvpn bridge wireshark
Avant d'être capable d'envoyer des paquets ICMP avec la commande Ping, Linux C doit connaître l'adresse MAC de Windows A. C'est pour cela que Linux C envoie d'abord un broadcast (FF:FF:FF:FF:FF:FF) de niveau deux pour trouver qui possède l'adresse MAC correspondant à l'adresse IP 10.9.0.222. Windows A réponds à Linux C en indiquant son adresse MAC.
Linux C connaît maintenant l'adresse MAC de Windows A et peut donc lui envoyer des paquets icmp pour voir si la connectivité réseau est bien établie.

La capture montre qu'il y a un lien de couche OSI deux entre Linux C et Windows A parce que Windows A reçoit le broadcast de couche deux.

Il est intéressant de rappeler que le comportement par défaut des routeurs qui travaillent au niveau trois, sont de stopper les broadcasts de niveau deux pour éviter de saturer le réseau.
Les ponts (bridges) et commutateurs (switches), qui travaillent au niveau deux, vont laisser passer les broadcasts au travers d'eux.

Un autre test à faire pour vérifier si nous avons vraiment une connectivité de couche deux entre Linux C et Windows A est d'utiliser la commande Traceroute. Si il n'y a aucun saut, qui représente un équipement de routage, jusqu'à la destination cela signifie que nous avons bien notre lien de couche deux.

LinuxC#traceroute 10.9.0.111
traceroute to 10.9.0.111 (10.9.0.111), 30 hops max, 40 bytes packets
1 10.9.0.111 (10.9.0.111) 0.134 ms 0.110 ms 0.025 ms


Si vous n'avez pas la commande traceroute disponible, vous pouvez l'installer facilement de la manière suivante:

#apt-get install traceroute
Haut de la page



9. ANNEXE

Dans le cas où vous avez plus d'un tunnel sur une machine Windows, il est alors nécessaire de créer de nouvelles interfaces virtuelles. Seule une interface virtuelle est crée par défaut quand OpenVPN est installé.

Dans l'exemple ci-dessous, nous créons une seconde interface virtuel OpenVPN:

Démarrer -> Programmes -> OpenVPN -> "Add a new TAP32-Win32 virtual ethernet adapter".

openvpn bridge scenario
openvpn bridge scenario
openvpn bridge scenario
- Nous avons maintenant nos deux interfaces virtuelles marquées comme "TAP-Win32 Adapter".

openvpn bridge scenario
Haut de la page