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.

Raspberry Pi Zero

Na rynku pojawił się nowy mini komputer z procesorem ARM. Raspberry Pi Zero, bo o nim mowa, posiada:

  • CPU BCM2835 1GHz (1 rdzeń)
  • 512 MB RAM
  • slot micro-SD
  • 1 micro USB
  • 1 mini HDMI
  • GPIO zgodne z poprzednimi modelami (wymagana przejściówka z pinami)

Największe zalety to jednak minimalne wymiary i równie minimalna cena. Ma ona wynosić $5 (zobaczymy ile w praktyce w Polsce).

Raspberry Pi Zero

Źródło: https://www.raspberrypi.org/

Choć uważam, że od Raspberry Pi ogólnie ciekawsze są Banana Pi czy Orange Pi, to Raspberry Pi Zero nawet mi się podoba. Świetna cena, możliwości porównywalne z pierwszymi Raspberry. OK, trzeba dołożyć kartę sieciową na USB, ale sensowne zasilanie to i tak aktywny hub USB, a rpi z tego co pamiętam i tak miało ethernet over USB.

Sprzęt trochę słaby, patrząc z punktu widzenia bardziej linuksowego/serwerowego, (słaby procesor, mało RAM), ale Cena Czyni Cuda. Poza tym, z tego co widzę, celowany bardziej w mniejsze projekty, wręcz wearables. Więc niezupełnie fair byłoby oceniać go z perspektywy linuksowo/serwerowej. Co ciekawe, nowy produkt będzie dołączony do grudniowego wydania MagPi.

Największa wada to oczywiście nadal architektura procesora. Jest to dokładnie ten sam model, co w pierwszych modelach rpi, tylko wyżej taktowany, co oznacza, że albo korzystamy z wynalazków typu Raspbian, albo z architektury armel w np. Debianie (i wydajność cierpi), bo niestety armhf nie zadziała.

Orange Pi – nowe modele

Przegapiłem premierę, ale warto wiedzieć, że pojawiły się dwa ciekawe nowe modele w rodzinie Orange Pi.

Pierwszy z nich, Orange Pi Plus, to odpowiedź na wyższe modele konkurencji. Ma… w zasadzie wszystko. Jest port SATA, jest mocny procesor (cztery rdzenie 1,6 GHz), jest Wi-Fi, są 4 porty USB 2.0, odbiornik podczerwieni i wbudowany mikrofon. W końcu jest wbudowana pamięć flash (8GB). Jedyna słabość to ilość wbudowanego RAM – nadal 1 GB, więc na desktop trochę mało, tj. można zrobić, ale trzeba będzie oszczędzać. Cena: około 50 USD z wysyłką. Zdjęcie Orange Pi Plus z opisem poniżej:

Orange Pi plus

 Źródło: http://www.orangepi.org/orangepiplus/H3shuoming.jpg

Drugi model to Orange Pi PC. Dość okrojony, wygląda na alternatywę dla Raspberry Pi 2. Pierwsze co rzuca się w oczy to mocny procesor, ten sam co w ww. modelu. Pozostały wbudowany mikrofon oraz czujnik IR, ale zniknął port SATA, nie ma wbudowanego Wi-Fi, ani pamięci flash, a ethernet to – podobnie jak w Raspberry Pi – 100 Mbps. Standardowy 1GB RAM. Główny atut? Oczywiście cena. Ok. 23 USD z wysyłką, lub 15 USD + ok. 3 USD wysyłka. Zdjęcie Orange Pi PC wraz z opisem poniżej:

Orange Pi PC

Źródło: http://www.orangepi.org/orangepipc/images/orangepipc_info.jpg

W obu przypadkach można uruchomić Linuksa, w przypadku Orange Pi Plus dostępny jest Debian. Chipset ten sam, więc przypuszczam, że pojawienie się Debiana na model PC jest jedynie kwestią czasu.

Przyznaję, że rozważam zakup Orange Pi Plus i wymianę Dockstara – działa dobrze, ale 128 MB RAM zaczyna trochę boleć.