Jak zrobić router GSM na Linuksie?

Niedawno miałem awarię netu. Stwierdziłem, że warto przy tej okazji poćwiczyć awaryjne udostępnianie sieci na Linuksie. Oczywiście zrobienie routera z komputera z Linuksem to kwestia paru poleceń, ale stwierdziłem, przećwiczyć udostępnianie sieci po WiFi.

Istnieje pakiet hostapd, który ułatwia zamianę komputera z Linuksem w access point. Instalacja pakietu hostapd:

apt-get install hostapd

Jakość pakietu nie zachwyca, ale jest niezły tutorial do hostapd. Skrypt init nie zadziała – należy go uzupełnić o ścieżkę do pliku – zmienna DAEMON_CONF. Podobnie sam pakiet nie dostarcza – jak to zwykle ma miejsce w przypadku pakietów Debiana – pliku konfiguracyjnego umieszczonego w katalogu /etc. Przykładowy plik konfiguracyjny dla hostapd znajdziemy jednak w /usr/share/doc/hostapd/examples.

Żeby nie przedłużać, poniżej cały plik konfiguracyjny, którego ostatecznie użyłem:

interface=wlan0country_code=PLssid=NAZWA_SIECIhw_mode=gchannel=6wpa=2wpa_passphrase=TAJNE_HASLOwpa_key_mgmt=WPA-PSKwpa_pairwise=TKIPrsn_pairwise=CCMPauth_algs=1macaddr_acl=0

Jak widać, są lekkie różnice w stosunku do tutoriala. Brakujące ustawienie zmiennej w skrypcie startowym znalazłem później, więc ostatecznie uruchamiałem hostapd z ręki, bez demonizacji (w ramach debugu, zresztą).

Oczywiście sama konfiguracja hostapd nie wystarczy. Trzeba mieć jeszcze skonfigurowane „przyjście” netu. W moim przypadku internet był dostarczony z modemu GSM (tutaj opis konfiguracji Aero2 na modemie Huawei E3131). Użycie modemu LTE pozwoli oczywiście zrobić szybszy router GSM na Linuksie. Przyda się również serwer DHCP i konfiguracja DNS. Obie rzeczy może załatwić dość dokładnie opisany kiedyś dnsmasq. Ale dla przydzielania adresów IP systemom łączącym się z naszym routerem GSM wystarczą dla ww. konfiguracji dwie linie w /etc/dnsmasq.conf:

interface=wlan0dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,1h

Należy też dodać adres IP na interfejsie wlan0, włączyć forward pakietów dla IPv4 oraz uruchomić NAT. Wersja „ręczna” ww. czynności (dla mojej konfiguracji, interfejsy mogą się zmieniać) to:

ip a a 192.168.10.1/24 dev wlan0
ip link set wlan0 up
service dnsmasq restart
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Po tym wszystkim, inne komputery powinny móc się połączyć z naszym linuksowym routerem GSM, dostać adres IP oraz posiadać dostęp do internetu za jego pośrednictwem. W przypadku problemów warto sprawdzić kolejno: otrzymanie adresu IP, ping do routera (192.168.10.1), ping do świata po IP, ping do świata pod domenie (w zasadzie: resolvowanie DNS).

Na rynku jest sporo sprzętów, które pozwolą zbudować mocny routera GSM na Linuksie. Choćby przykładowo Banana Pi, Orange Pi czy nieśmiertelne Raspberry Pi. Oczywiście jeśli miałby być to sam router, to nie bardzo widzę sens ekonomiczny, bo zestaw modem+płytka+karta wifi+zasilacz pewnie będzie kosztował więcej, niż tani router LTE (no chyba, że ktoś akurat – jak ja – ma ww. graty pod ręką 😉 ), ale w przeciwieństwie do taniego routera GSM można tu uruchomić dodatkowe funkcjonalności typu NAS, VPN czy serwer WWW. Ten ostatni to może niekoniecznie na łączu GSM…

Mam nadzieję, że opis się przyda. Gdybym o czymś zapomniał, albo coś nie działało, proszę o uwagi.

PS. Oczywiście mam świadomość, że udostępnienie internetu z GSM potrafi w trzech kliknięciach zrobić chyba każdy smartfon z Androidem. W przypadkach awaryjnych jest to pewnie najszybsza droga. I tak, użyłem Aero2 i pakietu testowego bez captcha. Niskie opóźnienia pozytywnie zaskakują.

UPDATE: Istnieje coś takiego jak projekt RaspAP, o którym warto wspomnieć. Narzędzie umożliwia konfigurację access pointa WiFi w ładny (GUI) sposób. Wsparcie dla wielu języków, wygodny dostęp do wielu opcji.

Ubuntu 14.04 LTS, apt-dater i restart usług

Jakiś czas temu zachwalałem apt-dater jako narzędzie do aktualizacji większej ilości systemów. Jak pisałem w późniejszych uwagach, apt-dater nieźle integruje się z programem needrestart. Tyle teorii…

Niestety, o ile na Debianie Jessie wyglądało to naprawdę dobrze i sprawdzenie przez checkrestart (inne polecenie realizujące podobne zadanie) dawało spójne wyniki z needrestart, o tyle na Ubuntu 14.04 LTS needrestart pokazywał często, że do restartu nic nie ma, o tyle checkrestart był zupełnie innego zdania... I – co gorsza – miał rację.

Przyczyną okazała się różnica w wersji needrestart. W Jessie jest to 1.2, w Ubuntu 14.04 LTS – 0.5. Ponieważ to skrypt perlowy, to dałem szansę i wrzuciłem wersję z Debiana (stable). Instaluje się czysto, działa bardzo dobrze – w połączeniu z apt-dater wykrywa więcej usług do restartu i także tu wyniki needrestart są teraz spójne z checkrestart.

