Przesyłanie plików przez Internet

Banalna czynność. Wszyscy przesyłają pliki przez Internet. Jednakże prostota tej czynności jest odwrotnie proporcjonalna do liczby plików i/lub ich objętości. Ostatnio musiałem przesłać ok. 600 plików o łącznej objętości ok 2 GiB. Są to wielkości przy których “wymiękają” powszechnie znane rozwiązania. Poniżej krótkie zestawienie rozważanych sposobów przesyłania plików oraz opis tego, które zdecydowałem się zastosować.

  • Poczta elektroniczna. Odpada jeśli chodzi o duże pliki. Co prawda współcześni dostawcy darmowych skrzynek kuszą pojemnościami rzędu kilku GiB, ale powiedziałbym, że jest to w pewnym sensie iluzja. Owszem mamy tyle do dyspozycji, ale mało kto będzie w stanie nam tyle wysłać - chyba wszyscy dostawcy stosują ograniczenia wielkości wysyłanego listu, przykładowo GMail - 25 MiB - jest to słuszne i uzasadnione ochroną przed automatami wysyłającymi spam. Dostawcy płatnych rozwiązań np. home.pl nie stosują ograniczeń wielkości wysyłanej przesyłki, ale są raczej mało popularni w kategorii skrzynek pocztowych. Moim zdaniem poczta nadaje się do przesyłania plików o względnie małej wielkości rzędu kilku MiB.

  • Serwis hostingowy typu Rapidshare, 4Shared, Drop.io etc. Odpada jeśli chodzi o duże pliki, dodatkowo kwestia upublicznienia materiału, który chcę przekazać w sposób poufny. Należałoby użyć szyfrowania. Dodatkowy kłopot - rozwiązanie bez sensu.

  • Serwis przesyłający plik w czasie rzeczywistym typu filesovermiles.com czy jetbytes.com. Odpada jeśli chodzi o duże pliki. Co prawda serwisy te uważam za rewelacyjną usługę ułatwiającą przesył plików, jednakże ze względu na pośredniczącą rolę serwera wprowadzany jest spory narzut na szybkość (jetbytes.com - szybkość ok. 20 KiB/sek, to bardzo niewiele). Wolałbym z resztą rozwiązanie, które umożliwi mi wznowienie przerwanego transferu.

  • Przesył plików w komunikatorze internetowym. Odpada w ogóle. Konia z rzędem temu, komu ta funkcjonalność w ogóle działa w najpopularniejszym w naszym kraju komunikatorze. W przypadku klienta za NAT’em można zapomnieć o przesłaniu pliku do znajomego przez GG.

  • Postawienie własnego serwera FTP. Odpada - za duży kłopot. Problem z wyborem łatwego w obsłudze i bezpiecznego serwera. Ponadto wystawianie otwartego portu FTP na świat nie jest najlepszym pomysłem ze względów bezpieczeństwa - należałoby dokładnie skonfigurować konto użytkownika i poustawiać zabezpieczenia. Dodatkowo można narazić się na atak DoS. Domowy komputer z systemem Windows nie jest maszyną dobrze przygotowaną do roli serwera.

Jak widać jestem wymagający ;).  Rozwiązaniem, które okazało się satysfakcjonujące jest program do tworzenia VPN o nazwie Hamachi razem z programem kopiującym foldery Microsoft Robocopy. Hamachi umożliwia stworzenie wirtualnej prywatnej sieci lokalnej zabezpieczonej hasłem. W systemie widoczny jest jako dodatkowa karta sieciowa. Cały ruch po tej karcie w rzeczywistości jest tunelowany przez szyfrowane algorytmem AES połączenie do serwera Hamachi albo bezpośrednie połączenie do peer’a nawet znajdującego się za NAT’em (Hamachi potrafi automatycznie skonfigurować przekierowania portów w urządzeniu sieciowym) . W praktyce, od strony użytkownika wygląda to tak jakby była zwyczajna sieć lokalna. Transfer plików odbywa się poprzez folder udostępniony Windows przy użyciu programu kopiującego Robocopy. Jest to zaawansowane narzędzie do kopiowania plików, które wyświetla bogate statystyki oraz ma bardzo duży zestaw opcji - w tym możliwość wznawiania przerwanego transferu. Oto co udało się zyskać:

  • Bezpieczeństwo - połączenie jest szyfrowane i w większości przypadków ustanowione bezpośrednio do innego komputera (jeżeli nie udało się ustawić przekierowania portów, wówczas połączenie jest pośrednio przez serwer Hamachi - te szczegóły techniczne konfigurują się automatycznie bez ingerencji użytkownika). Nie muszę się martwić, że ktoś podejrzy zawartość przesyłanych plików. Nie muszę ich dodatkowo zabezpieczać.

  • Szybkość - co prawda serwer pośredniczący Hamachi również wnosi pewien narzut szybkościowy, ale w praktyce udało się uzyskać prędkości rzędu 100 KiB/sek przy wysyłaniu, co było satysfakcjonujące.

  • Wygoda - przeglądanie zawartości udostępnianych katalogów przy użyciu standardowych narzędzi. Nie muszę kompresować plików ani poddawać ich innym zabiegom.

  • Dokładne informacje o postępie kopiowania - informacje podawane w trakcie działania Robocopy są bardzo bogate

  • Możliwość przerwania i wznowienia transmisji w dowolnej chwili

  • Automatyzacja działania - Robocopy zachowuje się “inteligentnie” w przypadku chwilowych problemów z siecią i wielokrotnie ponawia próby kopiowania. Po uruchomieniu tego narzędzia można spokojnie zająć się czymś innym - przy ustawieniach domyślnych program nie poddaje się przy pojedynczym błędzie tylko czeka 30 sek. a następnie ponawia próbę - i tak milion razy (parametry te można ustawić)

Poniżej zrzut ekranu z konsoli po zakończonym transferze Robocopy. Szybkość jest tu mniejsza niż wspominane 100 KiB/sek ponieważ transfer odbywał się z maszyny o łączu 32 KiB/sek - jak widać “tunelowanie” zabiera ok. 4 KiB/sek - tutaj mamy statystyki z poziomu łącza VPN, na poziomie rzeczywistego połączenia do peer’a szybkość wynosiła w przybliżeniu właśnie 32 KiB/sek.

Microsoft Robocopy

PS. Hamachi jest szeroko stosowanym rozwiązaniem wśród amatorów gier działających w sieci lokalnej. Znakomicie nadaje się do “zwirtualizowania” sieci lokalnej wszędzie tam gdzie istnieje taka konieczność, a dysponujemy tylko łączem internetowym.