Mettre en place un Remote VPN avec VMware
Mettre en place un Remote VPN avec un infrastructure VMware Cloud Director
VMware Cloud Director propose la possibilité de mettre en place un VPN site à site mais ne propose pas de Remote VPN.
Nous avons donc utilisé les fonctionnalités d'un serveur VPN pour réaliser cette fonction.
Nous avons reproduit l'architecture suivante :
Dans cet exemple, le Serveur VPN est un serveur Ubuntu.
Configuration
Configuration de VMware Cloud Director
Dans un premier temps nous allons configurer la partie réseau de VMware Cloud Director.
Pour cela, il vous faut dans un premier temps configurer votre Edge (Pare-feu Vmware).
Pour cela, il vous faut aller dans votre VDC (Datacenter Virtuel)
Il vous faut ensuite aller sur votre Edge.
Vous pourrez alors gérer les règles de pare-feu et de NAT à ce endroit.
Vous pourrez créer de nouvelles règles de pare-feu selon vos besoins.
Dans cet exemple nous n'avons pas mis de restriction sur le pare-feu.
Les règles de pare-feu sont selon vos besoin, le mieux étant de restreindre au maximum les flux non désirés.
Pour ce qui est du NAT, nous avons mis en place le NAT suivant :
Les deux lignes importantes sont celle translatant votre IP publique vers l'IP de votre Serveur VPN.
Vous devez ensuite configurer le réseau :
Il est important de choisir "Acheminé" ou "Routed" pour que l'IP publique de votre Serveur VPN soit accessible.
Il vous faut ensuite définir le Edge concerné.
Vous devez également définir votre réseau ainsi que les IP dont il dispose.
Vous pouvez sélectionner les DNS que vous souhaitez.
Et enfin un bref récapitulatif :
Pour ce qui est de la configuration de VMware, chaque machine créée sur ce réseau avec une IP du slash attribué devrait être joignable.
Configuration du Serveur
Passons maintenant à la partie configuration du serveur VPN. A ce stade, votre Serveur VPN doit être joignable sur son IP publique et être capable de communiquer avec d'autre machines du même réseau.
Pour cela, nous avons utilisé OpenVPN.
Dans un premier temps, vous devez éditer le fichier /etc/sysctl.conf et décommenter la ligne net.ipv4.ip_forward=1 pour permettre au serveur de transmettre les paquets.
Vous devez ensuite faire la commande :
sysctl -p
Une fois cette partie faite, vous devez ouvrir les ports de votre pare-feu avec les commandes suivantes :
ufw allow 22/tcp
ufw allow 1194/udp
ufw allow 51820/udp
ufw enable
Vous pouvez vérifier que ces commandes sont prises en compte avec :
ufw status verbose
Il faut en suite modifier le fichier /etc/default/ufw et remplacer DEFAULT_FORWARD_POLICY="DROP" par DEFAULT_FORWARD_POLICY="ACCEPT".
Puis éditer /etc/ufw/before.rules en y ajoutant le paragraphe suivant :
Vous devrez ensuite faire les commandes suivantes :
wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg|apt-key add -
echo "deb http://build.openvpn.net/debian/openvpn/<version> <osrelease> main" > /etc/apt/sources.list.d/openvpn-aptrepo.list
Il vous faut remplacer la version par l'une des suivantes selon votre choix :
stable: stable releases only - no alphas, betas or RCs testing: latest releases, including alphas/betas/RCs release/2.3: OpenVPN 2.3 releases release/2.4: OpenVPN 2.4 releases, including alphas/betas/RCs release/2.5: OpenVPN 2.5 releases, including alphas/betas/RCs
de même pour osrealease :
wheezy (Debian 7.x) jessie (Debian 8.x) stretch (Debian 9.x) buster (Debian 10.x) precise (Ubuntu 12.04) trusty (Ubuntu 14.04) xenial (Ubuntu 16.04) bionic (Ubuntu 18.04) focal (Ubuntu 20.04)
apt-get update && apt-get install openvpn
systemctl start openvpn.service
cd /root/
git clone https://github.com/OpenVPN/easy-rsa
cd easy-rsa/easyrsa3/
./easyrsa init-pki
./easyrsa build-ca
./easyrsa build-client-full
-> Sert à créer le certificat client
./easyrsa build-server-full
-> Sert à créer le certificat serveur
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
cd /etc/openvpn
gunzip /etc/openvpn/server.conf.gz
Vous pouvez ensuite modifier à votre convenance le fichier server.conf.
Nous sommes parvenu au résultat suivant :
port 1194
proto udp4
dev tun
ca /root/easy-rsa/easyrsa3/pki/ca.crt
cert /root/easy-rsa/easyrsa3/pki/issued/server.crt
key /root/easy-rsa/easyrsa3/pki/private/server.key # This file should be kept secret
dh /root/easy-rsa/easyrsa3/pki/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
client-to-client
keepalive 10 120
cipher AES-128-CBC
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
explicit-exit-notify 1
Vous pouvez ensuite faire la commande openvpn server.conf afin de démarré le serveur VPN.
Vous devriez donc avoir une nouvelle interface tun0 avec une IP du slash choisi.
Configuration du client VPN
Nous avons choisi d'installer ce client sur un Debian, cependant, il est possible de l'installer sur tout système d'exploitation.
Pour l'installation, vous devez faire les commandes suivantes :
apt-get install openvpn
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
cd /etc/openvpn/
vi client.conf
mkdir easy-rsa
cd easy-rsa/
mkdir keys
Vous devez ensuite importer vos fichier ca.crt ainsi que le certificat et la clé privée du client sur le poste client VPN puis éditer votre fichier client.conf.
Dans notre exemple nous obtenons le résultat suivant :
client
dev tun
proto udp4
remote 178.170.34.2 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/celien.crt
key /etc/openvpn/easy-rsa/keys/celien.key
remote-cert-tls server
cipher AES-128-CBC
verb 3
A partir de ce moment la configuration de votre VPN devrait fonctionner.
Vous pouvez démarrer le client VPN avec la commande : openvpn client.conf
Votre Client et serveur devraient à présent être capables de communiquer sur les IP liées au VPN.
Nous avons pu constater que pour que les machines présentes sur le réseau privé du serveur VPN, puissent communiquer, il est nécessaire d'ajouter une route comme celle-ci :
route add -net <votre réseau VPN> netmask <votre masque> gw <l'IP du serveur VPN>
A présent chaque équipement devrait être capable de communiquer par le biai du VPN.