FUNIX

Mettez un manchot dans votre PC


Encourager FUNIX

La consultation du site est totalement libre et gratuite, sans publicités. Les dons sont néanmoins appréciés pour payer l'hébergement et encourager son auteur


OpenVPN

Présentation

Cette page a pour objectif de présenter la configuration d'un réseau privé VPN avec OpenVPN.  Un VPN (Virtual Private Network) permet d'accéder à distance à un réseau local de manière transparente comme si on était connecté directement au réseau local. Pour se faire le VPN va établir un tunnel de communication sécurisé et chiffré parmi le trafic internet pour permettre les échanges. L'intérêt d'un VPN est multiple, il permet (liste non exhaustive) :

  • de pouvoir accéder à distance aux ressources d'un réseau local comme évoqué précédemment ;
  • de faire passer tout le flux internet vers le réseau local, ce qui permet (entre autres) :
    • de mettre en place un filtrage d'internet (dans le cas souvent d'une utilisation professionnelle) ;
    • de pouvoir accéder librement à internet via le VPN (dans le cas où vous vous trouvez dans un pays qui restreint l'accès à internet).

Dans mon cas de figure il s'agit de pouvoir accéder à un réseau local privé à partir d'un PC distant connecté à internet en wifi via un mobile avec connexion 4G. Cela me permet de pouvoir accéder aux ressources de mon réseau local où que je sois. Attention la plupart des configurations présentées sur internet et notamment les pages listées plus bas présentent une configuration où tout le flux vers internet du client passe par le réseau VPN, c'est sûrement intéressant pour certains besoins mais dans mon cas c'est un intermédiaire parfaitement inutile qui ralentit l'accès à internet du client. Néanmoins si vous êtes plutôt intéressé par un accès internet via VPN je vous conseille la lecture des pages indiquées plus bas dans les sources.

En résumé la configuration présentée dans cette page permet l'accès aux ressources d'un réseau local via VPN mais ne permet pas au client d’accéder à internet via le VPN (il peut néanmoins y accéder avec sa propre connexion en direct).

L'installation et la configuration ont été effectuées sur une Mageia, mais elles devraient s'adapter assez facilement à toutes les distributions.

Dans la suite des opérations :

  • mon serveur s'appelle mana a une adresse locale 192.168.1.11 avec un réseau local qui utilise le réseau 192.168.1.X. L'interface réseau est eno2.
  • le client s'appelle tetiaroa et est connecté en wifi à un mobile 4G qui lui attribue l'adresse 192.168.43.70 sur le réseau 192.168.43.X (information visible en tapant ifconfig -a)

La topologie complète du réseau est la suivante

Je crée un lien VPN entre le poste tetiaroa bien visible en haut à droite avec le serveur mana en passant via le mobile 4G qui partage sa connexion, internet, la box et un routeur.

Les sources qui m'ont servi à rédiger cette page sont :

[Retour haut de la page]

Installation et configuration du serveur

Installation

Pour l'installation, pour une fois je me suis contenté d'utiliser le package fournir avec ma distribution qu'on installera en tant

urpmi openvpn

il suffira d'adapter au package manager de votre distribution.

[Retour haut de la page]

Création des clés de chiffrement

Pour le principe de l'autorité de certification, de clés privées et publiques pour sécuriser les échanges, je vous renvoie vers cette page qui donne les grands principes.

Maintenant on va mettre en place les fichiers permettant de lancer la configuration, on installe les fichiers de configuration fournis par le package en les copiant sous /etc/openvpn qui normalement a été créé à l'installation du package

cp -r /usr/share/openvpn/easy-rsa /etc/openvpn

On édite le fichier /etc/openvpn/easy-rsa/vars et on le modifie ainsi

# easy-rsa parameter settings

# NOTE: If you installed from an RPM,
# don't edit this file in place in
# /usr/share/openvpn/easy-rsa --
# instead, you should copy the whole
# easy-rsa directory to another location
# (such as /etc/openvpn) so that your
# edits will not be wiped out by a future
# OpenVPN package upgrade.

# This variable should point to
# the top level of the easy-rsa
# tree.
# on indique le chemin du répertoire easy-rsa
export EASY_RSA="/etc/openvpn/easy-rsa"

#
# This variable should point to
# the requested executables
#
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"


# This variable should point to
# the openssl.cnf file included
# with easy-rsa.
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`

# Edit this variable to point to
# your soon-to-be-created key
# directory.
#
# WARNING: clean-all will do
# a rm -rf on this directory
# so make sure you define
# it correctly!
export KEY_DIR="$EASY_RSA/keys"

# Issue rm -rf warning
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR

# PKCS11 fixes
export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"

# Increase this to 2048 if you
# are paranoid.  This will slow
# down TLS negotiation performance
# as well as the one-time DH parms
# generation process.
export KEY_SIZE=2048

# In how many days should the root CA key expire?
export CA_EXPIRE=3650

# In how many days should certificates expire?
export KEY_EXPIRE=3650

# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="FR"
export KEY_PROVINCE="Bretagne"
export KEY_CITY="BreizhCity"
export KEY_ORG="Funix"
export KEY_EMAIL="olivier.hoarau@funix.org"
export KEY_EMAIL=olivier.hoarau@funix.org
export KEY_CN=mana
export KEY_NAME=mana
export KEY_OU=funix
export PKCS11_MODULE_PATH=""
export PKCS11_PIN=1234

Dans la pratique je me suis contenté d'indiquer le chemin de easy-rsa, d'augmenter la taille de la clé à 2048 (au lieu de 1024) et de saisir tous les informations concernant le pays, la région (province), la ville (city), l'organisation, le mail, l'identification unique (common name), le nom du serveur et de l'organisation (organizational unit). Il semblerait pour un réseau privé que ça n'a pas une grande incidence si on met des valeurs un peu farfelues.

A noter que tout ce qui se rapporte à PKCS#11 concerne les équipements physiques type dongle, carte PCMCIA, microSD ou clé USB avec clé de chiffrement intégrée "cryptographic tokens" qui permet de vous connecter et qui donne une sécurité supplémentaire, car sans cette clé physique, pas de connexion. Pour ma part je n'en ai pas, donc j'oublie.

Maintenant on vérifie la version d'openssl (qui doit être installé) en tapant

openssl version

chez moi cela donne

OpenSSL 1.1.0l  10 Sep 2019

du coup dans le répertoire /etc/openvpn/easy-rsa j'ai créé le lien suivant

ln -s openssl-1.0.0.cnf openssl.cnf

On crée la nouvelle configuration à partir des informations fournies dans vars en tapant

source vars

voilà le résultat

NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

Par sécurité, on fait du nettoyage pour partir d'une configuration vierge et on supprime les éventuelles anciennes clés se trouvant sous /etc/openvpn/easy-rsa/keys en tapant

./clean-all

On génère maintenant les certificats de l'autorité de certification avec la commande

./build-ca

voici le résultat

Generating a RSA private key
...................................+++++
...............+++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [FR]:FR
State or Province Name (full name) [Bretagne]:Bretagne
Locality Name (eg, city) [BreizhCity]:
Organization Name (eg, company) [Funix]:
Organizational Unit Name (eg, section) [funix]:
Common Name (eg, your name or your server's hostname) [mana]:
Name [mana]:mana
Email Address [olivier.hoarau@funix.org]:

J'ai tapé Enter à chaque fois, car il reprend les informations saisies dans le fichier vars. Pour mémoire l'autorité de certification ou tiers de confiance sert à authentifier les clés publiques, dans la pratique on crée une autorité de certification personnelle qui ne sera pas reconnue sur internet mais ça ne nuit pas au fonctionnement, voir par ici pour plus de détails.

[Retour haut de la page]

Maintenant on va créer la clé privée du serveur et la certifier avec l'autorité de certification personnelle en tapant

./build-key-server mana

voilà le résultat

Generating a RSA private key
....................+++++
.............................................................+++++
writing new private key to 'mana.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [FR]:
State or Province Name (full name) [Bretagne]:
Locality Name (eg, city) [BreizhCity]:
Organization Name (eg, company) [Funix]:
Organizational Unit Name (eg, section) [funix]:
Common Name (eg, your name or your server's hostname) [mana]:
Name [mana]:
Email Address [olivier.hoarau@funix.org]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
Can't open /etc/openvpn/easy-rsa/keys/index.txt.attr for reading, No such file or directory
139865288554304:error:02001002:system library:fopen:No such file or directory:crypto/bio/bss_file.c:74:fopen('/etc/openvpn/easy-rsa/keys/index.txt.attr','r')
139865288554304:error:2006D080:BIO routines:BIO_new_file:no such file:crypto/bio/bss_file.c:81:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'FR'
stateOrProvinceName   :PRINTABLE:'Bretagne'
localityName          :PRINTABLE:'BreizhCity'
organizationName      :PRINTABLE:'Funix'
organizationalUnitName:PRINTABLE:'funix'
commonName            :PRINTABLE:'mana'
name                  :PRINTABLE:'mana'
emailAddress          :IA5STRING:'olivier.hoarau@funix.org'
Certificate is to be certified until Jul 20 12:29:52 2031 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

A noter que j'ai laissé un champ vide au niveau du challenge password. L'intérêt de ce dernier est un peu obscur, vous trouverez une explication par ici.

On génère maintenant la clé privé pour le poste client openvpn qui sera un thinkpad du nom de tetiaroa et on certifie la clé

./build-key-pass tetiaroa

Voilà le résultat

Generating a RSA private key
..................................+++++
...........................+++++
writing new private key to 'tetiaroa.key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [FR]:
State or Province Name (full name) [Bretagne]:
Locality Name (eg, city) [BreizhCity]:
Organization Name (eg, company) [Funix]:
Organizational Unit Name (eg, section) [funix]:
Common Name (eg, your name or your server's hostname) [tetiaroa]:                   
Name [mana]:tetiaroa
Email Address [olivier.hoarau@funix.org]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'FR'
stateOrProvinceName   :PRINTABLE:'Bretagne'
localityName          :PRINTABLE:'BreizhCity'
organizationName      :PRINTABLE:'Funix'
organizationalUnitName:PRINTABLE:'funix'
commonName            :PRINTABLE:'tetiaroa'
name                  :PRINTABLE:'tetiaroa'
emailAddress          :IA5STRING:'olivier.hoarau@funix.org'
Certificate is to be certified until Jul 20 12:33:48 2031 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Il faut saisir un mot de passe au niveau de "PEM pass phrase", il sera utile quand vous allez lancer la connexion du client. En revanche là aussi, il est inutile de renseigner le challenge password. On va rajouter maintenant une sécurité supplémentaire qu'on peut juger superflu en chiffrer la clé privée du client avec l’algorithme 3DES en tapant

openssl rsa -in tetiaroa.key -des3 -out tetiaroa.3des.key

voilà le résultat

Enter pass phrase for tetiaroa.key:
writing RSA key
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

J'ai saisi le même mot de passe que celui utilisé à la génération initiale de la clé privée du client.

[Retour haut de la page]

On va mettre maintenant en place un échange de clés dit Diffie-Hellman, c'est une sécurité supplémentaire qui va permettre au serveur et au client "de se mettre d'accord sur un nombre (qu'ils peuvent utiliser comme clé pour chiffrer la conversation suivante) sans qu'un troisième agent (...) puisse découvrir le nombre, même en ayant écouté tous leurs échanges" (extrait de la page wikipedia sur Diffie-Hellman)

Pour génèrer les paramètres Diffie Hellman pour le serveur on tapera

./build-dh

voilà le résultat

Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
........+...................................................................................................................................................................................................+............................

....................................................................+...........................................................+.........................................................................................................

....................................+.........................................................................................................................................+..................+.......................................

(...)

....................................................................................................................................................................................................................................+.................

..............................................................................................+.+..............................................................................................+...................................................

.................................+.........................................................++*++*++*++*

c'est plus long que les commandes précédentes, j'ai raccourci la sortie ci-dessus.

Maintenant on va créer une clé HMAC (Hash-Based Message Authentication Code) qui rajoute une sécurité supplémentaire contre les attaques DoS (Denial of Service), le client devra présenter la clé HMAC connue du serveur pour entamer le dialogue, sinon il est rejeté d'emblée sans aller plus loin.

Quand quelqu'un tentera une connexion sans être connu, ça pourra générer ce genre de message sur le serveur

juil. 24 11:12:02 mana.kervao.fr openvpn[26146]: TLS Error: cannot locate HMAC in incoming packet from [AF_INET]185.200.118.41:33825

Pour créer cette clé HMAC on tape

openvpn --genkey --secret keys/ta.key

Maintenant on trouvera l'ensemble des clés dans le répertoire /etc/openvpn/easy-rsa/keys. Voilà le détail de chacune des clés

Fichier Utilisé par Contenu Privé
ca.crt serveur et clients Certificat de l'autorité de certification CA Non
ca.key Clé signant la machine seulement clé privée de l'autorité de certification CA Oui
dh2048.pem serveur seulement Paramètres Diffie Hellman Non
mana.crt serveur seulement Certificat de mana Non
mana.key serveur seulement Clé privée de mana Oui
tetiaroa.crt client seulement Certificat de tetiaroa Non
tetiaroa.key client seulement Clé privée de tetiaroa Oui
ta.key serveur et clients Clé privée HMAC Oui

[Retour haut de la page]

Configuration

On copiera un fichier de configuration par défaut installé lors de l'installation du package en tapant

cp /usr/share/openvpn/sample-config-files/server.conf /etc/openvpn

Voici son contenu commenté

#################################################
# Sample OpenVPN 2.0 config file for            #
# multi-client server.                          #
#                                               #
# This file is for the server side              #
# of a many-clients <-> one-server              #
# OpenVPN configuration.                        #
#                                               #
# OpenVPN also supports                         #
# single-machine <-> single-machine             #
# configurations (See the Examples page         #
# on the web site for more info).               #
#                                               #
# This config should work on Windows            #
# or Linux/BSD systems.  Remember on            #
# Windows to quote pathnames and use            #
# double backslashes, e.g.:                     #
# "C:\\Program Files\\OpenVPN\\config\\foo.key" #
#                                               #
# Comments are preceded with '#' or ';'         #
#################################################

# Which local IP address should OpenVPN
# listen on? (optional)
# adresse locale du serveur
local 192.168.1.11

# Which TCP/UDP port should OpenVPN listen on?
# If you want to run multiple OpenVPN instances
# on the same machine, use a different port
# number for each one.  You will need to
# open up this port on your firewall.
port 1194

# TCP or UDP server?
;proto tcp
proto udp

# "dev tun" will create a routed IP tunnel,
# "dev tap" will create an ethernet tunnel.
# Use "dev tap0" if you are ethernet bridging
# and have precreated a tap0 virtual interface
# and bridged it with your ethernet interface.
# If you want to control access policies
# over the VPN, you must create firewall
# rules for the the TUN/TAP interface.
# On non-Windows systems, you can give
# an explicit unit number, such as tun0.
# On Windows, use "dev-node" for this.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
;dev tap
dev tun

# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel if you
# have more than one.  On XP SP2 or higher,
# you may need to selectively disable the
# Windows firewall for the TAP adapter.
# Non-Windows systems usually don't need this.
;dev-node MyTap

# SSL/TLS root certificate (ca), certificate
# (cert), and private key (key).  Each client
# and the server must have their own cert and
# key file.  The server and all clients will
# use the same ca file.
#
# See the "easy-rsa" directory for a series
# of scripts for generating RSA certificates
# and private keys.  Remember to use
# a unique Common Name for the server
# and each of the client certificates.
#
# Any X509 key management system can be used.
# OpenVPN can also use a PKCS #12 formatted key file
# (see "pkcs12" directive in man page).
# indiquer les chemins en dur des clés
ca /etc/openvpn/easy-rsa/keys/ca.crt # clé publique de l’autorité de certification
cert /etc/openvpn/easy-rsa/keys/mana.crt # Clé publique du serveur
key /etc/openvpn/easy-rsa/keys/mana.key # Clé privée du serveur

# Diffie hellman parameters.
# Generate your own with:
#   openssl dhparam -out dh2048.pem 2048
#   indiquer en dur le chemin des paramètres DH
dh /etc/openvpn/easy-rsa/keys/dh2048.pem

# Network topology
# Should be subnet (addressing via IP)
# unless Windows clients v2.0.9 and lower have to
# be supported (then net30, i.e. a /30 per client)
# Defaults to net30 (not recommended)
;topology subnet

# Configure server mode and supply a VPN subnet
# for OpenVPN to draw client addresses from.
# The server will take 10.8.0.1 for itself,
# the rest will be made available to clients.
# Each client will be able to reach the server
# on 10.8.0.1. Comment this line out if you are
# ethernet bridging. See the man page for more info.
# par défaut le réseau VPN sera 10.8.0.X
server 10.8.0.0 255.255.255.0

# Maintain a record of client <-> virtual IP address
# associations in this file.  If OpenVPN goes down or
# is restarted, reconnecting clients can be assigned
# the same virtual IP address from the pool that was
# previously assigned.
# par défaut le client aura toujours la même adresse IP attribuée
ifconfig-pool-persist ipp.txt

# Configure server mode for ethernet bridging.
# You must first use your OS's bridging capability
# to bridge the TAP interface with the ethernet
# NIC interface.  Then you must manually set the
# IP/netmask on the bridge interface, here we
# assume 10.8.0.4/255.255.255.0.  Finally we
# must set aside an IP range in this subnet
# (start=10.8.0.50 end=10.8.0.100) to allocate
# to connecting clients.  Leave this line commented
# out unless you are ethernet bridging.
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

# Configure server mode for ethernet bridging
# using a DHCP-proxy, where clients talk
# to the OpenVPN server-side DHCP server
# to receive their IP address allocation
# and DNS server addresses.  You must first use
# your OS's bridging capability to bridge the TAP
# interface with the ethernet NIC interface.
# Note: this mode only works on clients (such as
# Windows), where the client-side TAP adapter is
# bound to a DHCP client.
;server-bridge

# Push routes to the client to allow it
# to reach other private subnets behind
# the server.  Remember that these
# private subnets will also need
# to know to route the OpenVPN client
# address pool (10.8.0.0/255.255.255.0)
# back to the OpenVPN server.
# on autorise le client à aller voir les adresses du réseau local
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
push "route 192.168.1.0 255.255.255.0"

# To assign specific IP addresses to specific
# clients or if a connecting client has a private
# subnet behind it that should also have VPN access,
# use the subdirectory "ccd" for client-specific
# configuration files (see man page for more info).

# EXAMPLE: Suppose the client
# having the certificate common name "Thelonious"
# also has a small subnet behind his connecting
# machine, such as 192.168.40.128/255.255.255.248.
# First, uncomment out these lines:
# on autorise le client avec l'adresse 192.168.43.X
client-config-dir ccd
route 192.168.43.0 255.255.255.0

# Then create a file ccd/Thelonious with this line:
#   iroute 192.168.40.128 255.255.255.248
# This will allow Thelonious' private subnet to
# access the VPN.  This example will only work
# if you are routing, not bridging, i.e. you are
# using "dev tun" and "server" directives.

# EXAMPLE: Suppose you want to give
# Thelonious a fixed VPN IP address of 10.9.0.1.
# First uncomment out these lines:
;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
# Then add this line to ccd/Thelonious:
#   ifconfig-push 10.9.0.1 10.9.0.2

# Suppose that you want to enable different
# firewall access policies for different groups
# of clients.  There are two methods:
# (1) Run multiple OpenVPN daemons, one for each
#     group, and firewall the TUN/TAP interface
#     for each group/daemon appropriately.
# (2) (Advanced) Create a script to dynamically
#     modify the firewall in response to access
#     from different clients.  See man
#     page for more info on learn-address script.
;learn-address ./script

# If enabled, this directive will configure
# all clients to redirect their default
# network gateway through the VPN, causing
# all IP traffic such as web browsing and
# and DNS lookups to go through the VPN
# (The OpenVPN server machine may need to NAT
# or bridge the TUN/TAP interface to the internet
# in order for this to work properly).
# ligne commentée pour ne pas rediriger le flux
# internet du client vers le serveur vpn
;push "redirect-gateway def1 bypass-dhcp"

# Certain Windows-specific network settings
# can be pushed to clients, such as DNS
# or WINS server addresses.  CAVEAT:
# http://openvpn.net/faq.html#dhcpcaveats
# The addresses below refer to the public

# DNS servers provided by opendns.com.

# je commente ces lignes pour ne pas utiliser

# les DNS du VPN sur le client

;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"

# Uncomment this directive to allow different
# clients to be able to "see" each other.
# By default, clients will only see the server.
# To force clients to only see the server, you
# will also need to appropriately firewall the
# server's TUN/TAP interface.
;client-to-client

# Uncomment this directive if multiple clients
# might connect with the same certificate/key
# files or common names.  This is recommended
# only for testing purposes.  For production use,
# each client should have its own certificate/key
# pair.
#
# IF YOU HAVE NOT GENERATED INDIVIDUAL
# CERTIFICATE/KEY PAIRS FOR EACH CLIENT,
# EACH HAVING ITS OWN UNIQUE "COMMON NAME",
# UNCOMMENT THIS LINE OUT.
;duplicate-cn

# The keepalive directive causes ping-like
# messages to be sent back and forth over
# the link so that each side knows when
# the other side has gone down.
# Ping every 10 seconds, assume that remote
# peer is down if no ping received during
# a 120 second time period.
keepalive 10 120

# For extra security beyond that provided
# by SSL/TLS, create an "HMAC firewall"
# to help block DoS attacks and UDP port flooding.
#
# Generate with:
#   openvpn --genkey --secret ta.key
#
# The server and each client must have
# a copy of this key.
# The second parameter should be '0'
# on the server and '1' on the clients.
# indiquer le chemin en dur
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0 # This file is secret

# Select a cryptographic cipher.
# This config item must be copied to
# the client config file as well.
# Note that v2.4 client/server will automatically
# negotiate AES-256-GCM in TLS mode.
# See also the ncp-cipher option in the manpage
cipher AES-256-CBC

# Enable compression on the VPN link and push the
# option to the client (v2.4+ only, for earlier
# versions see below)
compress lz4-v2
push "compress lz4-v2"

# For compression compatible with older clients use comp-lzo
# If you enable it here, you must also
# enable it in the client config file.
;comp-lzo

# The maximum number of concurrently connected
# clients we want to allow.
;max-clients 100

# It's a good idea to reduce the OpenVPN
# daemon's privileges after initialization.
#
# You can uncomment this out on
# non-Windows systems.
# à décommenter pour plus de sécurité
user openvpn
group openvpn

# The persist options will try to avoid
# accessing certain resources on restart
# that may no longer be accessible because
# of the privilege downgrade.
persist-key
persist-tun

# Output a short status file showing
# current connections, truncated
# and rewritten every minute.
status openvpn-status.log

# By default, log messages will go to the syslog (or
# on Windows, if running as a service, they will go to
# the "\Program Files\OpenVPN\log" directory).
# Use log or log-append to override this default.
# "log" will truncate the log file on OpenVPN startup,
# while "log-append" will append to it.  Use one
# or the other (but not both).
;log         openvpn.log
;log-append  openvpn.log

# Set the appropriate level of log
# file verbosity.
#
# 0 is silent, except for fatal errors
# 4 is reasonable for general usage
# 5 and 6 can help to debug connection problems
# 9 is extremely verbose
# valeur fixée à 4
verb 4

# Silence repeating messages.  At most 20
# sequential messages of the same message
# category will be output to the log.
;mute 20

# Notify the client that when the server restarts so it
# can automatically reconnect.
explicit-exit-notify 1

A noter que les lignes commençant par ; sont en commentaires. On retiendra les points suivants du fichier de configuration du serveur

  • l'adresse local du serveur sur le réseau local

local 192.168.1.11

  • le port du serveur VPN

port 1194

  • le réseau par défaut VPN 10.8.0.X

server 10.8.0.0 255.255.255.0

  • par défaut les clients auront toujours la même adresse IP attribuée par le VPN

ifconfig-pool-persist ipp.txt

  • on autorise les clients à accèder aux postes du réseau local 192.168.1.X

push "route 192.168.1.0 255.255.255.0"

  • On route le client avec son adresse privée 192.168.43.X, cela correspond à l'adresse locale de mon client attribuée par le mobile 4G

client-config-dir ccd
route 192.168.43.0 255.255.255.0

  • on commente ces lignes pour ne pas utiliser les DNS du VPN par le client qui continuera à utiliser son DNS par défaut

;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"

  • on commente cette ligne pour que le flux internet du client ne passe pas par le VPN

;push "redirect-gateway def1 bypass-dhcp"

  • on décommente ces lignes pour que l'utilisateur openvpn soit propriétaire du daemon openvpn et non root avec le minimum de privilèges

user openvpn
group openvpn

maintenant je vais créer le répertoire /etc/openvpn/ccd qui contiendra le fichier tetiaroa qui contiendra

iroute 192.168.43.0 255.255.255.0

[Retour haut de la page]

Configuration des routes et du firewall

Au niveau des routes ça sera assez minimaliste car on n'activera par  l'IP masquerade sur le serveur pour que le client accède à internet via VPN. Il y aura néanmoins à configurer le firewall shorewall. La topologie de mon réseau est rappelée sur le diagramme présenté plus haut. Sur ma box j'ai redirigé les connexions au port 1194 vers mon routeur, sur mon routeur elles sont redirigées vers mon serveur mana avec l'adresse 192.168.1.11 qui pour rappel a une interface réseau désignée par eno2.

On modifera ainsi les fichiers suivants (en italique les rajouts)

contenu de /etc/shorewall/interfaces

lan  eno2 -
vpn  tun0 -

contenu de /etc/shorewall/policy

fw    lan    ACCEPT
vpn    all    ACCEPT
all    all    REJECT    info

contenu de /etc/shorewall/rules

ACCEPT    fw    lan    icmp
ACCEPT    lan:192.168.1.0/24    fw    tcp    22,25,80,111,143,389,443,465
ACCEPT    lan:192.168.1.0/24    fw    udp    111
ACCEPT    lan:192.168.1.0/24    fw    icmp
DNS(ACCEPT)     fw      lan
ACCEPT    lan    fw:192.168.1.11 udp    1194
ACCEPT    all    vpn        all

contenu de /etc/shorewall/tunnels

openvpn:1194 lan     0.0.0.0/0    vpn

contenu de /etc/shorewall/zones

fw    firewall
lan     ipv4
vpn    ipv4

on relance shorewall en tapant

systemctl stop shorewall
systemctl start shorewall

Installation et configuration du client

Pour l'installation, c'est comme pour le serveur il faudra installer le package openvpn, sous mageia

urpmi openvpn

Sur le serveur (et non le client) on créera le fichier /etc/openvpn/easy-rsa/keys/Default.txt qui contiendra

client
dev tun
proto udp
remote mana-noip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ns-cert-type server
key-direction 1
cipher AES-256-CBC
compress lz4-v2
verb 1
mute 20
script-security 2

Attention au niveau du nom du serveur mana-noip j'ai indiqué le nom du serveur sur internet, comme l'adresse n'est pas fixe, j'ai créé un nom de machine visible sur internet via les services de NoIp. On récupérera maintenant le script MakeOpenVPN.sh qui va vous simplifier la vie pour créer le fichier de configuration du client. On le trouvera à l'adresse https://gist.github.com/maxauvy/5491c8823545f6e2a2af. On le lance en tapant

bash MakeOpenVPN.sh

voilà le résultat

Entrez le nom d'un client existant :
tetiaroa
Clé publique trouvée : tetiaroa
Clé privée trouvée : tetiaroa.3des.key
Clé publique CA trouvée : ca.crt
Clé privée tls-auth trouvée : ta.key
Terminé ! tetiaroa.ovpn généré avec succès.
MakeOpenVPN.sh: ligne 73:  Pas : commande introuvable

cela va créer un fichier de configuration complet tetiaroa.ovpn comprenant la configuration et les clés nécessaires à la connexion. Ce fichier doit être placé dans le répertoire /etc/openvpn du client, il faudra s'assurer de transférer ce fichier en toute sécurité du serveur vers le client.




[retour haut de la page ]

Lancement et fonctionnement d'OpenVPN

On revient maintenant sur le serveur. Le service openvpn a été installé par défaut lors de l'installation du package mais il n'est pas actif par défaut, pour l'activer il faudra taper la commande (sous mageia,  à adapter en fonction de votre distribution)

systemctl enable openvpn@server.service

voilà le résultat

systemctl enable openvpn@server.service
Created symlink /etc/systemd/system/openvpn.target.wants/openvpn@server.service → /usr/lib/systemd/system/openvpn@.service.

Pour lancer openvpn on tapera

systemctl start openvpn@server.service

voilà le résultat avec journalctl et le mode verbeux 4

juil. 24 11:21:56 mana.kervao.fr systemd[1]: Starting OpenVPN Robust And Highly Flexible Tunneling Application (Config: server)...
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]: Current Parameter Settings:
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   config = 'server.conf'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   mode = 1
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   persist_config = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   persist_mode = 1
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   show_ciphers = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   show_digests = DISABLED
juil. 24 11:21:56 mana.kervao.fr audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=openvpn@server comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
juil. 24 11:21:56 mana.kervao.fr systemd[1]: Started OpenVPN Robust And Highly Flexible Tunneling Application (Config: server).
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   show_engines = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   genkey = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   key_pass_file = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   show_tls_ciphers = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   connect_retry_max = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]: Connection profiles [0]:
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   proto = udp
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   local = '192.168.1.11'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   local_port = '1194'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_port = '1194'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_float = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   bind_defined = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   bind_local = ENABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   bind_ipv6_only = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   connect_retry_seconds = 5
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   connect_timeout = 120
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   socks_proxy_server = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   socks_proxy_port = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tun_mtu = 1500
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tun_mtu_defined = ENABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   link_mtu = 1500
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   link_mtu_defined = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tun_mtu_extra = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tun_mtu_extra_defined = DISABLED
juil. 24 11:21:56 mana.kervao.fr kernel: audit: type=1130 audit(1627118516.126:193602): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=openvpn@server comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   mtu_discover_type = -1
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   fragment = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   mssfix = 1450
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   explicit_exit_notification = 1
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]: Connection profiles END
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_random = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ipchange = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   dev = 'tun'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   dev_type = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   dev_node = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   lladdr = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   topology = 1
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_local = '10.8.0.1'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_remote_netmask = '10.8.0.2'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_noexec = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_nowarn = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_ipv6_local = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_ipv6_netbits = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_ipv6_remote = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   shaper = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   mtu_test = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   mlock = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   keepalive_ping = 10
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   keepalive_timeout = 120
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   inactivity_timeout = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ping_send_timeout = 10
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ping_rec_timeout = 240
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ping_rec_timeout_action = 2
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ping_timer_remote = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remap_sigusr1 = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   persist_tun = ENABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   persist_local_ip = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   persist_remote_ip = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   persist_key = ENABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   passtos = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   resolve_retry_seconds = 1000000000
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   resolve_in_advance = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   username = 'openvpn'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   groupname = 'openvpn'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   chroot_dir = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   cd_dir = '/etc/openvpn/'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   writepid = '/run/openvpn/server.pid'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   up_script = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   down_script = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   down_pre = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   up_restart = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   up_delay = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   daemon = ENABLED
juil. 24 11:21:56 mana.kervao.fr systemd-networkd[605]: tun0: Gained carrier
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   inetd = 0
juil. 24 11:21:56 mana.kervao.fr systemd-udevd[9494]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   log = DISABLED
juil. 24 11:21:56 mana.kervao.fr systemd-networkd[605]: tun0: Gained IPv6LL
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   suppress_timestamps = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   machine_readable_output = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   nice = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   verbosity = 4
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   mute = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   gremlin = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   status_file = 'openvpn-status.log'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   status_file_version = 1
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   status_file_update_freq = 60
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   occ = ENABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   rcvbuf = 0
juil. 24 11:21:56 mana.kervao.fr systemd-udevd[9494]: Process 'net_create_ifcfg' failed with exit code 1.
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   sndbuf = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   mark = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   sockflags = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   fast_io = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   comp.alg = 11
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   comp.flags = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   route_script = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   route_default_gateway = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   route_default_metric = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   route_noexec = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   route_delay = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   route_delay_window = 30
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   route_delay_defined = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   route_nopull = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   route_gateway_via_dhcp = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   allow_pull_fqdn = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   route 10.8.0.0/255.255.255.0/default (not set)/default (not set)
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   route 192.168.43.0/255.255.255.0/default (not set)/default (not set)
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   management_addr = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   management_port = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   management_user_pass = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   management_log_history_cache = 250
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   management_echo_buffer_size = 100
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   management_write_peer_info_file = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   management_client_user = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   management_client_group = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   management_flags = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   shared_secret_file = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   key_direction = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ciphername = 'AES-256-CBC'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ncp_enabled = ENABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ncp_ciphers = 'AES-256-GCM:AES-128-GCM'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   authname = 'SHA1'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   prng_hash = 'SHA1'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   prng_nonce_secret_len = 16
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   keysize = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   engine = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   replay = ENABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   mute_replay_warnings = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   replay_window = 64
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   replay_time = 15
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   packet_id_file = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   use_iv = ENABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   test_crypto = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tls_server = ENABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tls_client = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   key_method = 2
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ca_file = '/etc/openvpn/easy-rsa/keys/ca.crt'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ca_path = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   dh_file = '/etc/openvpn/easy-rsa/keys/dh2048.pem'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   cert_file = '/etc/openvpn/easy-rsa/keys/mana.crt'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   extra_certs_file = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   priv_key_file = '/etc/openvpn/easy-rsa/keys/mana.key'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   pkcs12_file = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   cipher_list = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   cipher_list_tls13 = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tls_cert_profile = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tls_verify = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tls_export_cert = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   verify_x509_type = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   verify_x509_name = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   crl_file = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ns_cert_type = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_ku[i] = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   remote_cert_eku = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ssl_flags = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tls_timeout = 2
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   renegotiate_bytes = -1
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   renegotiate_packets = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   renegotiate_seconds = 3600
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   handshake_window = 60
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   transition_window = 3600
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   single_session = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   push_peer_info = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tls_exit = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tls_auth_file = '/etc/openvpn/easy-rsa/keys/ta.key'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tls_crypt_file = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   server_network = 10.8.0.0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   server_netmask = 255.255.255.0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   server_network_ipv6 = ::
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   server_netbits_ipv6 = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   server_bridge_ip = 0.0.0.0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   server_bridge_netmask = 0.0.0.0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   server_bridge_pool_start = 0.0.0.0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   server_bridge_pool_end = 0.0.0.0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   push_entry = 'route 192.168.1.0 255.255.255.0'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   push_entry = 'compress lz4-v2'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   push_entry = 'route 10.8.0.1'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   push_entry = 'topology net30'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   push_entry = 'ping 10'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   push_entry = 'ping-restart 120'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_pool_defined = ENABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_pool_start = 10.8.0.4
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_pool_end = 10.8.0.251
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_pool_netmask = 0.0.0.0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_pool_persist_filename = 'ipp.txt'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_pool_persist_refresh_freq = 600
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_ipv6_pool_defined = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_ipv6_pool_base = ::
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ifconfig_ipv6_pool_netbits = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   n_bcast_buf = 256
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tcp_queue_limit = 64
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   real_hash_size = 256
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   virtual_hash_size = 256
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   client_connect_script = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   learn_address_script = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   client_disconnect_script = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   client_config_dir = 'ccd'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   ccd_exclusive = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   tmp_dir = '/tmp'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   push_ifconfig_defined = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   push_ifconfig_local = 0.0.0.0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   push_ifconfig_remote_netmask = 0.0.0.0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   push_ifconfig_ipv6_defined = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   push_ifconfig_ipv6_local = ::/0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   push_ifconfig_ipv6_remote = ::
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   enable_c2c = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   duplicate_cn = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   cf_max = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   cf_per = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   max_clients = 1024
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   max_routes_per_client = 256
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   auth_user_pass_verify_script = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   auth_user_pass_verify_script_via_file = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   auth_token_generate = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   auth_token_lifetime = 0
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   port_share_host = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   port_share_port = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   client = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   pull = DISABLED
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]:   auth_user_pass_file = '[UNDEF]'
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]: OpenVPN 2.4.9 x86_64-mageia-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [MH/PKTINFO] [AEAD] built on Apr 28 2020
juil. 24 11:21:56 mana.kervao.fr openvpn[9490]: library versions: OpenSSL 1.1.0l  10 Sep 2019, LZO 2.10
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: Diffie-Hellman initialized with 2048 bit key
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: TLS-Auth MTU parms [ L:1622 D:1184 EF:66 EB:0 ET:0 EL:3 ]
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: ROUTE_GATEWAY 192.168.1.1/255.255.255.0 IFACE=eno2 HWADDR=79:2e:cb:62:8f:ce
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: TUN/TAP device tun0 opened
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: TUN/TAP TX queue length set to 100
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: do_ifconfig, tt->did_ifconfig_ipv6_setup=0
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: /usr/sbin/ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu 1500
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: /usr/sbin/route add -net 192.168.43.0 netmask 255.255.255.0 gw 10.8.0.2
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: /usr/sbin/route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: Data Channel MTU parms [ L:1622 D:1450 EF:122 EB:406 ET:0 EL:3 ]
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: Could not determine IPv4/IPv6 protocol. Using AF_INET
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: Socket Buffers: R=[212992->212992] S=[212992->212992]
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: UDPv4 link local (bound): [AF_INET]192.168.1.11:1194
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: UDPv4 link remote: [AF_UNSPEC]
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: GID set to openvpn
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: UID set to openvpn
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: MULTI: multi_init called, r=256 v=256
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: ifconfig_pool_read(), in='tetiaroa,10.8.0.4', TODO: IPv6
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: succeeded -> ifconfig_pool_set()
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: IFCONFIG POOL LIST
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: tetiaroa,10.8.0.4
juil. 24 11:21:56 mana.kervao.fr openvpn[9491]: Initialization Sequence Completed

On peut avoir une idée du statut du serveur en tapant

systemctl status openvpn@server.service

voilà le résultat

● openvpn@server.service - OpenVPN Robust And Highly Flexible Tunneling Application (Config: server)
   Loaded: loaded (/usr/lib/systemd/system/openvpn@.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-07-22 17:25:23 CEST; 48s ago
  Process: 26145 ExecStart=/usr/sbin/openvpn --daemon --writepid /run/openvpn/server.pid --cd /etc/openvpn/ --config server.conf (code=exited, status=0/SUCCESS)
 Main PID: 26146 (openvpn)
    Tasks: 1 (limit: 4685)
   Memory: 2.1M
   CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
           └─26146 /usr/sbin/openvpn --daemon --writepid /run/openvpn/server.pid --cd /etc/openvpn/ --config server.conf

juil. 22 17:25:23 mana.kervao.fr openvpn[26146]: UDPv4 link remote: [AF_UNSPEC]
juil. 22 17:25:23 mana.kervao.fr openvpn[26146]: GID set to openvpn
juil. 22 17:25:23 mana.kervao.fr openvpn[26146]: UID set to openvpn
juil. 22 17:25:23 mana.kervao.fr openvpn[26146]: MULTI: multi_init called, r=256 v=256
juil. 22 17:25:23 mana.kervao.fr openvpn[26146]: IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
juil. 22 17:25:23 mana.kervao.fr openvpn[26146]: ifconfig_pool_read(), in='tetiaroa,10.8.0.4', TODO: IPv6
juil. 22 17:25:23 mana.kervao.fr openvpn[26146]: succeeded -> ifconfig_pool_set()
juil. 22 17:25:23 mana.kervao.fr openvpn[26146]: IFCONFIG POOL LIST
juil. 22 17:25:23 mana.kervao.fr openvpn[26146]: tetiaroa,10.8.0.4
juil. 22 17:25:23 mana.kervao.fr openvpn[26146]: Initialization Sequence Completed

Maintenant on voit que le tunnel s'est créé en tapant sur le serveur

ifconfig -a

on voit le tunnel tun0 qui a fait son apparition

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.8.0.1  netmask 255.255.255.255  destination 10.8.0.2
        inet6 fe79::8e03:7e65:1ae7:933  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 12  bytes 726 (726.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Le serveur a comme adresse dans le réseau VPN 10.8.0.1 conformément à ce qui est indiqué dans son fichier de configuration.

[Retour vers le haut de la page]

Maintenant on va lancer la connexion côté client, on va donc sur le client et on tape

openvpn --config /etc/openvpn/tetiaroa.ovpn

voilà le résultat

2021-07-23 17:06:29 WARNING: Compression for receiving enabled. Compression has been used in the past to break encryption. Sent packets are not compressed unless "allow-compression yes" is also set.
2021-07-23 17:06:29 DEPRECATED OPTION: --cipher set to 'AES-256-CBC' but missing in --data-ciphers (AES-256-GCM:AES-128-GCM). Future OpenVPN version will ignore --cipher for cipher negotiations. Add 'AES-256-CBC' to --data-ciphers o
r change --cipher 'AES-256-CBC' to --data-ciphers-fallback 'AES-256-CBC' to silence this warning.
2021-07-23 17:06:29 OpenVPN 2.5.0 x86_64-mageia-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Nov  9 2020
2021-07-23 17:06:29 library versions: OpenSSL 1.1.1k  25 Mar 2021, LZO 2.10
2021-07-23 17:06:29 WARNING: --ns-cert-type is DEPRECATED.  Use --remote-cert-tls instead.
2021-07-23 17:06:29 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
🔐 Enter Private Key Password: ***********            
2021-07-23 17:06:36 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
2021-07-23 17:06:37 TCP/UDP: Preserving recently used remote address: [AF_INET]94.11.100.53:1194
2021-07-23 17:06:37 UDP link local: (not bound)
2021-07-23 17:06:37 UDP link remote: [AF_INET]94.11.100.53:1194
2021-07-23 17:06:38 [mana-noip] Peer Connection Initiated with [AF_INET]94.11.100.53:1194
2021-07-23 17:06:39 WARNING: Compression for receiving enabled. Compression has been used in the past to break encryption. Sent packets are not compressed unless "allow-compression yes" is also set.
2021-07-23 17:06:39 TUN/TAP device tun0 opened
2021-07-23 17:06:39 net_iface_mtu_set: mtu 1500 for tun0
2021-07-23 17:06:39 net_iface_up: set tun0 up
2021-07-23 17:06:39 net_addr_ptp_v4_add: 10.8.0.6 peer 10.8.0.5 dev tun0
2021-07-23 17:06:39 /etc/openvpn/update-resolv-conf tun0 1500 1553 10.8.0.6 10.8.0.5 init
dhcp-option DNS 208.67.222.222
dhcp-option DNS 208.67.220.220
2021-07-23 17:06:39 Initialization Sequence Completed

il faudra saisir le mot de passe saisi plus tôt à la génération de la clé du client. On notera l'adresse 94.11.100.53 qui correspond à l'adresse IP réelle du serveur sur internet.

Là aussi en tapant

ifconfig -a

on voit le tunnel qui s'est mis en place

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.8.0.6  netmask 255.255.255.255  destination 10.8.0.5
        inet6 fe79::fe30:bced:5d5e:d40e  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 224  bytes 52524 (51.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4433  bytes 413548 (403.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Le client se retrouve avec l'adresse 10.8.0.6 sur le réseau VPN. Et voilà ce que cela donne côté serveur

juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: MULTI: multi_create_instance called
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 Re-using SSL/TLS context
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 LZ4v2 compression initializing
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 Control Channel MTU parms [ L:1622 D:1184 EF:66 EB:0 ET:0 EL:3 ]
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 Data Channel MTU parms [ L:1622 D:1450 EF:122 EB:406 ET:0 EL:3 ]
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 Local Options String (VER=V4): 'V4,dev-type tun,link-mtu 1558,tun-mtu 1500,proto UDPv4,comp-lzo,keydir 0,cipher AES-256-CBC,auth SHA1,keysize 256,tls-auth,key-method 2,tls-server'
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 Expected Remote Options String (VER=V4): 'V4,dev-type tun,link-mtu 1558,tun-mtu 1500,proto UDPv4,comp-lzo,keydir 1,cipher AES-256-CBC,auth SHA1,keysize 256,tls-auth,key-method 2,tls-client'
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 TLS: Initial packet from [AF_INET]78.203.244.46:52136, sid=8fd78fcb 9aca764b
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 VERIFY OK: depth=1, C=FR, ST=Bretagne, L=BreizhCity, O=Funix, OU=funix, CN=mana-noip, name=mana, emailAddress=olivier.hoarau@funix.org
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 VERIFY OK: depth=0, C=FR, ST=Bretagne, L=BreizhCity, O=Funix, OU=funix, CN=tetiaroa, name=tetiaroa, emailAddress=olivier.hoarau@funix.org
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 peer info: IV_VER=2.5.0
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 peer info: IV_PLAT=linux
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 peer info: IV_PROTO=6
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 peer info: IV_NCP=2
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 peer info: IV_CIPHERS=AES-256-GCM:AES-128-GCM:AES-256-CBC
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 peer info: IV_LZ4=1
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 peer info: IV_LZ4v2=1
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 peer info: IV_LZO=1
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 peer info: IV_COMP_STUB=1
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 peer info: IV_COMP_STUBv2=1
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 peer info: IV_TCPNL=1
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 Control Channel: TLSv1.2, cipher TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: 78.203.244.46:52136 [tetiaroa] Peer Connection Initiated with [AF_INET]78.203.244.46:52136
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: tetiaroa/78.203.244.46:52136 OPTIONS IMPORT: reading client specific options from: ccd/tetiaroa
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: tetiaroa/78.203.244.46:52136 MULTI_sva: pool returned IPv4=10.8.0.6, IPv6=(Not enabled)
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: tetiaroa/78.203.244.46:52136 MULTI: Learn: 10.8.0.6 -> tetiaroa/78.203.244.46:52136
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: tetiaroa/78.203.244.46:52136 MULTI: primary virtual IP for tetiaroa/78.203.244.46:52136: 10.8.0.6
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: tetiaroa/78.203.244.46:52136 MULTI: internal route 192.168.43.0/24 -> tetiaroa/78.203.244.46:52136
juil. 24 12:27:46 mana.kervao.fr openvpn[4166]: tetiaroa/78.203.244.46:52136 MULTI: Learn: 192.168.43.0/24 -> tetiaroa/78.203.244.46:52136
juil. 24 12:27:47 mana.kervao.fr openvpn[4166]: tetiaroa/78.203.244.46:52136 PUSH: Received control message: 'PUSH_REQUEST'
juil. 24 12:27:47 mana.kervao.fr openvpn[4166]: tetiaroa/78.203.244.46:52136 SENT CONTROL [tetiaroa]: 'PUSH_REPLY,route 192.168.1.0 255.255.255.0,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,compress lz4-v2,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM' (status=1)
juil. 24 12:27:47 mana.kervao.fr openvpn[4166]: tetiaroa/78.203.244.46:52136 Data Channel: using negotiated cipher 'AES-256-GCM'
juil. 24 12:27:47 mana.kervao.fr openvpn[4166]: tetiaroa/78.203.244.46:52136 Data Channel MTU parms [ L:1550 D:1450 EF:50 EB:406 ET:0 EL:3 ]
juil. 24 12:27:47 mana.kervao.fr openvpn[4166]: tetiaroa/78.203.244.46:52136 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
juil. 24 12:27:47 mana.kervao.fr openvpn[4166]: tetiaroa/78.203.244.46:52136 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key

On retrouve l'adresse 78.203.244.46 qui correspond à l'adresse IP de mon mobile 4G sur internet.

Maintenant à partir du client je peux "pinger" le serveur avec son nom du réseau local (mana dans mon exemple).La commande ip r sur le client donnera

default via 192.168.43.1 dev wlp3s0 proto dhcp metric 600
10.8.0.1 via 10.8.0.5 dev tun0 proto static metric 50
10.8.0.5 dev tun0 proto kernel scope link src 10.8.0.6 metric 50
94.11.100.53 via 192.168.43.1 dev wlp3s0 proto static metric 600
192.168.1.0/24 via 10.8.0.5 dev tun0 proto static metric 50
192.168.43.0/24 dev wlp3s0 proto kernel scope link src 192.168.43.70 metric 600
192.168.43.1 dev wlp3s0 proto static scope link metric 600

L'interface wifi du client étant wlp3s0 et pour mémoire

  • 10.8.0.1 est l'adresse IP du serveur VPN sur le VPN
  • 10.8.0.6 est l'adresse IP du client VPN sur le VPN
  • 94.11.199.53 est l'adresse IP réelle du serveur VPN sur internet
  • 192.168.1.0 désigne le réseau local privé
  • 192.168.43.0 désigne le réseau local privé sur lequel se trouve le client VPN
  • 192.166.43.70 est l'adresse IP du client VPN sur le réseau privé du client VPN
  • 192.168.43.1 est la passerelle du réseau local privé du client VPN

Pour monter un répertoire NFS du serveur sur le client, j'ai rajouté la ligne suivante dans le fichier /etc/hosts du serveur

10.8.0.6 tetiaroa-vpn.kervao.fr tetiaroa-vpn

en considérant que l'adresse attribuée reste fixe (c'est configuré ainsi dans le fichier de configuration du serveur)

puis dans le fichier /etc/exports j'ai rajouté tetiaroa-vpn et pris en compte avec exportfs -a et le tour est joué, on a accès à l'ensemble des partages réseau à distance via le VPN.

Il sera sans doute nécessaire de modifier la configuration de shorewall de cette manière

dans le fichier /etc/shorewall/interfaces on rajoute la ligne

vpn     tun0    -

dans le fichier /etc/shorewall/zones on rajoute

vpn    ipv4

et dans le fichier /etc/shorewall/rules

ACCEPT all vpn all


[Retour vers le haut de la page]

Les clients graphiques VPN

Vous pouvez également utiliser un client VPN avec une interface graphique, cette page en recense un certain nombre. Pour ceux sur mageia on pourra se tourner vers drakvpn. Pour ma part j'ai choisi NetworkManager qu'on trouve sur n'importe quelle distribution qui permet de prendre en compte directement le fichier du client tetiaroa.ovpn

Sous plasma quand on clique sur les paramètres de configuration au niveau de Connexions, je clique sur le + pour créer une nouvelle connexion puis Importer une connexion VPN...

Je désigne mon fichier /etc/openvpn/tetiaroa.ovpn les différents champs sont saisis automatiquement et il n'y a plus qu'à saisir le mot de passe.

Ce n'est pas fini, il faudra cliquer sur l'onglet IPv4 puis Routes... et bien cochez la case Utiliser uniquement pour les ressources sur cette connexion, sinon tout le flux internet partira encore vers le tunnel VPN.


Le réseau VPN est également accessible à partir de l'applet du tableau de bord


sous XFCE il faudra installer le package nm-applet sur une Mageia

 
[Retour page d'accueil FUNIX]