GNU/Linux >> Tutoriels Linux >  >> Panels >> OpenVPN

Configurer un serveur OpenVPN avec Ubuntu et Viscosity

Ce guide vous guidera à travers les étapes de configuration d'un serveur OpenVPN sur un hôte Ubuntu qui vous permet d'accéder en toute sécurité à votre réseau domestique/bureau depuis un emplacement distant et éventuellement d'envoyer tout votre trafic réseau via celui-ci afin que vous puissiez accéder à Internet. en toute sécurité également.

Avant d'utiliser ce guide, nous vous recommandons vivement de lire notre article Introduction à l'exécution d'un serveur OpenVPN.

Préparation

Pour ce guide, nous supposons :

  • Vous avez déjà installé la dernière version d'Ubuntu (20.04 au moment de la rédaction)
  • Vous avez racine accéder à cette installation
  • Cette installation d'Ubuntu est une installation propre
  • Connaître le nom de vos interfaces réseau (instructions juste en dessous)
  • Vous avez accès au serveur via Terminal ou SSH
  • Vous pouvez copier des fichiers sur et hors du serveur à l'aide de SCP ou d'un protocole similaire
  • Vous avez déjà installé une copie de Viscosity sur votre appareil client

Si vous avez besoin de télécharger et d'installer une copie d'Ubuntu, vous trouverez des informations sur http://www.ubuntu.com/download. Nous ne couvrirons pas les détails de la configuration d'une instance Ubuntu, de nombreux guides peuvent être trouvés en ligne. Si vous utilisez une version différente d'Ubuntu, il est très probable que la plupart, voire la totalité, des étapes décrites dans ce guide s'appliqueront toujours. Si vous cherchez à configurer un serveur OpenVPN sur un système d'exploitation différent, veuillez consulter nos autres guides.

Si vous n'avez pas de copie de Viscosity déjà installée sur votre client, veuillez consulter ce guide d'installation pour installer Viscosity (Mac | Windows).

Si vous débutez avec SSH ou SCP, nous avons quelques instructions dans notre guide d'introduction.

Pour obtenir le nom de votre interface réseau principale (accès WAN), exécutez ce qui suit sur votre serveur Ubuntu :
ip route | grep default | awk '{print $NF}'

Si vous disposez d'une deuxième interface réseau pour accéder aux machines de votre réseau local, vous aurez également besoin de son nom lors de la configuration du pare-feu et du routage.

Soutien

Malheureusement, nous ne pouvons fournir aucune assistance directe pour la configuration de votre propre serveur OpenVPN. Nous fournissons ce guide à titre gracieux pour vous aider à démarrer et à tirer le meilleur parti de votre copie de Viscosity. Nous avons soigneusement testé les étapes de ce guide pour nous assurer que, si vous suivez les instructions détaillées ci-dessous, vous devriez être sur la bonne voie pour profiter des avantages de l'exécution de votre propre serveur OpenVPN.

Pour plus d'informations ou de l'aide avec Ubuntu, il existe une gamme de ressources communautaires disponibles sur https://www.ubuntu.com/community

Mise en route

Tout d'abord, mettez à jour votre serveur :

sudo apt-get update
sudo apt-get -y upgrade

Vous pouvez être informé que vous devez redémarrer une fois les mises à niveau du package terminées. Si c'est le cas, continuez et redémarrez, puis reconnectez-vous et continuez.

Pour configurer un serveur OpenVPN, nous devons installer OpenVPN. Exécutez les commandes suivantes, en attendant que chacune soit terminée, pour ajouter le référentiel OpenVPNs à apt afin qu'OpenVPN soit automatiquement installé et mis à jour, puis pour installer OpenVPN :

sudo wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg | sudo apt-key add -
echo "deb http://build.openvpn.net/debian/openvpn/stable focal main" | sudo tee /etc/apt/sources.list.d/openvpn-aptrepo.list
Remarque :Si vous utilisez une ancienne distribution Ubuntu, remplacez "focal" dans la commande ci-dessus par "xenial" si Ubuntu 16.04, ou "bionic" si Ubuntu 18.04.

sudo apt-get update
sudo apt-get -y install openvpn


Génération de configurations, de certificats et de clés

L'étape suivante consiste à générer vos configurations pour le serveur et vos clients ainsi que les certificats qui les accompagnent. Vous pouvez le faire facilement en suivant le Guide de création de certificats et de clés. Vous pouvez soit suivre la section pour Ubuntu et copier vos configurations client hors du serveur (nous vous le recommandons), soit tout générer sur votre PC ou Mac et copier le serveur dossier qui est généré sur votre serveur Ubuntu.

