DNS / DHCP / Nagios / Gammu / Asterisk / MusicPlayerDaemon / Arduino RaspberryPI / OpenVPN | Créer son image pour Raspberry PI | DJI Fade | Reolink Timelapse | K8S on Raspberry Pi
L’objectif est de voir l’installation complete d’un serveur openVPN sur Raspberry PI (Debian Buster) puis d’un client OpenVPN sur un autre Raspberry Pi.
Les images de Debian Buster peuvent etre trouvées sur le site RaspberryPI.org , pour l’installation il suffit de suivre la documentation
Attention toutes les opérations se font sur le compte root, il faut donc avoir effectué un sudo -u root bash
$ sudo dd bs=1m if=2020-08-20-raspios-buster-armhf-lite.img of=/dev/disk6 ; sync
Password:
1760+0 records in
1760+0 records out
1845493760 bytes transferred in 443.168437 secs (4164317 bytes/sec)Pour le premier boot brancher un écran un clavier et une souris (enfin si nécessaire), il est conseillé d’activer ssh ainsi par la suite plus besoin de clavier / souris / ecran on peut se connecter a distance sur le Pi.
$> apt-get install openvpn resolvconf openvpn-systemd-resolved easy-rsa
$> apt install net-tools zip lsofSi vous souhaitez ajouter le second facteur de type Google Authenticator installer les packages qui suivent
Deux possibilités ici. Soit vous avez deja une PKI et il faut alors générer les fichiers nécessaires (certificat, clé privée …) avec votre PKI (si vous en avez une vous voyez de quoi il s’agit, si vous n’en avez pas passer au second cas). Soit vous n’avez pas de PKI on va alors tout faire avec l’outil easy-rsa.
$> cd /etc/openvpn/
$> cp -r /usr/share/easy-rsa ./
$> cd easy-rsa/
$> cp vars.example vars
$> vi vars
set_var EASYRSA_REQ_COUNTRY "FR"
set_var EASYRSA_REQ_PROVINCE "France"
set_var EASYRSA_REQ_CITY "Paris"
set_var EASYRSA_REQ_ORG "MonOrga"
set_var EASYRSA_REQ_EMAIL "ptrognon@ptro.me"
set_var EASYRSA_REQ_OU "OrgUnit"
set_var EASYRSA_KEY_SIZE 4096
$> cd ../
$> ./easy-rsa/easyrsa init-pki
$> ./easy-rsa/easyrsa build-ca # il est conseillé de mettre une passphrase sur le CA
$> ./easy-rsa/easyrsa gen-dhLa passphrase sur le CA permet de protéger la signature nouvelles clés client.
L’opération de génération du DH peut prendre un certain temps, il faut patienter.
Ici je ne place pas de passphrase afin que le serveur puisse démarer tout seul.
Attention lors de la signature il faut saisir le passphrase du CA.
Si vous souhaitez que la clé du client soit protégée par un passphrase il faut supprimer le nopass des lignes de commandes, sinon il faut le laisser.
Attention lors de la signature il faut saisir le passphrase du CA.
./easy-rsa/easyrsa gen-req RPIDevPtroClientMint nopass
./easy-rsa/easyrsa sign client RPIDevPtroClientMint./easy-rsa/easyrsa gen-req RPIDevPtroClientPi nopass
./easy-rsa/easyrsa sign client RPIDevPtroClientPiIl faut configurer le serveur OpenVPN, cela se fait dans le répertoire /etc/openvpn, se placer dans ce répertoire et créer un fichier avec l’extention .conf. Dans ce fichier nous allons retrouver plusieurs types d’informations : ## La configuration réseau d’écoute du serveur OpenVPN C’est à dire le port sur lequel le serveur OpenVPN écoute ainsi que le protocole (TCP ou UDP)
ca /etc/openvpn/pki/ca.crt
cert /etc/openvpn/pki/issued/RPIDevPtro.crt
key /etc/openvpn/pki/private/RPIDevPtro.key
dh /etc/openvpn/pki/dh.pemport 443
proto tcp
dev tun
ca /etc/openvpn/pki/ca.crt
cert /etc/openvpn/pki/issued/RPIDevPtro.crt
key /etc/openvpn/pki/private/RPIDevPtro.key
dh /etc/openvpn/pki/dh.pem
ifconfig-pool-persist ipp.txt
server 10.20.30.0 255.255.255.0
keepalive 10 120
cipher AES-256-CBC
auth SHA512
persist-key
persist-tun
max-clients 10
user openvpn
group openvpn
client-to-client
status /var/log/openvpn.status
status-version 1
verb 3$> cd /etc/openvpn
$> vi dev-ptro.ptro.me.conf # ici placer le contenu du fichier indiqué au dessus
$> groupadd openvpn
$> grep openvpn /etc/group
openvpn:x:1001:
$> useradd --gid 1001 openvpn # ici le 1001 corresponds au gid renvoyė par le grep précédent
$> systemctl enable openvpn@dev-ptro.ptro.me
Created symlink /etc/systemd/system/multi-user.target.wants/openvpn@dev-ptro.ptro.me.service → /lib/systemd/system/openvpn@.service.
$> systemctl start openvpn@dev-ptro.ptro.meA ce niveau le VPN doit etre monté, pour le vérifier regardez si une interface tun0 est présente dans le ifconfig
$> ifconfig tun0
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.20.30.1 netmask 255.255.255.255 destination 10.20.30.2
inet6 fe80::b671:b713:83d6:d65a prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 100 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 15 bytes 902 (902.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0vous pouvez aussi vérifier que le serveur est bien en écoute sur le port que vous avez paramétré dans le fichier de conf :
Ici on voit que le process openvpn est bien en écoute sur le port https (443) comme nous l’avons configuré plus haut.
La configuration du serveur est terminée.
Nous avons préparé deux clients, RPIDevPtroClientMint et RPIDevPtroClientPi, nous allons voir ce qu’il faut récupérer et la configuration à effectuer sur les clients afin que ceux ci puissent se connecter au serveur OpenVPN.
Il faut transférer les fichiers qui suivent sur le client qui veut lancer la configuration RPIDevPtroClientMint /etc/openvpn/pki/ca.crt /etc/openvpn/pki/issued/RPIDevPtroClientMint.crt /etc/openvpn/pki/private/RPIDevPtroClientMint.key
Se placer dans le répertoire /etc/openvpn, créer un répertoire du nom de la configuration Client, par exemple RPIDevPtroClientMint, et dans ce répertoire y placer les 3 fichiers ca.crt, RPIDevPtroClientMint.crt, RPIDevPtroClientMint.key. Toujours dans le répertoire /etc/openvpn/RPIDevPtroClientMint créer le fichier de configuration OpenVPN du client.
$> cd /etc/openvpn/RPIDevPtroClientMint
$> vi RPIDevPtroClientMint.conf
client
remote 192.168.0.85 443
nobind
dev tun
cipher AES-256-CBC
# SSL Configuration
ca /etc/openvpn/RPIDevPtroClientMint/ca.crt
cert /etc/openvpn/RPIDevPtroClientMint/RPIDevPtroClientMint.crt
key /etc/openvpn/RPIDevPtroClientMint/RPIDevPtroClientMint.key
proto tcpAttention la ligne remote indique comment trouver le serveur, au choix vous pouvez utiliser l’adresse ip du serveur (dans l’exemple 192.168.0.85 sur un réseau privé), ou un nom DNS, si vous indiquez un nom DNS qui pointe vers un IP public et il faudra router le traffic de cette IP public vers l’ip privée du Raspberry Pi qui fait touner le serveur OpenVPN sur le port 443
Se placer ensuite dans le répertoire /etc/openvpn
$> cd /etc/openvpn
$> ln -s /etc/openvpn/RPIDevPtroClientMint/RPIDevPtroClientMint.conf RPIDevPtroClientMint.conf
$> systemctl enable openvpn@RPIDevPtroClientMint.service
$> systemctl start openvpn@RPIDevPtroClientMint.serviceLe client RPIDevPtroClientMint est alors connecté au serveur OpenVPN, celui ci va lui attribuer une adresse IP qui sera toujours la même.
Pour que votre VPN démarre automatiquement au boot, il faut modifier le fichier de configuration /etc/default/openvpn
Il faut transférer les fichiers qui suivent sur le client qui veut lancer la configuration RPIDevPtroClientMint /etc/openvpn/pki/ca.crt /etc/openvpn/pki/issued/RPIDevPtroClientPi.crt /etc/openvpn/pki/private/RPIDevPtroClientPi.key
Se placer dans le répertoire /etc/openvpn, créer un répertoire du nom de la configuration Client, par exemple RPIDevPtroClientPi, et dans ce répertoire y placer les 3 fichiers ca.crt, RPIDevPtroClientPi.crt, RPIDevPtroClientPi.key. Toujours dans le répertoire /etc/openvpn/RPIDevPtroClientPi créer le fichier de configuration OpenVPN du client.
$> cd /etc/openvpn/RPIDevPtroClientPi
$> vi RPIDevPtroClientPi.conf
client
remote 192.168.0.85 443
nobind
dev tun
cipher AES-256-CBC
# SSL Configuration
ca /etc/openvpn/RPIDevPtroClientPi/ca.crt
cert /etc/openvpn/RPIDevPtroClientPi/RPIDevPtroClientPi.crt
key /etc/openvpn/RPIDevPtroClientPi/RPIDevPtroClientPi.key
proto tcpAttention la ligne remote indique comment trouver le serveur, au choix vous pouvez utiliser l’adresse ip du serveur (dans l’exemple 192.168.0.85 sur un réseau privé), ou un nom DNS, si vous indiquez un nom DNS qui pointe vers un IP public et il faudra router le traffic de cette IP public vers l’ip privée du Raspberry Pi qui fait touner le serveur OpenVPN sur le port 443
Se placer ensuite dans le répertoire /etc/openvpn
$> cd /etc/openvpn
$> ln -s /etc/openvpn/RPIDevPtroClientPi/RPIDevPtroClientPi.conf RPIDevPtroClientPi.conf
$> systemctl enable openvpn@RPIDevPtroClientPi.service
$> systemctl start openvpn@RPIDevPtroClientPi.serviceLe client RPIDevPtroClientPi est alors connecté au serveur OpenVPN, celui ci va lui attribuer une adresse IP qui sera toujours la même.
Pour que votre VPN démarre automatiquement au boot, il faut modifier le fichier de configuration /etc/default/openvpn
[DNS / DHCP / Nagios / Gammu / Asterisk / MusicPlayerDaemon / Arduino RaspberryPI / OpenVPN | Créer son image pour Raspberry PI | DJI Fade | Reolink Timelapse | K8S on Raspberry Pi