Télécharger

ForestVPN pour MikroTik

ForestVPN comme conteneur sur un routeur MikroTik sous RouterOS 7. Il s’enregistre comme son propre appareil et affiche un code d’association.

Obtenir l’app

Obtenir l’app

suquant/fvpn:0.3.17

Configuration requise

Configuration requise

RouterOS
7.21 ou ultérieure. Les versions plus anciennes rejettent le bloc d’installation.
Prise en charge des conteneurs
Le paquet container installé et le mode appareil conteneur activé. L’activer exige un accès physique au routeur, règle de MikroTik et non la nôtre.
Processeur
arm, arm64 ou x86.
Un routeur, un appareil
Le conteneur détient sa propre clé machine et est associé à votre compte comme un appareil à part entière.
Installation

Installation

Un conteneur RouterOS, vérifié sur du matériel réel — un MikroTik cAP ax a récupéré l'image, s'est enregistré, a imprimé un code d'association, puis s'est connecté. Il détient sa propre clé de machine et demande une sortie au plan de contrôle de la même façon que le téléphone.

  1. 01

    Donnez au conteneur sa propre adresse

    Trois lignes dans le terminal de RouterOS — un /30 qui n'existe qu'entre le conteneur et le routeur, rien à chercher sur votre LAN.

  2. 02

    Ajoutez et démarrez le conteneur

    Image épinglée, pas :latest — un routeur devant lequel vous ne vous trouvez pas ne devrait jamais changer silencieusement ce qu'il exécute.

  3. 03

    Lisez le code d'association

    Il s'affiche dans /log avant même que le conteneur ait une quelconque accessibilité réseau. Ouvrez l'application ForestVPN, déjà connectée avec votre numéro de compte, et saisissez le code.

  4. 04

    Choisissez la sortie depuis votre téléphone

    Le routeur sert sa propre page d'état à l'adresse que vous venez de lui donner — ouvrez-la depuis un téléphone sur le même réseau et appuyez sur un emplacement. C'est la seule chose qu'un boîtier sans écran ne peut pas faire lui-même.

L'installation complète
/interface/veth/add name=veth-fvpn address=172.31.254.2/30 gateway=172.31.254.1
/ip/address/add address=172.31.254.1/30 interface=veth-fvpn
/interface/list/member/add list=LAN interface=veth-fvpn
# A `flash` folder (hAP ac² and other 16 MB boards) means only flash/ survives a reboot: the state
# goes there, the log stays in RAM, and the image is pulled again at every boot.
:global fvRAMROOT ([:len [/file/find where name="flash"]] > 0)
:global fvSTATE "/forestvpn"
:global fvCMD "--agent --nat-lan --iface fvpn0 --config /etc/forestvpn/fvpn0.conf --policy-route --fwmark 51820 --table 100 --http-port 80 --report /etc/forestvpn/result.txt"
:if ($fvRAMROOT) do={
    :global fvSTATE
    :global fvCMD
    :set fvSTATE "flash/forestvpn"
    :set fvCMD ($fvCMD . " --log-dir /var/log")
}
/container/mounts/add list=fvpn-state src=$fvSTATE dst=/etc/forestvpn mode=rw
/container/add remote-image=suquant/fvpn:0.3.17 interface=veth-fvpn root-dir=/fvpn \
    mountlists=fvpn-state entrypoint=/mikrotik.sh cmd=$fvCMD \
    privileged=yes logging=yes start-on-boot=yes dns=172.31.254.1 name=fvpn
:if ($fvRAMROOT) do={
    /container/set [find name="fvpn"] start-on-boot=no
    /system/script/add name=forestvpn-repull comment="forestvpn" source={
:local c [/container/find where name="fvpn"]
:if ([:len $c] = 1) do={
    :local n 0
    :while ((![/container/get $c running]) && ($n < 60)) do={
        :set n ($n + 1)
        :log info ("ForestVPN: pulling the image into the RAM root, attempt " . $n)
        :do { /container/repull $c } on-error={}
        :local w 0
        :local s ""
        :while (($w < 60) && ($s = "")) do={
            :set w ($w + 1)
            :delay 5s
            :local st [:pick [/container/print as-value where name="fvpn"] 0]
            :if (($st->"stopped") = true) do={ :set s "stopped" }
            :if (($st->"download/extract failed") = true) do={ :set s "failed" }
        }
        :if ($s = "stopped") do={
            :do { /container/start $c } on-error={}
            :delay 30s
        } else={
            :log warning "ForestVPN: image pull failed, retrying in 60s"
            :delay 60s
        }
    }
    :if (![/container/get $c running]) do={
        :log error "ForestVPN: the container is still not running after 60 pulls; see /container/print"
    }
}
}
    /system/scheduler/add name=forestvpn-repull start-time=startup comment="forestvpn" \
        on-event="/system/script/run forestvpn-repull"
}
/container/start [find name="fvpn"]