Si vous utilisez le serveur DNS par défaut (10.8.0.1), vous devrez configurer vous-même un serveur DNS, les instructions se trouvent à la fin de cet article. Nous vous recommandons plutôt d'utiliser un serveur DNS existant, un serveur DNS accessible au public comme celui de Google (8.8.8.8 et 8.8.4.4) est le plus simple.

Une fois que vous avez généré vos configurations, vous devrez transférer la configuration du serveur vers votre serveur ou transférer vos configurations client hors de votre serveur. Si vous avez un accès local, une clé USB est la plus simple. Sinon, nous avons de l'aide sur la façon de transférer des fichiers avec SCP dans notre guide d'introduction.

Transfert IP

Afin de transmettre nos requêtes passant par le VPN, nous voulons que le serveur OpenVPN agisse comme un routeur. En tant que tel, nous devons activer le transfert IP. Dans le terminal, nous pouvons activer le transfert IP sur le serveur Ubuntu en saisissant :

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

Cependant, chaque fois que nous redémarrons le serveur, cette commande sera annulée. Pour nous assurer que cela ne se produise pas, nous devons modifier le fichier sysctl.conf à l'aide de nano. Saisissez :

sudo nano /etc/sysctl.conf

Faites défiler jusqu'à la section :

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

Supprimez le caractère "#" au début de la ligne pour qu'il devienne :

net.ipv4.ip_forward=1

Lorsque vous avez terminé, appuyez sur ctrl + x pour quitter nano. Enregistrez les modifications lorsque vous y êtes invité.

Pour nous assurer que les hôtes du réseau domestique/bureau peuvent trouver le serveur VPN, nous devons faire en sorte que le serveur réponde à toutes les requêtes ARP :

echo 1 | sudo tee /proc/sys/net/ipv4/conf/ens33/proxy_arp

ens33 est l'interface réseau du réseau domestique/bureau si vous avez deux interfaces réseau, ou votre interface réseau principale (WAN) dans le cas contraire (voir la section Préparation pour plus d'informations).

Règles de pare-feu

Nous utiliserons le pare-feu non compliqué (ufw) qui est installé par défaut sur Ubuntu pour contrôler la façon dont le trafic passe par le serveur OpenVPN. Si votre serveur Ubuntu est accessible de l'extérieur (dispose d'une connexion directe à Internet avec sa propre adresse IP, sans routeur), vous devez utiliser ufw pour autoriser le port OpenVPN que nous avons configuré ci-dessus (1194). Sinon, nous allons définir ufw pour autoriser tout le trafic et configurer les paramètres de routage.

