BSNM Network & Mount Manager (Cz. 1): Własny menedżer WireGuard, SFTP i SMB dla Linux oraz Windows

Przez ostatni miesiąc moja uwaga skupiła się głównie na dopracowaniu narzędzia desktopowego, które powstawało równolegle z serwerowym panelem hostingowym BSNM. Ponieważ sam panel BSNM posiada zaimplementowaną natywną obsługę odizolowanych klatek NAS oraz sieci prywatnych WireGuard, nadszedł moment, aby zamknąć etap prac nad dedykowaną aplikacją kliencką i przetestować w boju, jak wszystkie elementy tej układanki spinają się w jedną całość.

Głównym powodem napisania BSNM Network & Mount Manager była chęć całkowitego uniezależnienia się od kilku zewnętrznych programów narzędziowych oraz wszechobecnych w nich reklam, telemetrii i sztucznych ograniczeń wersji darmowych. Zamiast uruchamiać osobnego klienta do zestawiania VPN, kolejny program do mapowania zasobów SFTP (w stylu komercyjnego RaiDrive) i jeszcze osobno zarządzać skrótami do udziałów SMB, postanowiłem zamknąć te trzy mechanizmy w jednym lekkim, natywnym programie.

Co jednak najważniejsze: choć aplikacja stanowi integralną część projektu BSNM, została zaprojektowana tak, aby mogła działać jako w 100% niezależne narzędzie (standalone). Możesz jej używać do łączenia się z dowolnym serwerem WireGuard VPN, dowolnym serwerem SSH/SFTP oraz dowolnym serwerem NAS (Samba/SMB) w sieci lokalnej lub zdalnej – nawet jeśli po drugiej stronie nie stoi infrastruktura BSNM.

Filozofia Zero Bloatware: 600 KB na Linuksie i 5 MB na Windowsie

Współczesne aplikacje biurkowe cierpią na chorobę o nazwie Electron – zwykły menedżer połączeń potrafi dziś ciągnąć za sobą całą przeglądarkę Chromium, ważyć 250 MB na dysku i pożerać setki megabajtów pamięci RAM tylko po to, by wyświetlić kilka przycisków.

W BSNM Network & Mount Manager zastosowałem te same rygorystyczne założenia (Zasada 4xE: Ekstremalnie prosty, bezpieczny, szybki i wydajny), które napędzają część serwerową projektu:

  • Czysty C++20 i sprzętowe GUI: Cały program został napisany w standardzie C++20 (kompilowany przez clang++) z wykorzystaniem natywnego interfejsu Dear ImGui + GLFW + OpenGL3.
  • 0.0% zużycia CPU i GPU w spoczynku: Pętla główna okna nie odpytuje procesora w nieskończoność, lecz usypia wątek renderowania (glfwWaitEventsTimeout) i wybudza go wyłącznie przy interakcji użytkownika lub zdarzeniu sieciowym z wątku tła (glfwPostEmptyEvent). Gdy zminimalizujesz okno do zasobnika systemowego (traya), program praktycznie przestaje istnieć dla procesora.
  • Ekstremalnie mały rozmiar: Gotowy pakiet instalacyjny .deb dla systemu Linux waży zaledwie ok. 600 KB, natomiast kompletny instalator dla systemu Windows 11 (wraz ze wszystkimi wymaganymi bibliotekami DLL) zajmuje ok. 5 MB.
  • Wbudowana wielojęzyczność: Aplikacja już w standardzie obsługuje 6 języków (polski, angielski, niemiecki, francuski, hiszpański oraz rosyjski) z funkcją automatycznego wykrywania języka systemu operacyjnego (Auto).

Jak to działa pod maską? Struktura i bezpieczeństwo

Zamiast polegać na luźnych skryptach powłoki, rdzeń aplikacji opiera się na wewnętrznym orkiestratorze stanów oraz wielowątkowym nadzorcy połączenia (Watchdog).

Inteligentna sekwencja łączenia i rozłączania: Kliknięcie przycisku połączenia najpierw podnosi interfejs WireGuard, następnie weryfikuje realną komunikację wewnątrz tunelu (sprawdzając handshake kryptograficzny oraz dostępność portu TCP serwera docelowego) i dopiero po potwierdzeniu stabilności trasy automatycznie montuje skonfigurowane dyski SFTP i SMB. Przy rozłączaniu lub zamykaniu systemu kolejność jest odwrotna: program najpierw bezpiecznie odmontowuje udziały sieciowe (chroniąc aplikacje przed zawieszeniem uchwytów plików), a dopiero na końcu zamyka tunel VPN.

Szyfrowanie poświadczeń (libsodium): Wszystkie wrażliwe dane – klucz prywatny WireGuard, klucz Pre-Shared Key (PSK) oraz hasła do serwerów SFTP i SMB – nigdy nie leżą w pliku konfiguracyjnym config.json otwartym tekstem. Przed zapisem na dysk są szyfrowane algorytmem crypto_secretbox_easy z biblioteki libsodium (oznaczane prefiksem ENCv1:), a klucz główny jest wiązany sprzętowo z identyfikatorem maszyny i kontem użytkownika. Ponadto każda zmiana konfiguracji tworzy automatyczną kopię zapasową (.bak_timestamp), przechowując do trzech ostatnich wersji pliku.

Bsnm nmm pulpit status linux