Nawiasem, checkrestart w Jessie ma problem z mysql i zawsze pokazuje, że należy go zrestartować. Jest na to zgłoszony bug. Ale to tak nawiasem, kto korzysta, ten wie, zresztą można dopisać mysql do wyjątków w konfigu.

Netflix w Polsce – i co z tego?

Z paru miejsc dobiegły mnie dość entuzjastyczne doniesienia o wejściu Netflix do Polski. Przyjrzałem się sprawie bliżej i wygląda, że nieco zbyt entuzjastycznie odebrano wczorajszy ruch Netfliksa. Nie chodzi bowiem o typowe wejście na polski rynek, tylko o otwarcie platformy na wiele krajów na świecie, w tym Polskę. Różnica subtelna, ale znacząca.

Mimo entuzjastycznego podejścia, widzę następujące przeszkody na drodze do rewolucji na polskim rynku telewizyjnym:

  • Cena porównywalna z kablówką (a net i tak trzeba mieć). U mojego dostawcy najtańszy „bieżący, promocyjny” dostęp do internetu to 50 zł/m-c za 15 Mbps, 70 Mbps to 70 zł/m-c. Z kolei pakiety internet+TV 15 Mbps + 69 kanałów za 90 zł lub 50 Mbps + 187 kanałów za 100 zł. Jak widać, cenowo wychodzi praktycznie na jedno.
  • Brak contentu[1] w polskiej wersji językowej. Są dostępne napisy do części pozycji, ale z komentarzy wynika, że tłumaczenia bywają gorszej jakości, niż w serwisach z napisami. Częściowym rozwiązaniem jest możliwość instalacji wtyczki w przeglądarce i korzystania do filmów z Netflix z napisów z serwisów. Tylko to nadal trochę skomplikowane rozwiązanie dla typowego odbiorcy TV.
  • Brak polskiego interfejsu czy choćby strony z ofertą w języku polskim. Trochę smutny jest brak polskiego interfejsu użytkownika, niezależnie od contentu.
  • Konieczność podpięcia karty płatniczej. Akurat niedawno rozmawiałem ze znajomym programistą, że w Polsce nie jest to popularne rozwiązanie. Zastanawialiśmy się czy to kwestia nawyku, czy mentalności, czy może czegoś innego. Też mam wrażenie, że Polacy podchodzą do niego raczej nieufnie i wolą po prostu zapłacić rachunek albo wręcz płacić z góry.
  • Brak newsów (część ludzi po prostu lubi wiadomości), więc to nie jest pełna TV. Zwyczajnie i po prostu. I nie widzę szans na zmianę tego w rozsądnym czasie, przynajmniej ze strony Netflix.
  • Braki w contencie ogólnie. O ile produkcje własne są generalnie dostępne (też nie wszystkie, brak House of Cards choćby), to brak pozycji lokalnych (polskie seriale) oraz… zwykłych filmów. Zacytuję tu jeden z komentarzy z Wykopu: Z top 250 z IMDB na Netflixie jest 46 filmów a weź pod uwagę że to jest pole na którym Netflix stara się zabłysnąć bo wiadomo że to są filmy które ludzie chcą oglądać. Sam zobacz: https://www.reddit.com/r/movies/comments/35fdzf/i_made_a_list_of_all_the_imdb_top_250_movies/ To jest 18%…

Wygląda, że zwykła telewizja jest niezagrożona.

Trochę inaczej sprawa wygląda w przypadku serwisów VOD o których kiedyś pisałem. One również nie grzeszą contentem, więc Netflix może tu być zagrożeniem, bo wypada porównywalnie. Szczególnie, że dla korzystających trochę więcej może być atrakcyjny cenowo. Technicznie może być tylko lepiej – jak pisałem nie było wyboru napisy, lektor czy wersja oryginalna. Buforowanie po stronie odtwarzacza działało po prostu tragicznie i ciężko zrobić je gorzej…

Plus, wygląda, że Netflix działa na Linuksie. Nie, żeby bez udziwnień, ale z tego co czytam, powinno dać się uruchomić bez większych kombinacji dla całości contentu. Tymczasem na vod.pl część materiałów nie jest dla użytkowników Linuksa dostępna w ogóle z uwagi na ciężkie DRM i wymóg posiadania platformy Microsoftu.

Podsumowując, wydaje mi się, że jedyną grupą, która zyska, są w tym momencie dotychczasowi użytkownicy Netflix z Polski – odpadnie im konieczność kombinowania z proxy czy VPN. No chyba, że akurat chcieli House of Cards oglądać. 😉

W każdym razie ja wstrzymuję się z uruchomieniem miesięcznego bezpłatnego okresu testowego na Netflix do czasu, kiedy będą dostępne polskie napisy do większej ilości filmów i dopiero wtedy będę testował.

UPDATE Wygląda na to, że Netflix wraz z wejściem do wielu krajów postanowił dołączyć do grona walczących z nieskrępowanym dostępem do usług i zapowiada blokowanie proxy i VPNów, czyli generalnie wprowadzenie egzekwowania blokad regionalnych. IMO bardzo zły ruch i nie zakładałbym się, czy nie skończy się upadkiem firmy. Tak czy inaczej kolejna zaprzepaszczona szansa na wolny rynek filmowy.

[1] Znaczy, po polsku: treści, zawartości. Ludzie z branży mówią content, więc niech tak zostanie…