Si votre serveur Ubuntu N'A PAS besoin d'ufw pour le protéger (c'est-à-dire qu'il se trouve derrière un routeur ou qu'il a un pare-feu différent), vous devez définir la règle d'entrée par défaut pour permettre à tout le trafic de passer par ufw par défaut. Pour ce faire, nous devons modifier le fichier de configuration.

  1. Ouvrez ce fichier dans nano :
    sudo nano /etc/default/ufw
  2. Faites défiler jusqu'à la section :
    # Set the default input policy to ACCEPT, DROP, or REJECT. Please note that if
    # you change this you will most likely want to adjust your rules.
    DEFAULT_INPUT_POLICY="DROP"
  3. Étant donné que notre serveur n'utilisera pas ce pare-feu pour se protéger, remplacez "DROP" par "ACCEPT"
  4. Faites défiler jusqu'à la section :
    # Set the default forward policy to ACCEPT, DROP or REJECT.  Please note that
    # if you change this you will most likely want to adjust your rules
    DEFAULT_FORWARD_POLICY="DROP"
  5. Modifiez la politique de transfert de "DROP" à "ACCEPT"
  6. Appuyez sur ctrl + x pour quitter nano. Enregistrez les modifications lorsque vous y êtes invité.

Si votre serveur Ubuntu A BESOIN d'ufw pour le protéger , vous devez lui indiquer les ports à autoriser car il a les politiques d'entrée et de transfert par défaut de DROP. Si vous exécutez le serveur OpenVPN à partir d'un emplacement distant, vous devrez vous y connecter en SSH pour modifier les paramètres. En tant que tel, nous devons dire au pare-feu d'autoriser le trafic SSH.

  1. Saisissez ce qui suit dans le terminal :
    sudo ufw allow ssh
  2. Le trafic VPN que nous enverrons au serveur OpenVPN se fera via UDP sur le port 1194, alors entrez dans le terminal :
    sudo ufw allow 1194/udp

Si vous avez d'autres services en cours d'exécution sur votre serveur Ubuntu, vous devez vous assurer que vous autorisez également leur trafic via ufw. Assurez-vous d'ajouter toutes les règles d'autorisation pour tous les autres ports sur lesquels votre serveur Ubuntu écoute (comme un serveur multimédia Plex ou peut-être votre propre serveur de messagerie).

Ensuite, quelle que soit la configuration de votre réseau , vous devez configurer les règles de routage pour ufw.

  1. Ouvrez le fichier de configuration ufw dans nano :
    sudo nano /etc/ufw/before.rules
  2. Déplacez le curseur sous la section :
    #
    # rules.before
    #
    # Rules that should be run before the ufw command line added rules. Custom
    # rules should be added to one of these chains:
    # ufw-before-input
    # ufw-before-output
    # ufw-before-forward
  3. Collez ce qui suit :
    # START OPENVPN RULES
    # NAT table rules
    *nat
    :POSTROUTING ACCEPT [0:0]

    # Uncomment the next POSTROUTING line and replace ens33 with the name
    # of your Local Network Interface if you have a second network interface
    # for accessing machines on your local network
    # Allow OpenVPN client to communicate with local home network
    #-A POSTROUTING -s 10.8.0.0/24 -d 192.168.0.0/24 -o ens32 -j MASQUERADE

    # Allow traffic from OpenVPN client to your WAN and/or LAN via ens33
    -A POSTROUTING -s 10.8.0.0/24 -o ens33 -j MASQUERADE
    COMMIT
    # END OPENVPN RULES
    • Remplacer ens33 avec le nom de votre Interface Réseau Principale si elle est différente (Voir la section Préparation pour plus d'informations)
  4. Déplacez le curseur sous la section :
    # Don't delete these required lines, otherwise there will be errors
    *filter
    :ufw-before-input - [0:0]
    :ufw-before-output - [0:0]
    :ufw-before-forward - [0:0]
    :ufw-not-local - [0:0]
    # End required lines
  5. Collez ce qui suit :
    #Accept all traffic to and from VPN
    -A ufw-before-input -i tun+ -j ACCEPT
    -A ufw-before-output -i tun+ -j ACCEPT

    # Forward traffic to and from the VPN
    -A ufw-before-forward -s 10.8.0.0/24 -j ACCEPT
    -A ufw-before-forward -d 10.8.0.0/24 -j ACCEPT
  6. Appuyez sur ctrl + x pour quitter nano. Enregistrez les modifications lorsque vous y êtes invité.

Ufw est maintenant prêt à être activé.

  1. Dans le terminal, saisissez :
    sudo ufw enable
  2. Si vous êtes connecté en SSH à cette instance Ubuntu, elle affichera l'invite :
    Command may disrupt existing ssh connections. Proceed with operation (y|n)?
    À laquelle vous devez répondre par y .

La sortie suivante sera alors affichée (indépendamment de SSH ou non)

Firewall is active and enabled on system startup

Démarrage du serveur OpenVPN

À ce stade, les bases sont terminées. La configuration et les fichiers de votre serveur doivent être sur votre serveur, soit générés sur le serveur, soit copiés à partir de l'endroit où vous les avez générés.

Tout d'abord, copiez les fichiers de configuration du serveur dans le répertoire OpenVPN :

sudo cp /path/to/configs/server/* /etc/openvpn/

Maintenant, démarrez votre serveur et activez-le pour qu'il démarre également après un redémarrage.

sudo systemctl enable [email protected]
sudo systemctl start [email protected]

Pour vérifier l'état du serveur, saisissez :

sudo systemctl status [email protected]

À quoi il doit répondre par :

Active: active (running) since Thu 2017-06-01 17:06:29 PDT; 4s ago

Si le serveur n'est pas répertorié comme actif (en cours d'exécution), vous devriez voir une sortie de journal indiquant ce qui s'est mal passé.

Votre serveur OpenVPN est maintenant opérationnel et prêt à vous connecter.

Configuration du routeur

Si votre serveur Ubuntu est directement accessible , vous pouvez alors ignorer cette section . Il n'y a pas de routeur à configurer.

Cependant, si votre serveur Ubuntu se trouve derrière un routeur (comme sur votre WiFi domestique), vous devrez configurer votre routeur pour autoriser le trafic VPN. Veuillez consulter notre article Introduction à l'exécution d'un serveur OpenVPN pour plus d'informations.

Configuration de la viscosité

La dernière étape consiste à configurer la viscosité. Grâce à openvpn-generate, c'est aussi simple que d'importer et de se connecter.

Importation

Copiez votre fichier *.visz que vous avez créé avec openvpn-generate sur votre ordinateur Mac ou Windows avec Viscosity installé et double-cliquez sur le fichier. Vous devriez voir une invite indiquant que la configuration a été importée avec succès.

Connexion et utilisation de votre connexion VPN

Vous êtes maintenant prêt à vous connecter. Cliquez sur l'icône Viscosity dans la barre de menus macOS ou dans la barre d'état système de Windows pour ouvrir le menu Viscosity, sélectionnez la connexion que vous avez importée et Viscosity se connectera.

Pour vérifier que le VPN est opérationnel, vous pouvez ouvrir la fenêtre Détails à partir du menu Viscosité. Cela vous permettra de voir les détails de connexion, le trafic et le journal OpenVPN.



Ça y est, vous avez configuré votre propre serveur OpenVPN. Félicitations, vous êtes maintenant libre de profiter des avantages d'exploiter votre propre serveur OpenVPN !

Serveur DNS de base

Si vous choisissez d'exécuter votre propre serveur DNS pour les clients, voici un exemple de configuration pour dnsmasq. Installez dnsmasq avec la commande suivante :

sudo apt-get install -y dnsmasq

Vous devez d'abord désactiver l'instance dnsmasq fournie par NetworkManager par défaut. Cette instance par défaut est restreinte et ne nous permettra pas d'écouter les requêtes DNS via le VPN.

  1. Ouvrez la configuration de NetworkManager :
    nano /etc/NetworkManager/NetworkManager.conf
  2. Commentez la ligne activant dnsmasq en ajoutant un caractère '#' au début de la ligne :
    dns=dnsmasq
  3. Appuyez sur ctrl + x pour quitter nano. Enregistrez les modifications lorsque vous y êtes invité.

Ensuite, nous devons modifier une partie de la configuration par défaut.

  1. Créez une sauvegarde de la configuration dnsmasq d'origine :
    cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
  2. Configurez le serveur DNS pour qu'il écoute les requêtes du serveur Ubuntu (127.0.0.1) et du VPN (10.8.0.1) :
    echo -e "listen-address=127.0.0.1, 10.8.0.1\nbind-interfaces" > /etc/dnsmasq.conf
  3. Empêchez nos requêtes DNS d'inonder les serveurs DNS racine avec des requêtes incorrectes :
    echo -e "domain-needed\nbogus-priv" >> /etc/dnsmasq.conf
  4. Utilisez les serveurs DNS de Google pour résoudre les requêtes (vous êtes libre d'utiliser le service de résolution DNS de votre choix) :
    echo -e "server=8.8.8.8\nserver=8.8.4.4" >> /etc/dnsmasq.conf
  5. Redémarrez le service dnsmasq pour activer nos modifications :
    service dnsmasq restart

Pour vérifier que le serveur DNS écoute sur les adresses demandées, tapez :

netstat -anup

Vous devriez voir une liste d'adresses, y compris 127.0.0.1 et 10.8.0.1 :

Proto Recv-Q Send-Q Local Address         Foreign Address       State     PID/Program name
...
udp        0      0 127.0.0.1:53          0.0.0.0:*                       54892/dnsmasq   
udp        0      0 10.8.0.1:53           0.0.0.0:*                       54892/dnsmasq   
...

Enfin, nous devons nous assurer que dnsmasq est démarré après OpenVPN au démarrage du système. Par défaut, dnsmasq s'exécute avant OpenVPN, ce qui l'empêche de configurer le serveur DNS pour le VPN car le VPN n'existe pas encore.

  1. Créez une sauvegarde du fichier d'origine :
    cp /etc/rc.local /etc/rc.local.bak
  2. Tapez :
    echo -e "service dnsmasq restart\nexit 0" >> /etc/rc.local
  3. Rendre ce script exécutable :
    chmod +x /etc/rc.local

Nous avons maintenant terminé la configuration du serveur DNS.


OpenVPN
  1. Installation et configuration de Plex Media Server sur Ubuntu

  2. Comment installer et configurer un serveur OpenVPN sur Ubuntu 22.04

  3. Configuration d'Amavis et de ClamAV sur le serveur de messagerie Ubuntu

  4. Configurer un serveur Obfuscation avec Obfsproxy et Viscosity

  5. Installer et configurer le serveur OpenVPN sur Ubuntu 20.04

Configuration d'un serveur OpenVPN avec Sophos UTM et Viscosity

Configuration d'un serveur OpenVPN avec Sophos XG et Viscosity

Configurer un serveur OpenVPN avec Synology et Viscosity

Configuration d'un serveur OpenVPN avec Tomato router et Viscosity

Configuration d'un serveur OpenVPN avec Ubiquiti EdgeRouter (EdgeOS) et Viscosity

Configurer un serveur OpenVPN avec VyOS et Viscosity