Integracja z zasobnikiem systemowym (System Tray): Zamknięcie okna krzyżykiem (X) nie wyłącza programu, lecz chowa go do traya. Ikona żółwia BSNM na pasku zadań dynamicznie informuje o stanie pracy: gdy wszystko jest rozłączone, ikona pozostaje szara (monochromatyczna); gdy tylko aktywujesz tunel VPN lub zamontujesz chociaż jeden udział sieciowy, ikona zmienia kolor na zielony.

Różnice platformowe: Linux vs Windows 11

Choć interfejs graficzny na obu systemach wygląda i działa identycznie, warstwa niskopoziomowa wykorzystuje natywne mechanizmy każdego z systemów operacyjnych:

Wersja dla systemu Linux:

WireGuard przez Netlink (bez sudo): Linux posiada moduł WireGuard wbudowany bezpośrednio w jądro systemu. Aplikacja komunikuje się z kernelem natywnie przez gniazda AF_NETLINK (RTNETLINK oraz GENERIC NETLINK), tworząc interfejs, nadając adresację IP, ustawiając optymalne MTU 1360 oraz tablice routingu bez wywoływania zewnętrznych skryptów. Dzięki nadaniu binarce zdolności CAP_NET_ADMIN program działa na prawach zwykłego użytkownika i nie pyta o hasło sudo przy każdym starcie.

System plików FUSE3: Udziały SFTP (przez libssh2) oraz SMB/Samba (przez libsmbclient) są montowane w przestrzeni użytkownika za pomocą silnika FUSE3 (domyślnie w katalogu ~/Mounts/). Wbudowany 2-sekundowy cache atrybutów (stat cache) sprawia, że przeglądanie katalogów w menedżerach plików (np. Nemo, Dolphin, Nautilus) działa błyskawicznie, a krótkotrwałe utraty pakietów są automatycznie wznawiane w tle.

Bsnm nmm wg linux

Wersja dla systemu Windows 11:

Wymóg sterownika WireGuard dla połączeń VPN: W przeciwieństwie do Linuksa, jądro systemu Windows 11 nie posiada wbudowanego protokołu WireGuard. Z tego względu, jeśli zamierzasz korzystać z modułu VPN, w systemie musi być zainstalowana oryginalna aplikacja WireGuard dla Windows (nasz program wykorzystuje jej podpisany sterownik jądra oraz usługę systemową w tle do zestawiania tunelu bez otwierania oficjalnego GUI). Jeżeli natomiast używasz BSNM Managera wyłącznie do montowania udziałów SMB i SFTP (np. w sieci lokalnej lub na publicznym IP), instalacja WireGuarda nie jest wymagana.

Montowanie bezpośrednio na Pulpicie (Desktop) lub jako litera dysku: W systemie Windows zasoby są domyślnie podpinane bezpośrednio w katalogu Desktop użytkownika (widoczne od razu jako foldery na Pulpicie), a w przypadku udziałów SMB możesz również przypisać im klasyczną literę dysku (np. Z:) widoczną w oknie „Ten komputer”.

Bsnm nmm wg win11

Instalacja na Linuksie (paczka .deb oraz kompilacja ze źródeł)

Pod systemem Linux program oficjalnie wspiera wszystkie dystrybucje bazujące na pakietach .deb (Debian, Ubuntu, Linux Mint, Pop!_OS itp.). Instalacja sprowadza się do jednego polecenia w terminalu, które automatycznie dociągnie wymagane biblioteki systemowe i skonfiguruje uprawnienia sieciowe:

sudo apt install ./bsnm-manager_0.2.1-beta_amd64.deb

Co w przypadku innych dystrybucji (Arch, Fedora, openSUSE)?

Jeśli korzystasz z dystrybucji nieobsługującej formatu .deb, możesz samodzielnie spaczkować aplikację pod swój menedżer pakietów lub w kilkanaście sekund skompilować ją bezpośrednio ze źródeł. Wystarczy zainstalować pakiety deweloperskie kompilatora clang++ oraz bibliotek (glfw, fuse3, libssh2, libsodium, libsmbclient, gtk3, libayatana-appindicator3), a następnie w katalogu ze źródłami wykonać trzy polecenia:

make clean
make
sudo make setcap

Ostatni krok (make setcap, wykonujący w tle setcap cap_net_admin+ep) nadaje skompilowanej binarce uprawnienia do zarządzania interfejsem sieciowym WireGuard, dzięki czemu możesz uruchamiać program ze zwykłego konta użytkownika.

Instalacja i aktualizacje na Windows 11

Na systemie Windows 11 cały proces realizuje klasyczny instalator bsnm-manager_0.2.1-beta_win64_setup.exe (~5 MB). Instalator sam rozpakowuje program do C:\Program Files\BSNM Manager, tworzy skróty w Menu Start oraz na Pulpicie, a podczas aktualizacji do nowszej wersji potrafi automatycznie zamknąć działającą w trayu instancję, podmienić pliki binarne i uruchomić program na nowo, zachowując całą Twoją dotychczasową konfigurację z %APPDATA%\bsnm_manager.

W części drugiej przejdziemy krok po kroku przez wszystkie zakładki programu i skonfigurujemy połączenie WireGuard, zdalny dysk SFTP oraz udział sieciowy NAS (SMB).

Przegląd prywatności

Ta strona korzysta z ciasteczek, aby zapewnić Ci najlepszą możliwą obsługę. Informacje o ciasteczkach są przechowywane w przeglądarce i wykonują funkcje takie jak rozpoznawanie Cię po powrocie na naszą stronę internetową i pomaganie naszemu zespołowi w zrozumieniu, które sekcje witryny są dla Ciebie najbardziej interesujące i przydatne.