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.
ForestVPN як контейнер на роутері MikroTik з RouterOS 7. Він реєструється як окремий пристрій і виводить код прив’язки.
Контейнер RouterOS, перевірений на реальному обладнанні — MikroTik cAP ax отримав образ, зареєструвався, вивів код пов’язання і підключився. Він тримає власний машинний ключ і запитує вихідний вузол у контрольної площини так само, як це робить телефон.
Три рядки в терміналі RouterOS — /30, що існує лише між контейнером і роутером, нічого шукати у вашій локальній мережі.
Закріплений образ, а не :latest — роутер, перед яким ви не стоїте, ніколи не повинен непомітно підміняти те, що він запускає.
Він виводиться в /log ще до того, як контейнер матиме бодай якийсь доступ до мережі. Відкрийте застосунок ForestVPN, уже увійшовши з вашим номером акаунта, і введіть код.
Роутер обслуговує власну сторінку стану за адресою, яку ви щойно йому дали, — відкрийте її з телефона в тій самій мережі й торкніться локації. Це єдине, чого пристрій без екрана не може зробити сам.
/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"]Кожен рядок несе навантаження, а `cmd=` — найбільше з усіх.
Без `--agent` точка входу запускає звичайний тунельник замість керованого акаунтом, шукає `.conf`, якого ніхто не писав, і контейнер завершується з `fvpn0 never appeared`. Монтування — інша критична частина: образ — це `scratch`, тож після перезапуску нічого не зберігається, крім змонтованого, а втрата монтування машинного ключа означає, що роутер повернеться як цілком новий пристрій, який непомітно відпав від вашого акаунта.
Він виводиться в /log, а роутер віддає сторінку стану за адресою http://172.31.254.2/.
Відкрийте ForestVPN на телефоні, де ви ввійшли, і введіть код. Прив’язка робиться із застосунку, а не з роутера.
На сторінці стану торкніться локації.
Поки що немає на MikroTik: вибору сайтів чи сервісів за призначенням із самого ForestVPN. Рішення про маршрутизацію ухвалює RouterOS.
Образ — suquant/fvpn:0.3.17. Тег закріплений і опублікований на Docker Hub; блок встановлення використовує саме цей тег.
Зупиніть і видаліть контейнер командами /container/stop і /container/remove, потім видаліть його veth та адресу. Пристрій лишається у вашому акаунті, доки ви не приберете його в застосунку.