R.I.P. folksr.com

Długo zwlekałem z oficjalnym info, mając nadzieję, że folksr.com wróci. Nie wrócił od blisko kwartału i straszy błędem Could not connect to Db. Znając uwarunkowania, z których głównym jest brak czasu, myślę, że tak już zostanie. Kolejny znikający serwis[1]. Krótko działał, bo jakieś 5 lat tylko.

Szkoda, bo jak pisałem, lubiłem ten serwis i był to taki lepszy odpowiednik LinkWithin. I fajnie się integrował z Blox. Hm, może Agora go kupi (o ile autor zdecyduje się sprzedać…)? Albo może ktoś napisze własną wersję? Algorytm był opisany na blogu autora (linki w ww. wpisie). W tej chwili tagi na Blox są IMO trochę sztuką dla sztuki. 🙁

No i od jakiegoś czasu wpisy nie były polinkowane między sobą. Wróciłem więc do LinkWithin… Co prawda to tylko linkowanie w obrębie bloga (i śledzi AKA szpieg), ale lepszy rydz, niż nic. No i folksr.com niestety nigdy wielkiej popularności nie zdobył. A szkoda, bo może wtedy inaczej by się jego losy potoczyły…

[1] Łapię się na tym, że jak widzę nowy serwis, to myślę tylko, jak go zepsują (uczynią nieużywalnym) lub kiedy padnie.

Blokada exit nodes Tora

Dawno temu pisałem o walce z Tor. Odsyłałem tam do strony, na której można sprawdzić, czy IP jest węzłem wyjściowym Tora, jest też stronka z listą węzłów. Niestety, stronka popełnia częsty błąd i wrzuca wszystkie węzły do jednego wora, zarówno węzły wyjściowe (exit node) jaki pośredniczące (relay node). Niestety, błąd ten później pokutuje, bo taki admin, który chce wyciąć exit nodes bierze, nie patrzy, nie rozumie i… wycina np. moje domowe IP, choć z Tora się do jego serwera nie łączę, tylko dorzucam parę groszy do projektu przerzucając czyjś ruch.

Tor logoŹródło: https://media.torproject.org/image/official-images/2011-tor-logo-flat.svg

Ponieważ potrzebowałem (no dobrze, ja jak ja…) listę węzłów wyjściowych na niezupełnie swoje potrzeby, zrobiłem własną listę. Tylko IP i tylko węzły wyjściowe. Idealne do automatycznego przetwarzania.