Chaque ligne est essentielle, `cmd=` plus que toute autre.

Sans `--agent`, le point d'entrée exécute le tunnelier brut au lieu de celui géré par le compte, cherche un `.conf` que personne n'a écrit, et le conteneur s'arrête avec `fvpn0 never appeared`. L'autre point essentiel est le montage : l'image est `scratch`, donc rien ne survit à un redémarrage sauf ce qui est monté, et perdre le montage de la clé de machine signifie que le routeur revient comme un tout nouvel appareil, qui a silencieusement disparu de votre compte.

Premier lancement

Premier lancement

  1. 01

    Lire le code d’association

    Il s’affiche dans /log, et le routeur sert une page d’état à l’adresse http://172.31.254.2/.

  2. 02

    Le saisir dans l’app

    Ouvrez ForestVPN sur un téléphone où vous êtes connecté et saisissez le code. L’association se fait depuis l’app, pas depuis le routeur.

  3. 03

    Choisir la sortie

    Sur la page d’état, touchez un emplacement.

Ce qui fonctionne sur MikroTik

Ce qui fonctionne sur MikroTik

Tout le routeur, un seul tunnel
Le conteneur fait passer dans le tunnel ce que RouterOS lui remet. C’est RouterOS qui décide de quel trafic il s’agit.
Image figée
L’installation utilise une étiquette d’image fixe, jamais :latest, pour qu’un routeur devant lequel vous n’êtes pas ne change jamais en silence ce qu’il exécute.
Cartes avec dossier flash
Les cartes comme le hAP ac² ne conservent que le dossier flash après un redémarrage. Le bloc d’installation en tient compte.

Pas encore sur MikroTik : choisir des sites ou des services par destination depuis ForestVPN. RouterOS prend la décision de routage.

Nouveautés sur MikroTik

Nouveautés sur MikroTik

0.3.16

  • The router now makes its own account and name-lookup requests through the same fallback paths as the apps, so it keeps reaching ForestVPN on networks that interfere with them.

0.3.15

  • A router stays on the location you chose: the fallback path no longer moves it to another one.
  • Tested on an arm64 router before release; not yet on 32-bit ARM hardware.

0.3.14

  • Boards with a flash folder (the hAP ac² and other 16 MB boards) now keep their key and settings across a reboot.

Toutes les notes de version

Mises à jour

Mises à jour

Passer à une image plus récente est une étape délibérée, car l’étiquette est figée.

Lire le journal des modifications

Vérifier votre téléchargement

Vérifier votre téléchargement

L’image est suquant/fvpn:0.3.17. L’étiquette est figée et publiée sur Docker Hub ; le bloc d’installation utilise exactement cette étiquette.

Désinstallation

Désinstallation

Arrêtez et supprimez le conteneur avec /container/stop et /container/remove, puis supprimez son veth et son adresse. L’appareil reste dans votre compte jusqu’à ce que vous le retiriez dans l’app.

Questions fréquentes

Quels routeurs MikroTik fonctionnent ?
Tout routeur sous RouterOS 7.21 ou version ultérieure avec le paquet container. L’image est construite pour arm, arm64 et x86, et a été vérifiée sur du matériel arm64 réel.
Ai-je besoin d’un disque ?
Non, pour l’installation simple en conteneur montrée ici. Les cartes avec dossier flash ne conservent que ce dossier après un redémarrage, et le bloc en tient compte.
Est-il sûr d’utiliser :latest ?
Non. L’installation fige une étiquette d’image pour qu’un routeur près duquel vous n’êtes pas ne change jamais en silence ce qu’il exécute.
Français
Posez-nous vos questions