Comment connecter un client SoftEther à un VPN SoftEther sous Ubuntu ?

By | August 13, 2018

Il y’a quelques semaines je vous introduisais à SoftEther, un VPN très intéressant supportant plusieurs protocoles VPN tels que le SSL VPN, L2tp/IpSec, OpenVpn, MS-SSTP, L2TPv3, etc.
Dans cet billet, nous tenterons de nous connecter à un serveur Vpn SoftEther via la version Linux du client SoftEther.
Notez que ce logiciel client utilise le protocole Vpn natif de SoftEther. Cela peut être très utile surtout si l’un de vos systèmes ne supporte pas certains protocoles offerts par SoftEther.

Si vous souhaitez savoir davantage sur l’installation et l’administration d’un serveur VPN SoftEther, je vous invite à lire cet article:

Mise en place d’un VPN L2tp/IpSec avec SoftEther

I-Pré-requis

Installez les pré-requis pour l’installation de SoftEther:

# apt-get update && apt-get upgrade -y
# apt-get install -y gcc make wget tzdata git libreadline-dev libncurses-dev libssl-dev cmake -y

Nous devons nous assurer que la redirection des paquets pour le protocole Ipv4 est active sur notre machine.
Ouvrez votre terminal, accédez au fichier /etc/sysctl.conf, puis activez le paramètre net.ipv4.ip_forward comme suit.

Validez la modification.

# sysctl -p

II- Installation du client SoftEther

Passons à présent au téléchargement puis à la compilation des fichiers binaires de SoftEther:

# cd /opt
# git clone https://github.com/SoftEtherVPN/SoftEtherVPN_Stable.git
# cd SoftEtherVPN_Stable
# ./configure
# make

Suite à la compilation de SoftEther, un dossier bin est généré. Ce dossier contient d’autres dossiers comprenant les fichiers binaires utilisés par SoftEther.

Copiez le contenu du dossier bin dans le dossier /opt.

# cp -r bin/* /opt

Le projet github de SoftEther vient avec un dossier systemd comprenant des fichiers qui serviront à créer des services systemd pour l’exécution de chacune des applications de SoftEther.

Il vous suffira donc de copier le contenu du dossier systemd dans le dossier /lib/systemd/system:

# cp systemd/* /lib/systemd/system

Ci-dessous le contenu du fichier softether-vpnclient.service:

Démarrez le service du client Softether :

# systemctl start softether-vpnclient.service
# systemctl enable softether-vpnclient.service

vpncmd est l’outil d’administration du VPN SoftEther en ligne de commande. Il est situé dans le dossier /opt/vpncmd/vpncmd.
Pour accéder plus facilement à cet exécutable, vous avez plusieurs options dont la configuration d’un alias.
Ouvrez le fichier .bashrc de votre profil,

# nano ~/.bashrc

Puis ajoutez la ligne suivante:

alias vpncmd=/opt/vpncmd/vpncmd

L’outil sera désormais disponible à travers la commande vpncmd dans vos nouveaux shells.

III-Configuration du client SoftEther

Passons à présent à la configuration du client.
Accédez au mode admin du client SoftEther.
Lancez vpncmd dans votre terminal, choisissez l’option 2, puis tapez deux fois sur votre touche entrée.

Si vous souhaitez mettre en place un mot de passe pour l’accès au mode admin, lancez la commande PasswordSet, puis un mot de passe.

Créeons un nouvel adaptateur à partir de la commande NicCreate.

AccountCreate nous servira à créer une nouvelle connexion VPN.
A cette étape, vous devez insérer toutes les informations de votre serveur VPN SoftEther, comme l’adresse IP, puis le port utilisé, le nom d’utilisateur, etc.

NB: Par défaut, le protocole de SoftEther utilise les ports 443, 992, 5555. Il est également possible d’ajouter vos propres ports.

La commande AccountPasswordSet permet d’insérer le mot de passe de l’utilisateur du VPN.

Pour vous connecter à votre serveur VPN SoftEther, exécutez la commande AccountConnect.

Vous pouvez vous servir de la commande AccountStatusGet pour vérifier l’état de la connexion.
Dans notre cas, le paramètre Session Status nous confirme que la connexion au serveur VPN a fonctionné.

Quittez vpncmd.

Pour obtenir une adresse Ipv4 du VPN, il est nécessaire que vous executiez dans votre terminal la commande dhclient.

Même après votre connexion au serveur VPN, vous remarquerez que votre adresse IP publique est restée inchangée.

En effet, la table de routage ci-dessous nous informe que seul le réseau local du VPN est accessible par le client.
Le routage par défaut est toujours le même.


Contrairement à Windows, sous Linux, la table de routage n’est pas mise à jour automatiquement. Il nous faudra donc le faire manuellement.
Notre objectif étant de router tout le trafic du client vers le VPN.

Cette ligne ci-dessous nous permet d’ajouter une route vers le serveur VPN via la passerelle locale. Cette passerelle représente, dans mon exemple, le routeur de mon réseau WiFi.

# ip route add vpn_server_public_ip via local_router_ip dev interface

Cette ligne nous permet de supprimer le routage par défaut sur le système du client.

# ip route del default

Cette ligne nous permet d’ajouter un nouveau routage par défaut.

# ip route add default via vpnserver_private_ip

Après l’exécution de ces commandes, vous verrez que votre adresse ip publique aura changé.

Ci-dessous la nouvelle table de routage du client.

Voici un script Bash qui vous simplifiera tout ce processus.

#!/bin/bash

if [ "x$2" == "x" ]; 
then
  echo "VPN server public ip required  ./vpn-route.sh add/del vpn_server_public_ip " 

else

 case "$1" in

 add)

 # add route to vpn server

 ip route add $2/32 via 192.168.43.1 dev wlp3s0
 ip route del default
 ip route add default via 192.168.30.1 dev vpn_mynic


 ;;

 del)


 ip route del $2/32
 ip route del default
 ip route add default via 192.168.43.1 dev wlp3s0

 ;;

 esac

fi

mdestroy

Leave a Reply

Your email address will not be published. Required fields are marked *