VPS + Wireguard + Mikrotik : accédez à vos serveurs locaux !

Voici une config demandée par un client :

Il utilise :

  • un serveur Wireguard hébergé sur un VPS Pulseheberg
  • une connexion internet gérée par un routeur Mikrotik
  • plusieurs serveurs locaux avec pas mal d’applications dédiées sous Linux, Docker, etc.

Pour simplifier la configuration, un script a été créé pour envoyer les commandes au Mikrotik :

#!/bin/bash

# Ce script génère les lignes à saisir sur Mikrotik Router OS 7
# pour arriver sur le wireguard du Mikrotik via un port externe du tunnel
# et se connecter à une IP locale, accessible depuis le routeur Mikrotik
# sur un port de destination précis
#
# #############################################################################
# #                               SCHÉMA DE PRINCIPE                          #
# #############################################################################
# #                                                                           #
# #      INTERNET (Utilisateur)                                               #
# #          |                                                                #
# #          | Requête sur vpn.monserveur.com:[EXT_PORT]                      #
# #          v                                                                #
# #  +-----------------------------+                                          #
# #  |       VPS (Linux)           |                                          #
# #  |  [ IP Publique : X.X.X.X ]  |                                          #
# #  |                             |                                          #
# #  |  (Serveur WireGuard)        | <--- Interface wg0 (10.10.20.1)          #
# #  +--------------|--------------+                                          #
# #                 |                                                         #
# #        [ TUNNEL WIREGUARD ]    <--- Flux Chiffré                          #
# #                 |                                                         #
# #  +--------------|--------------+                                          #
# #  |   MIKROTIK (RouterOS 7)     | <--- Interface [WG_INT] (10.10.20.2)     #
# #  |                             |                                          #
# #  |  1. DST-NAT (Ext -> Int)    | (Vers $DEST_IP:$DEST_PORT)               #
# #  |  2. SRC-NAT (Masquerade)    | (Assure le retour via le tunnel)         #
# #  |  3. FILTER (Forward)        | (Autorise le passage)                    #
# #  +--------------|--------------+                                          #
# #                 |                                                         #
# #         [ RÉSEAU LOCAL ]       <--- Switch / LAN                          #
# #                 |                                                         #
# #  +--------------|--------------+                                          #
# #  |     SERVEUR LOCAL           |                                          #
# #  |    ($DEST_IP)               | <--- Reçoit sur $DEST_PORT               #
# #  +-----------------------------+                                          #
# #                                                                           #
# #############################################################################

echo "--- Configuration de redirection MikroTik via WireGuard ---"

# Fonction pour forcer une saisie non vide
ask_required() {
    local prompt_text=$1
    local var_name=$2
    local input=""
    while [[ -z "$input" ]]; do
        read -p "$prompt_text : " input
        if [[ -z "$input" ]]; then
            echo "Erreur : Ce champ est obligatoire. Veuillez saisir une valeur."
        fi
    done
    eval "$var_name=\"$input\""
}

# Demande des informations avec validation
ask_required "IP de destination locale (ex: 192.168.1.182)" DEST_IP
ask_required "Port de destination local (ex: 80)" DEST_PORT
ask_required "Port externe (sur le tunnel) arrivant sur le Mikrotik (ex: 8097)" EXT_PORT
ask_required "Nom de l'interface WireGuard sur le Mikrotik (ex: wireguard-client)" WG_INT

# Génération du bloc de commande
echo ""
echo "------------------------------------------------------------"
echo " COPIEZ ET COLLEZ LES COMMANDES CI-DESSOUS DANS MIKROTIK :"
echo "------------------------------------------------------------"
echo ""

cat << EOF
# 1. Destination NAT (Redirection entrante)
/ip firewall nat
add chain=dstnat action=dst-nat to-addresses=$DEST_IP to-ports=$DEST_PORT \\
    protocol=tcp in-interface=$WG_INT dst-port=$EXT_PORT \\
    comment="Redirection $EXT_PORT vers $DEST_IP:$DEST_PORT"

# 2. Source NAT (Masquerade pour le retour des paquets)
/ip firewall nat
add chain=srcnat action=masquerade dst-address=$DEST_IP \\
    protocol=tcp dst-port=$DEST_PORT \\
    comment="Masquerade retour pour $DEST_IP"

# 3. Autorisation dans le Firewall (Forward)
/ip firewall filter
add chain=forward action=accept connection-nat-state=dstnat \\
    in-interface=$WG_INT \\
    comment="Autoriser flux NAT via $WG_INT"
EOF

echo ""
echo "------------------------------------------------------------"

Vous allez donc obtenir les lignes de commande nécessaires pour qu’une demande arrivant sur le port Eth1 du Mikrotik, avec un port spécifique, soit redirigée vers une IP et le bon port de destination.

Prenons un exemple, avec un serveur Web local sur 192.168.1.90, port 80.
Voici les commandes à entrer dans le Mikrotik :

# 1. Destination NAT (Redirection entrante)
/ip firewall nat
add chain=dstnat action=dst-nat to-addresses=192.168.1.90 to-ports=80 \
    protocol=tcp in-interface=wg0 dst-port=8080 \
    comment="Redirection 8080 vers 192.168.1.90:80"

