Dernière mise-à-jour :

- OpenVPN sous CentOS 7

212.5 - OpenVPN (2/60) - FIXME

LPI 212.5 - OpenVPN

Weight: 2

Description: Candidates should be able to configure a VPN (Virtual Private Network) and create secure point-to-point or site-to-site connections.

Key Knowledge Areas:

OpenVPN

Terms and Utilities:

/etc/openvpn/

openvpn

Présentation

OpenVPN permet à des pairs de s'authentifier entre eux à l'aide :

d'une clé privée partagée à l'avance,

de certificats ou,

à partir de la version 2.0 et à condition que le serveur possède un certificat, de couples de noms d'utilisateur/mot de passe sans besoin d'un certificat client

OpenVPN :

utilise de manière intensive la bibliothèque d'authentification OpenSSL ainsi que le protocole SSLv3/TLSv1,

n'est pas compatible avec IPsec ou d'autres logiciels VPN.

Architecture de test

Dans ce chapitre, l'architecture réseau est la suivante :

serveur <-------------------------------------> client
| |
| |
eth0 eth0
IP FIXE IP FIXE
192.168.1.14 192.168.1.13

Dans votre cas, veillez à modifier les adresses des interfaces eth0 dans les machines virtuelles serveur et client en IP fixes avec les machines virtuelles en mode pont.

Configuration commune au client et au serveur

Lancez une machine virtuelle RHEL/CentOS 6 vierge et vérifiez si le paquet openssl est bien installé :

[root@centos6 ~]# rpm -q openssl
openssl-0.9.8b-10.el5_2.1

Installez ensuite le paquet openvpn :

[root@centos6 ~]# yum install openvpn

Naviguez au répertoire /etc/openvpn et créez la clef partagée :

[root@centos6 ~]# cd /etc/openvpn/
[root@centos6 openvpn]# openvpn --genkey --secret static.key
[root@centos6 openvpn]# cat static.key
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
2da4ed98178769e28816bd0546a9e241
3088f1e84cd2578eab500d1d1ca61b28
7ffffb0ccf4b21a5908cc9bd57d8a896
b6407dc91411a53d6eed2d2bcb5bea19
ca5e75f7f5d2d83c95a6d3c2f7230f32
29a9db61327c0d4b7851cb3686840c0b
8646bf5c79b5c176b71432f292ef2f79
07ddd052eb0897f4d602dcdac6850286
41db2fe05e0f79e4a4a5c84d7b2dbeab
25e023d2847a658783ad4d0ddc9d3579
d978bb69c5ad75341e146fe81c8a3d88
034e5f6ee402d92708d245f767ebeb73
74d6517e0ffdb326c56d163e5a282470
630f072b9418b58aad03d4e271dd9dc3
b9676a9eb6f5d9f327377c9208bfb533
41541b72b3eaf07aa992c2d50b98c2e1
-----END OpenVPN Static key V1-----

Créer deux clones server et client de votre VM.

Configuration du client

Créez le fichier /etc/openvpn/client.conf :

remote 192.168.1.14
dev tun
port 1194
proto udp
comp-lzo
ifconfig 10.0.0.2 10.0.0.1
secret /etc/openvpn/static.key

Trouvez la signification de chacune des directives dans ce fichier.

Arrêtez le service iptables :

[root@centos6 ~]# service iptables stop

Lancez openvpn en ligne de commande et en arrière plan en spécifiant une journalisation :

[root@centos6 ~]# openvpn --config /etc/openvpn/client.conf > /var/log/vpn 2>&1 &

Vérifiez ensuite que le socket d'openvpn soit ouvert :

[root@centos6 ~]# netstat -an | grep 1194
udp 0 0 0.0.0.0:1194 0.0.0.0:*

Constatez ensuite la table de routage :

[root@centos6 ~]# netstat -ar
Table de routage IP du noyau
Destination Passerelle Genmask Indic MSS Fenêtre irtt Iface
10.0.0.1 * 255.255.255.255 UH 0 0 0 tun0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

Notez la présence de la route via tun0.

Constatez ensuite le montage du tunnel en regardant le contenu du fichier de journalisation /var/log/vpn :

Thu May 7 15:36:18 2009 OpenVPN 2.0.9 i386-redhat-linux-gnu [SSL] [LZO] [EPOLL] built on Aug 28 2007
Thu May 7 15:36:18 2009 LZO compression initialized
Thu May 7 15:36:18 2009 TUN/TAP device tun0 opened
Thu May 7 15:36:18 2009 /sbin/ifconfig tun0 10.0.0.2 pointopoint 10.0.0.1 mtu 1500
Thu May 7 15:36:19 2009 UDPv4 link local (bound): [undef]:1194
Thu May 7 15:36:19 2009 UDPv4 link remote: 192.168.1.14:1194

Configuration du serveur

Créez le fichier /etc/openvpn/server.conf :