Dane brane są z z oficjalnej strony projektu Tor ( https://check.torproject.org/exit-addresses). Aktualizacja odbywa się raz na godzinę o pełnej godzinie (nie ma sensu pytać częściej). Jakby było zainteresowanie i potrzeba, to mogę zwiększyć częstotliwość. Mi wystarcza.

Plik dostępny jest po HTTP i HTTPS pod tym adresem: Tor exit node IP list. Udostępniam as is, bez żadnych gwarancji działania, dostępności, kompletności czy poprawności danych czy braku złośliwych danych. Jak widać wisi to na darmowej domenie, co może mieć dotyczące zawartości. You get what you pay for. 😉

Zresztą ogólnie korzystanie z tego typu automatycznych źródeł bez jakiejś weryfikacji uważam za nierozsądne.

UPDATE: Metoda nie jest doskonała. O tym, że część exit nodes może nie być widocznych przeczytasz tutaj.

Przyspieszanie łącza internetowego

Wpis, który przeleżał jako szkic ponad rok. I bardziej go już nie skończę, więc publikuję, jak jest. Miały być testy i dokładne konfiguracje, ale z braku czasu będzie czysta teoria. Tak czy inaczej myślę, że przyda się ludziom z wolnymi łączami lub korzystającym z WWW (i nie tylko…), a chcącym zminimalizować ilość przesłanych danych do urządzenia końcowego. Do rzeczy.

Na podstawie doświadczeń z Aero2, czyli łącza zarówno wolnego (niska przepływność) jak i zlagowanego (duże opóźnienia pakietów), postanowiłem popełnić krótki poradnik, jak przyspieszyć działanie sieci na wolnym łączu internetowym. Zwykle zakładam w tym poradniku, że użytkownik korzysta z Linuksa, ale nie zawsze i część sposobów przyda się niezależnie od systemu.

Krok pierwszy – przyspieszanie zapytań DNS

Ważna sprawa, bo serwery DNS odpytywane są coraz częściej. Otwarcie pojedynczej strony internetowej to w dzisiejszych czasach często kilkanaście, a nawet kilkadziesiąt zapytań do serwerów DNS. W przypadku zlagowanego połączenia do każdego zapytania dochodzi opóźnienie łącza. Można sobie pomóc poprzez wykorzystanie lokalnego cache DNS. Z prostych w konfiguracji polecam opisany kiedyś dnsmasq lub lekki i wydajny unbound. Cache DNS działa dla całego systemu, nie tylko dla stron WWW, ale w ich przypadku różnica powinna być najbardziej widoczna. Dodatkowa zaleta to uniezależnienie się od potencjalnych problemów z serwerami DNS naszego dostawcy łącza.

Krok drugi – kompresja danych

Mechanizm kompresji danych na wolnym odcinku nie jest niczym nowym. Od dawna z powodzeniem stosuje go Opera w swojej funkcji turbo. Pierwsza obróbka strony odbywa się na ich serwerach, które dysponują szybkimi łączami. Dodatkowo może się odbywać redukcja zbędnych elementów. Zaletą rozwiązania jest łatwość uruchomienia – wystarczy kliknąć przycisk w Operze. Wadą rozwiązania jest to, że wymaga korzystania z Opery i działa tylko dla stron WWW.

Kompresja danych – DIY

ziproxy

Jeśli mamy dostęp do serwera (może być VPS) z Linuksem, możemy w prosty sposób stworzyć podobne rozwiązanie samodzielnie, korzystają z programu ziproxy. Instalujemy je na serwerze, konfigurujemy, jak bardzo mają być redukowane grafiki (60-70% wygląda znośnie), ustawiamy adres IP i port serwera jako proxy w przeglądarce i.. tyle. Od tej pory przez wolne łącze przesyłane są zredukowane (stratnie, zatem gorzej wyglądające) obrazy. Reszta danych jest przesyłana w postaci skompresowanej.

Zaleta jest taka, że działa z każdą przeglądarką i – dla paranoików – że nasze dane nie błądzą po serwerach Opery.

Wady: działa tylko dla WWW, stopień redukcji obrazów ustala się raz, nie ma możliwości dynamicznej zmiany jakości (np. obejrzenie wybranych obrazów w lepszej jakości).

sshuttle

Jeśli mamy dostęp do serwera z Linuksem i dodatkowo ma on zainstalowanego Pythona, to możemy skorzystać z VPN over SSH, czyli shuttle. Rozwiązanie powstało jako namiastka VPN i miało pierwotnie bardziej zapewniać bezpieczeństwo transmisji (szyfrowanie) w przypadku otwartych hotspotów. Można je jednak skonfigurować tak, aby ruch był kompresowany (wykorzystanie kompresji SSH).

Zaletą jest to, że działa dla całego ruchu (TCP), nie tylko dla WWW. Można określić, do których sieci ruch ma być obsługiwany przez to rozwiązanie.

Wada: działa tylko dla TCP (oraz zapytań DNS), wymaga zainstalowanego Pythona na maszynie pełniącej rolę serwera.

ssh + socks proxy

Jeśli nie chcemy instalować dodatkowego oprogramowania, a mamy dostęp do serwera z Linuksem, możemy w prosty sposób wykorzystać tunelowanie SSH oraz – podobnie jak w poprzednim przypadku – wykorzystać kompresję oferowaną przez SSH. W tym celu ustawiamy socks proxy w przeglądarce na localhost oraz port 9000, oraz uruchamiamy ssh -CND 9000 user@serwer. Od tej pory ruch WWW tunelowany jest przez SSH do serwera. Jeśli zależy nam nie tylko na wydajności, ale i na prywatności, warto sprawdzić ustawienia przeglądarki dotyczące przesyłania zapytań DNS przez proxy.

Zaleta: łatwość uruchomienia (na systemach *nix).

Wady: działa tylko dla ruchu WWW (lub jawnie przetunelowanego z innych aplikacji), wymaga przeglądarki WWW ze wsparciem dla socks proxy (praktycznie każda sensowna ma tę opcję dostępną w ten lub inny sposób).

OpenVPN

Ostatni sposób to wykorzystanie OpenVPN oraz wbudowanej kompresji. Wymaga skonfigurowanego OpenVPN zarówno po stronie klienta jak i serwera.

Zalety: działa dla wszystkich rodzajów ruchu.

Wady: wymaga zainstalowania i skonfigurowania OpenVPN. Dochodzi narzut CPU na szyfrowanie (domyślnie będzie włączone, zwł. u zewnętrznych providerów).

Oczywiście cudów nie ma i ww. sposoby pomogą jedynie dla treści, które przesyłane są jako nieskompresowane i dobrze się kompresują. Nie ma co liczyć, że filmy na YouTube zaczną działać szybciej. Osobiście idę na łatwiznę i korzystam zwykle z ssh i socks proxy.