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.
RouterOS 7 çalıştıran bir MikroTik yönlendiricide konteyner olarak ForestVPN. Kendi başına bir cihaz olarak kaydolur ve bir eşleştirme kodu yazdırır.
Gerçek donanımda doğrulanmış bir RouterOS konteyneri — bir MikroTik cAP ax imajı çekti, kaydoldu, bir eşleştirme kodu yazdırdı ve bağlandı. Kendi makine anahtarını tutar ve tıpkı telefon gibi kontrol düzleminden bir çıkış ister.
RouterOS terminalinde üç satır — yalnızca konteyner ile yönlendirici arasında var olan bir /30, LAN'ınızda aranacak bir şey yok.
:latest değil, sabitlenmiş bir imaj — önünde durmadığınız bir yönlendirici, çalıştırdığı şeyi asla sessizce değiştirmemelidir.
Konteyner herhangi bir ağ erişimine sahip olmadan önce /log'a yazdırır. Hesap numaranızla zaten oturum açmış olan ForestVPN uygulamasını açın ve kodu girin.
Yönlendirici, az önce verdiğiniz adreste kendi durum sayfasını sunar — bunu aynı ağdaki bir telefondan açın ve bir konuma dokunun. Bu, ekransız bir kutunun kendi başına yapamayacağı tek şeydir.
/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"]Her satır işlevseldir, özellikle `cmd=`.
`--agent` olmadan giriş noktası, hesap tarafından yönetilen yerine ham tünelleyiciyi çalıştırır, kimsenin yazmadığı bir `.conf` arar ve konteyner `fvpn0 never appeared` hatasıyla çıkar. Diğeri bağlamadır (mount): imaj `scratch` olduğundan yeniden başlatmadan yalnızca bağlanmış olan sağ çıkar ve makine anahtarının bağlamasını kaybetmek, yönlendiricinin sessizce hesabınızdan düşmüş yepyeni bir cihaz olarak geri gelmesi anlamına gelir.
/log içine yazdırılır ve yönlendirici http://172.31.254.2/ adresinde bir durum sayfası sunar.
ForestVPN'i oturum açtığın bir telefonda aç ve kodu gir. Bağlantı uygulamadan kurulur, yönlendiriciden değil.
Durum sayfasında bir konuma dokun.
MikroTik'te henüz yok: ForestVPN içinden hedef başına site ya da hizmet seçmek. Yönlendirme kararını RouterOS verir.
Daha yeni bir imaja geçmek bilinçli bir adımdır, çünkü etiket sabitlenmiştir.
İmaj suquant/fvpn:0.3.17. Etiket sabitlenmiştir ve Docker Hub'da yayımlanmıştır; kurulum bloğu tam olarak bu etiketi kullanır.
Konteyneri /container/stop ve /container/remove ile durdur ve kaldır, sonra veth'ini ve adresini sil. Cihaz, uygulamada kaldırana kadar hesabında kalır.