dev tun
ifconfig 10.0.0.1 10.0.0.2
secret /etc/openvpn/static.key
port 1194
proto udp
user nobody
group nobody
daemon
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
log /var/log/vpn
verb 1

Trouvez la signification de chacune des directives dans ce fichier.

Arrêtez le service iptables :

[root@centos6 ~]# service iptables stop

Lancez openvpn en ligne de commande et en arrière plan en spécifiant une journalisation :

[root@centos6 log]# openvpn --config /etc/openvpn/server.conf > /var/log/vpn 2>&1 &
[1] 7751

Vérifiez ensuite que le socket d'openvpn soit ouvert :

[root@centos6 ~]# netstat -an | grep 1194
udp 0 0 0.0.0.0:1194 0.0.0.0:*

Constatez ensuite la table de routage :

[root@centos6 log]# netstat -nr
Table de routage IP du noyau
Destination Passerelle Genmask Indic MSS Fenêtre irtt Iface
10.0.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

Constatez ensuite le montage du tunnel en regardant le contenu du fichier de journalisation /var/log/vpn :

[root@centos6 ~]# cat /var/log/vpn
Thu May 7 15:45:04 2009 OpenVPN 2.0.9 i386-redhat-linux-gnu [SSL] [LZO] [EPOLL] built on Aug 28 2007
Thu May 7 15:45:04 2009 LZO compression initialized
Thu May 7 15:45:04 2009 TUN/TAP device tun0 opened
Thu May 7 15:45:04 2009 /sbin/ifconfig tun0 10.0.0.1 pointopoint 10.0.0.2 mtu 1500
Thu May 7 15:45:04 2009 GID set to nobody
Thu May 7 15:45:04 2009 UID set to nobody
Thu May 7 15:45:04 2009 UDPv4 link local (bound): [undef]:1194
Thu May 7 15:45:04 2009 UDPv4 link remote: [undef]

Tests

Du client vers le serveur

Sur le client, utilisez la commande ping pour envoyer des paquets dans le tunnel :

[root@centos6 ~]# ping -c3 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=7.62 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=1.35 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.000 ms
--- 10.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2047ms
rtt min/avg/max/mdev = 0.000/2.994/7.629/3.323 ms

Consultez de nouveau le fichier de journalisation :

Thu May 7 15:36:18 2009 OpenVPN 2.0.9 i386-redhat-linux-gnu [SSL] [LZO] [EPOLL] built on Aug 28 2007
Thu May 7 15:36:18 2009 LZO compression initialized
Thu May 7 15:36:18 2009 TUN/TAP device tun0 opened
Thu May 7 15:36:18 2009 /sbin/ifconfig tun0 10.0.0.2 pointopoint 10.0.0.1 mtu 1500
Thu May 7 15:36:19 2009 UDPv4 link local (bound): [undef]:1194
Thu May 7 15:36:19 2009 UDPv4 link remote: 192.168.1.14:1194
Thu May 7 15:39:17 2009 Peer Connection Initiated with 192.168.1.14:1194
Thu May 7 15:39:18 2009 Initialization Sequence Completed

Vous constaterez la présence des deux lignes suivantes :

Thu May 7 15:39:17 2009 Peer Connection Initiated with 192.168.1.14:1194
Thu May 7 15:39:18 2009 Initialization Sequence Completed

Du serveur vers le client

Sur le serveur, utilisez la commande ping pour envoyer des paquets dans le tunnel :

[root@centos6 ~]# ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=2.59 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=9.08 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=7.24 ms
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=7.03 ms
64 bytes from 10.0.0.2: icmp_seq=5 ttl=64 time=4.08 ms
--- 10.0.0.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4034ms
rtt min/avg/max/mdev = 2.597/6.008/9.084/2.340 ms

Consultez de nouveau le fichier de journalisation :

[root@centos6 ~]# cat /var/log/vpn
Thu May 7 15:45:04 2009 OpenVPN 2.0.9 i386-redhat-linux-gnu [SSL] [LZO] [EPOLL] built on Aug 28 2007
Thu May 7 15:45:04 2009 LZO compression initialized
Thu May 7 15:45:04 2009 TUN/TAP device tun0 opened
Thu May 7 15:45:04 2009 /sbin/ifconfig tun0 10.0.0.1 pointopoint 10.0.0.2 mtu 1500
Thu May 7 15:45:04 2009 GID set to nobody
Thu May 7 15:45:04 2009 UID set to nobody
Thu May 7 15:45:04 2009 UDPv4 link local (bound): [undef]:1194
Thu May 7 15:45:04 2009 UDPv4 link remote: [undef]
Thu May 7 15:47:17 2009 Peer Connection Initiated with 192.168.1.13:1194
Thu May 7 15:47:18 2009 Initialization Sequence Completed

Vous constaterez la présence des deux lignes suivantes :

Thu May 7 15:47:17 2009 Peer Connection Initiated with 192.168.1.13:1194
Thu May 7 15:47:18 2009 Initialization Sequence Completed

<html>

Copyright © 2004-2017 I2TCH LIMITED

</html>