Menu

Pomiędzy bitami

Techno, porno i duszno. Blog niezupełnie technologiczny.

Jak zrobić router GSM na Linuksie?

rozieblox

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=wlan0
country_code=PL
ssid=NAZWA_SIECI
hw_mode=g
channel=6
wpa=2
wpa_passphrase=TAJNE_HASLO
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=1
macaddr_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ć router LTE na Linuksie. Przyda się również serwer DHCP i konfiguracja DNS. Obie rzeczy może załatwić dość dokładnie opisany kiedyś dnsmasq, ale tak naprawdę dla przydzielania adresów IP systemom łączącym się z naszym routerem GSM wystarczą dla ww. konfiguracji dwie linie w /etc/dnsmasq.conf:

interface=wlan0
dhcp-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ą na budowę mocnego routera GSM na Linuksie (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 i w przypadkach awaryjnych jest to najszybsza droga. I tak, użyłem Aero2 i pakietu testowego bez captcha. Niskie opóźnienia pozytywnie zaskakują.

Komentarze (3)

Dodaj komentarz
  • Gość: [GDR!] 5.175.208.*

    Jak potrzebujesz na szybko bez czytania tony dokumentacji, to polecam create_ap (zależny od hostapd):

    github.com/oblique/create_ap

  • rozieblox

    @GDR! Ciekawe, dzięki. Tylko mam wątpliwość, czy z wiedzą zero faktycznie łatwiej jest - do create_ap też trzeba znać opcje, jednak, a "pod spodem" coś może i tak nie zadziałać. W sumie ciekawą opcją byłby skrypt interaktywny, zadający kilka pytań po uruchomieniu. No ale umówmy się, jak ktoś znajdzie/dostanie gotowca do hostapd, to do typowego zastosowania wystarczy przekleić konfigurację. Poza tym, hostapd otwiera furtkę do routera pełną gębą.

  • lampkiled

    Jakiś czas bawiłem się jeszcze w taki sposób, teraz jestem chyba zbyt wygodnicki i wystarczy włączenie routera wifi na androidzie :) co przydało się już wielokrotnie. Czy w repo od debiana i ubuntu jest ten pakiet?

© Pomiędzy bitami
Blox.pl najciekawsze blogi w sieci