Table des matières
Dernière mise-à-jour : 2020/01/30 03:27
- 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>