Herunterladen

ForestVPN für MikroTik

ForestVPN als Container auf einem MikroTik-Router mit RouterOS 7. Er meldet sich als eigenes Gerät an und gibt einen Kopplungscode aus.

Hol es dir

Hol es dir

suquant/fvpn:0.3.17

Voraussetzungen

Voraussetzungen

RouterOS
7.21 oder neuer. Ältere Versionen lehnen den Installationsblock ab.
Container-Unterstützung
Das Paket container ist installiert und der Container-Gerätemodus aktiviert. Das Aktivieren erfordert physischen Zugriff auf den Router; das ist MikroTiks Regel, nicht unsere.
Prozessor
arm, arm64 oder x86.
Ein Router, ein Gerät
Der Container hält seinen eigenen Maschinenschlüssel und ist als eigenes Gerät mit deinem Konto verknüpft.
Installation

Installation

Ein RouterOS-Container, auf echter Hardware verifiziert — ein MikroTik cAP ax hat das Image gezogen, sich registriert, einen Pairing-Code ausgegeben und sich verbunden. Er hält seinen eigenen Maschinenschlüssel und fragt die Kontrollebene nach einem Exit, genau wie das Telefon.

  1. 01

    Dem Container eine eigene Adresse geben

    Drei Zeilen im RouterOS-Terminal — ein /30, das nur zwischen dem Container und dem Router existiert, nichts, wonach Sie in Ihrem LAN suchen müssten.

  2. 02

    Container hinzufügen und starten

    Angepinntes Image, nicht :latest — ein Router, vor dem Sie nicht stehen, sollte nie unbemerkt austauschen, was er ausführt.

  3. 03

    Pairing-Code auslesen

    Er wird nach /log ausgegeben, noch bevor der Container überhaupt Netzwerkerreichbarkeit hat. Öffnen Sie die ForestVPN-App, bereits mit Ihrer Kontonummer angemeldet, und geben Sie den Code ein.

  4. 04

    Exit vom Telefon aus wählen

    Der Router stellt seine eigene Statusseite unter der Adresse bereit, die Sie ihm gerade gegeben haben — öffnen Sie sie von einem Telefon im selben Netzwerk und tippen Sie einen Standort an. Das ist das Einzige, was eine Box ohne Bildschirm nicht selbst erledigen kann.

Die gesamte Installation
/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"]

Jede Zeile ist entscheidend, `cmd=` vor allem.

Ohne `--agent` führt der Entrypoint den rohen Tunnel-Prozess statt des kontoverwalteten aus, sucht nach einer `.conf`, die niemand geschrieben hat, und der Container beendet sich mit `fvpn0 never appeared`. Der Mount ist der andere Punkt: Das Image ist `scratch`, also überlebt nichts einen Neustart außer dem, was gemountet ist, und den Mount des Maschinenschlüssels zu verlieren bedeutet, dass der Router als brandneues Gerät zurückkommt, das stillschweigend aus Ihrem Konto gefallen ist.

Erster Start

Erster Start

  1. 01

    Kopplungscode ablesen

    Er wird in /log ausgegeben, und der Router stellt eine Statusseite unter http://172.31.254.2/ bereit.

  2. 02

    In der App eingeben

    Öffne ForestVPN auf einem Handy, auf dem du angemeldet bist, und gib den Code ein. Die Verknüpfung entsteht in der App, nicht auf dem Router.

  3. 03

    Exit wählen

    Tippe auf der Statusseite auf einen Standort.

Was auf MikroTik funktioniert

Was auf MikroTik funktioniert

Ganzer Router, ein Tunnel
Der Container tunnelt, was RouterOS ihm übergibt. RouterOS entscheidet, welcher Verkehr das ist.
Festgelegtes Image
Die Installation nutzt ein festes Image-Tag, nie :latest, damit ein Router, vor dem du nicht stehst, nie unbemerkt austauscht, was er ausführt.
Boards mit Flash-Ordner
Boards wie das hAP ac² behalten nach einem Neustart nur den Flash-Ordner. Der Installationsblock berücksichtigt das.

Noch nicht auf MikroTik: die Wahl von Seiten oder Diensten pro Ziel aus ForestVPN heraus. RouterOS trifft die Routing-Entscheidung.

Neu unter MikroTik

Neu unter 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.

Alle Versionshinweise

Aktualisierungen

Aktualisierungen

Der Wechsel auf ein neueres Image ist ein bewusster Schritt, weil das Tag festgelegt ist.

Änderungsprotokoll lesen

Download prüfen

Download prüfen

Das Image ist suquant/fvpn:0.3.17. Das Tag ist festgelegt und auf Docker Hub veröffentlicht; der Installationsblock nutzt genau dieses Tag.

Deinstallation

Deinstallation

Stoppe und entferne den Container mit /container/stop und /container/remove, lösche dann sein veth und seine Adresse. Das Gerät bleibt in deinem Konto, bis du es in der App entfernst.

Fragen

Welche MikroTik-Router funktionieren?
Jeder Router mit RouterOS 7.21 oder neuer und dem Container-Paket. Das Image wird für arm, arm64 und x86 gebaut und wurde auf echter arm64-Hardware geprüft.
Brauche ich eine Festplatte?
Nein, für die hier gezeigte einfache Container-Installation nicht. Boards mit Flash-Ordner behalten nach einem Neustart nur diesen Ordner, und der Block berücksichtigt das.
Ist es sicher, :latest zu nutzen?
Nein. Die Installation legt ein Image-Tag fest, damit ein Router, in dessen Nähe du nicht bist, nie still verändert, was er ausführt.
Deutsch
Fragen Sie uns alles