# 2. Source NAT (Masquerade pour le retour des paquets)
/ip firewall nat
add chain=srcnat action=masquerade dst-address=192.168.1.90 \
    protocol=tcp dst-port=80 \
    comment="Masquerade retour pour 192.168.1.90"

# 3. Autorisation dans le Firewall (Forward)
/ip firewall filter
add chain=forward action=accept connection-nat-state=dstnat \
    in-interface=wg0 \
    comment="Autoriser flux NAT via wg0"

Pour la configuration du VPS, installons Apache2, Let’s Encrypt pour obtenir une connexion SSL sécurisée, dans cet exemple sur le port 8070, et allons éditer par exemple : etc/apache2/sites-enabled/vpn-proxy.conf :

<VirtualHost *:8070>
    ServerName vpn.monserveur.com

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/vpn.monserveur.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/vpn.monserveur.com/privkey.pem

    ProxyPreserveHost On
    ProxyRequests Off

    # Redirection vers le serveur local via WireGuard
    ProxyPass / http://10.20.20.2:8080/
    ProxyPassReverse / http://10.20.20.2:8080/

    ProxyPass /api/live/ ws://10.20.20.2:8080/api/live/
    ProxyPassReverse /api/live/ ws://10.20.20.2:8080/api/live/

</VirtualHost>

Allons maintenant éditer /etc/apache2/ports.conf et ajoutons une simple ligne :

Listen 8070

Cela mettra votre serveur Apache 2 en écoute du port 8070, utilisé pour notre exemple, en plus des autres ports.

Vous allez alors pouvoir tout activer et relancer Apache 2 :

a2enmod ssl proxy proxy_http proxy_wstunnel
a2ensite vpn-proxy.conf
systemctl restart apache2

Vous allez désormais pouvoir accéder à votre serveur local, 192.168.1.90, sur son port 80 (ou autre), en demandant https://vpn.monserveur.com:8070 : le VPS reçoit la demande du port 8070, la dirige sur le Mikrotik port 8080 via un tunnel sécurisé, Mikrotik qui va alors convertir vers le bon port de destination : 80. Vous avez désormais accès à votre serveur local depuis internet !

Publications similaires

  • Tooway : station de contrôle KaSat

    Les plus curieux d’entre vous pourront se faire une idée des installations d’une station de contrôle au sol du satellite KaSat en téléchargeant le ZIP disponible sur le site de l’opérateur, Eutelsat. C’est cette station qui contrôle par exemple l’offre SkyDLS2+ que nous distribuons. De bien belles photos qui relèguent votre installation de réception TV à bien peu de chose 😉  

  • Femtocell Wimax

    Le Wimax Forum publie la norme femtocell Wimax qui permettra aux fournisseurs de développer des femtocells inter-opérables ainsi que l’équipement de réseau se basant sur la norme 802.16e. Les femtocells ont pour objectif principal de densifier la couverture, essentiellement à l’interieur des bâtiments. Ce genre de module existe déjà en WiFi, peu répandu en France hélas pour le moment (SFR propose une offre payante), mais sa généralisation en Wimax est une nouveauté intéressante. La norme permettra trois fonctionnements distincts :…

  • Wimax : installation gratuite

    Dans le département 35, les frais d’installation d’un CPE Wimax sont gratuits du 1er Avril jusqu’au 30 Juin, une économie de 150 à 250 € tout de même par foyer. Plus d’informations : Altitude infrastructure au 02 22 74 02 60 ou via les fournisseurs d’accès suivants : Wibox : 09 75 17 65 55 Numéo (le numéro est surtaxé, nous ne l’afficherons pas ici) Vivéole : 0 805 017 082 Ozone : 09 73 01 1000 als@tis : 0…

  • Bolloré fait le plein de Wimax

    Bolloré Télécom rachète à Altitude Télécom deux licences WiMax, l’une en Alsace, l’autre en Bourgogne. Bolloré Télécom détient du coup des licences WiMax sur l’ensemble du territoire Français. Quid des offres à venir ? Qu’en sera-t-il de la concurrence, toujours favorable pour les consommateurs finaux ? J’ai quelques doutes hélas 🙁 La suite sur le Figaro

  • Le satellite internet à la demande arrive

    Avanti Communications est sur le point de lancer son second satellite haut débit, avec un nouveau type d’offres : payez ce que vous consommez et pas plus, pas moins ! Adieu le classique abonnement mensuel, bonjour l’achat de volumes prépayés et renouvelables. A titre d’exemple, une première offre est proposée à 4 MBps descendant / 1 Mbps montant, 1 Go de données mensuelles pour environ 15 €. Voici qui pourrait intéresser les propriétaires de résidences secondaires ou les fans de…

  • Sat2way : promotions d’hiver

    Du 13 décembre 2013 au 15 février 2014, Sat2way propose ses promotions d’hiver : 50 % de remise pendant 3 mois sur les abonnements Too L et Too XL 120 € TTC pris en charge par Sat2Way sur une installation effectuée par un partenaire agrée Sat2Way  Ces 2 offres sont cumulables et peuvent s’ajouter aux aides mises en place par les différentes collectivités locales ou régionales.  Pour en savoir plus, appelez Sat2way 0 805 690 690 (numéro vert) ou consultez www.sat2way.fr

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.