دانلود

ForestVPN برای MikroTik

ForestVPN به‌صورت کانتینر روی روتر MikroTik با RouterOS 7. خود را به‌عنوان دستگاهی مستقل ثبت می‌کند و یک کد جفت‌سازی چاپ می‌کند.

دریافت

دریافت

suquant/fvpn:0.3.17

الزامات

الزامات

RouterOS
7.21 یا جدیدتر. نسخه‌های قدیمی‌تر بلوک نصب را رد می‌کنند.
پشتیبانی از کانتینر
بستهٔ container نصب است و حالت دستگاه کانتینر فعال است. فعال‌سازی آن به دسترسی فیزیکی به روتر نیاز دارد؛ این قانون MikroTik است نه قانون ما.
پردازنده
arm، arm64 یا x86.
یک روتر، یک دستگاه
کانتینر کلید ماشین خودش را نگه می‌دارد و به‌عنوان دستگاهی مستقل به حسابتان پیوند می‌خورد.
نصب

نصب

یک کانتینر RouterOS، روی سخت‌افزار واقعی تأییدشده — یک MikroTik cAP ax ایمیج را کشید، ثبت‌نام کرد، یک کد جفت‌سازی چاپ کرد و متصل شد. کلید دستگاه خودش را نگه می‌دارد و درست مثل گوشی از صفحهٔ کنترل خروجی درخواست می‌کند.

  1. 01

    به کانتینر آدرس خودش را بدهید

    سه خط در ترمینال RouterOS — یک /30 که فقط بین کانتینر و روتر وجود دارد، چیزی برای گشتن روی LAN شما نیست.

  2. 02

    کانتینر را اضافه و اجرا کنید

    ایمیجی پین‌شده، نه :latest — روتری که جلویش نیستید هرگز نباید بی‌سروصدا چیزی را که اجرا می‌کند عوض کند.

  3. 03

    کد جفت‌سازی را بخوانید

    پیش از اینکه کانتینر هیچ دسترسی شبکه‌ای داشته باشد، در /log چاپ می‌شود. اپ ForestVPN را باز کنید، که از قبل با شمارهٔ حساب شما وارد شده، و کد را وارد کنید.

  4. 04

    خروجی را از گوشی خود انتخاب کنید

    روتر روی همان آدرسی که به آن داده‌اید صفحهٔ وضعیت خودش را ارائه می‌کند — آن را از گوشی‌ای روی همان شبکه باز کنید و روی یک مکان بزنید. این تنها کاری است که یک جعبهٔ بدون صفحه‌نمایش نمی‌تواند خودش انجام دهد.

کل نصب
/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` است، پس چیزی از راه‌اندازی مجدد جان سالم به‌در نمی‌برد جز آنچه مانت شده، و از دست‌دادن مانت کلید دستگاه یعنی روتر به‌عنوان دستگاهی کاملاً جدید بازمی‌گردد که بی‌سروصدا از حساب شما جدا شده.

اجرای اول

اجرای اول

  1. 01

    کد جفت‌سازی را بخوانید

    در /log چاپ می‌شود و روتر یک صفحهٔ وضعیت در http://172.31.254.2/ ارائه می‌دهد.

  2. 02

    آن را در برنامه وارد کنید

    ForestVPN را روی گوشی‌ای که واردش شده‌اید باز کنید و کد را وارد کنید. پیوند از برنامه ساخته می‌شود نه از روتر.

  3. 03

    خروجی را انتخاب کنید

    در صفحهٔ وضعیت روی یک مکان بزنید.

چه چیزی روی MikroTik کار می‌کند

چه چیزی روی MikroTik کار می‌کند

کل روتر، یک تونل
کانتینر آنچه را RouterOS به آن می‌دهد از تونل عبور می‌دهد. اینکه آن ترافیک کدام است را RouterOS تعیین می‌کند.
تصویر ثابت‌شده
نصب از یک برچسب تصویر ثابت استفاده می‌کند، هرگز :latest، تا روتری که بالای سرش نیستید بی‌سروصدا آنچه را اجرا می‌کند عوض نکند.
بردهای دارای پوشهٔ flash
بردهایی مثل hAP ac² پس از راه‌اندازی مجدد فقط پوشهٔ flash را نگه می‌دارند. بلوک نصب این را در نظر می‌گیرد.

هنوز روی MikroTik نیست: انتخاب سایت‌ها یا سرویس‌ها بر اساس مقصد از داخل ForestVPN. تصمیم مسیریابی را RouterOS می‌گیرد.

تازه‌ها در MikroTik

تازه‌ها در 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.

همهٔ یادداشت‌های انتشار

به‌روزرسانی‌ها

به‌روزرسانی‌ها

رفتن به تصویر جدیدتر گامی آگاهانه است، چون برچسب ثابت شده است.

خواندن فهرست تغییرات

دانلودتان را بررسی کنید

دانلودتان را بررسی کنید

تصویر suquant/fvpn:0.3.17 است. برچسب ثابت شده و در Docker Hub منتشر شده است؛ بلوک نصب دقیقاً از همین برچسب استفاده می‌کند.

حذف نصب

حذف نصب

کانتینر را با /container/stop و /container/remove متوقف و حذف کنید، سپس veth و نشانی‌اش را پاک کنید. دستگاه تا وقتی در برنامه حذفش نکنید در حسابتان می‌ماند.

پرسش‌های متداول

کدام روترهای MikroTik کار می‌کنند؟
هر روتری که RouterOS 7.21 یا جدیدتر را با بستهٔ container اجرا کند. تصویر برای arm، arm64 و x86 ساخته می‌شود و روی سخت‌افزار واقعی arm64 بررسی شده است.
آیا به دیسک نیاز دارم؟
نه، برای نصب ساده با کانتینر که اینجا نشان داده شده است. بردهای دارای پوشهٔ flash پس از راه‌اندازی مجدد فقط همان پوشه را نگه می‌دارند و بلوک این را در نظر می‌گیرد.
آیا استفاده از :latest امن است؟
خیر. نصب یک برچسب تصویر را ثابت می‌کند تا روتری که نزدیکش نیستید بی‌سروصدا آنچه را اجرا می‌کند عوض نکند.
فارسی
هر سؤالی دارید بپرسید