Punkt dostępowy (z ang. Access Point) pozwala na uruchomienie na urządzeniu wyposażonym w kartę bezprzewodową takich usług jak hotspot czy serwer plików/drukarek z wykorzystaniem WiFi lub na połączenie bezprzewodowe dwóch komputerów. W poniższym artykule pokazane jest jak uruchomić AP na Raspberry Pi z użyciem popularnej karty sieciowej USB TP-Link TL-WN722N.
Poniższą konfigurację można równie dobrze zastosować na zwykłym komputerze z systemem Debian, Ubuntu lub Red Hat, Fedora czy CentOS.
Sprzęt
Do testów wykorzystałem kartę sieciową TP-Link TL-WN722N na USB, która może pracować w trybie Master (Access Point). Zawiera ona w sobie chipset Atheros dzięki czemu nie będziemy mieć problemów ze sterownikami. W Raspbianie wykorzystujemy do tego sterownik ath9k. Jest to wolny sterownik, który został stworzony po tym jak zamknięto projekt MadWifi.
Po włożeniu do portu USB, karta zostaje poprawnie wykryta (Bus 001 Device 107: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n
i jest gotowa do pracy.
root@raspberrypi:~# iwconfig lo no wireless extensions. wlan0 IEEE 802.11bgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm Retry long limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off eth0 no wireless extensions.
Ręczna próba włączenia trybu Master kończy się błędem, ale nie należy się tym przejmować.
root@raspberrypi:~# iwconfig wlan0 mode master Error for wireless request "Set Mode" (8B06) : SET failed on device wlan0 ; Invalid argument.
Konfiguracja
Na samym początku musimy zainstalować odpowiednie oprogramowanie, które pozwoli nam na stworzenie sieci WiFi. Posłuży nam do tego hostapd
oraz dnsmasq
. Instalujemy wymagane pakiety:
apt-get install hostapd dnsmasq
Konfiguracja hostapd
Zaczynamy od edycji pliku /etc/hostapd/hostapd.conf
. Otwieramy go ulubionym edytorem tekstu i dopisujemy w nim zawartość:
# Tutaj podajemy interfejs naszej karty WiFi interface=wlan0 # Sterownik (nie zmieniamy) driver=nl80211 # SSID sieci, jej kanał oraz Operation mode (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g) ssid=OSWorld channel=7 hw_mode=g # 0 = Open System Authentication # 1 = Shared Key Authentication auth_algs=1 # Ustawienia szyfrowania sieci wpa=3 wpa_passphrase=OSWorld123 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP CCMP rsn_pairwise=CCMP # 0 = accept unless in deny list # 1 = deny unless in accept list # 2 = use external RADIUS server (accept/deny lists are searched first) macaddr_acl=0 # 0 - rozgłaszanie SSID # 1 - ukrysie SSID ignore_broadcast_ssid=0
Konfiguracja dnsmasq
Program dnsmasq zawiera w sobie serwer DHCP oraz DNS. Ma on bardzo małe wymagania systemowe dzięki czemu idealnie nadaje się do uruchomienia na routerze czy Raspberry Pi. Konfiguracja zapisana jest w pliku: /etc/dnsmasq.conf
.
W pliku tym edytujemy dwie linie (interface
oraz dhcp-range
) i ustawiamy na odpowiadające nam wartości:
interface=wlan0 dhcp-range=192.168.1.2,192.168.1.50,12h
Konfiguracja iptables
Musimy również skonfigurować firewalla systemowego, aby przekazywał ruch z karty WiFi do Internetu. Dla przykładu możemy stworzyć plik /etc/init.d/firewall
o zawartości:
#!/bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward iptables -F iptables -X iptables -t nat -X iptables -t nat -F iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A FORWARD -o lo -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE iptables-save
Możemy również ip4_forward ustawić w pliku /etc/sysctl.conf
:
# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1
a następnie wydać polecenie sysctl -p /etc/sysctl.conf
.
Uruchamiamy Access Pointa
Na samym początku musimy dodać adres IP dla karty wlan0. Wydajemy polecenie:
ifconfig wlan0 192.168.1.1 netmask 255.255.255.0
Aby adres IP był nadawany automatycznie należy do pliku /etc/network/interfaces
dopisać lub zmodyfikować ustawienia interfejsu wlan0.
allow-hotplug wlan0 auto wlan0 iface wlan0 inet static address 192.168.1.1 broadcast 192.168.1.255
Restartujemy dnsmasq
, aby zaczytał nową konfigurację (/etc/init.d/dnsmasq restart
) i uruchamiamy hostapd (hostapd -d /etc/hostapd/hostapd.conf
). Na konsoli powinniśmy zobaczyć: (pełen listing)
root@raspberrypi:~# hostapd -d /etc/hostapd/hostapd.conf [...] Using interface wlan0 with hwaddr b0:48:7a:93:c7:81 and ssid 'OSWorld' Deriving WPA PSK based on passphrase SSID - hexdump_ascii(len=7): 4f 53 57 6f 72 6c 64 OSWorld PSK (ASCII passphrase) - hexdump_ascii(len=10): [REMOVED] PSK (from passphrase) - hexdump(len=32): [REMOVED] random: Got 20/20 bytes from /dev/random GMK - hexdump(len=32): [REMOVED] Key Counter - hexdump(len=32): [REMOVED] WPA: Delay group state machine start until Beacon frames have been configured VLAN: vlan_set_name_type(name_type=2) nl80211: Set beacon (beacon_set=0) [...] RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added nl80211: if_removed already cleared - ignore event VLAN: vlan_newlink(wlan0)
Jak można zauważyć, karta przełączyła się w tryb Master a sieć WiFi jest dostępna dla użytkowników.
root@raspberrypi:~# iwconfig wlan0 wlan0 IEEE 802.11bgn Mode:Master Frequency:2.442 GHz Tx-Power=20 dBm Retry long limit:7 RTS thr:off Fragment thr:off Power Management:off
Pozostaje nam uruchomienie, skryptu który skonfiguruje nam firewalla i udostępni Internet klientom na WiFi. Wydajemy polecenia:
root@raspberrypi:~# chmod +x /etc/init.d/firewall root@raspberrypi:~# /etc/init.d/firewall
Adresy IP przydzielone przez dnsmasq możemy podejrzeć w pliku:
root@raspberrypi:~# cat /var/lib/misc/dnsmasq.leases 1349726714 68:5d:43:21:05:6b 192.168.1.40 Callisto-7520 01:68:5d:43:21:05:6b 1349718894 4c:80:93:02:bc:14 192.168.1.9 Vostro 01:4c:80:93:02:bc:14 1349719268 4c:80:93:02:63:81 192.168.1.20 Asgard 01:4c:80:93:02:63:81
Teraz możemy uruchomić tylko naszą wyobraźnię i wykorzystać Raspberry Pi do pracy jako domowy router z funkcją WiFi.
A test to co pies:P
hehe…
Warto sprawdzić coś takiego np. jako serwer WWW, ilość połączeń HTTP, czy jak sobie radzi versus router.
a czy 722 nie wymaga przypadkiem huba z oddzielnym zasilaniem, czy malina wstaje bez problemu z podpiętym adapterem?
wstawać wstanie bez problemu, co jedynie urządzenie USB może nie działać (dysk usb np). W przypadku w.w karty wifi obyło się bez dodatkowych akcesoriów
[…] i wykorzystać Raspberry Pi do pracy jako domowy router z funkcją WiFi. Source Article from https://osworld.pl/access-point-na-raspberry-pi/Access Point na Raspberry […]
Strona o Linuxie i alternatywnych systemach a na screene Windows ;)
A to nie można korzystać z Windowsa? To jakiś grzech?
Testowałem identyczną konfigurację w lipcu na ówczesnej wersji raspbiana i miałem spore problemy ze stabilnością. Rozłączało mnie co maksymalnie kilka godzin. Czy Tobie dziś to działa stabilnie?
Dokładnie z tego powodu wyleczyłem się z hostapd. Pół roku walczyłem ze stabilnością połączenia przy użyciu teoretycznie bezproblemowej karty (Atheros na PCI). W końcu kupiłem router. Sieć padała najczęściej co kilkanaście minut. Z tego co pamiętam było lepiej, gdy szyfrowanie było wyłączone
Trudno powiedzieć bo testowałem to kilka godzin. Byłem podpięty do AP na RaspberryPi przez jakieś 2-3 godzinki i nie było problemów. Więcej nie powiem bo nie wiem.
Hmm a u mnie nie działa :)
Wszystko jest niby OK
WIFI dziala … Nadane IP są widoczne w tej lokalizacji
/var/lib/misc/dnsmasq.leases
Ale internetu nie udostępnia ;/ co zrobić?
root@raspberrypi:~# chmod +x /etc/init.d/firewall
root@raspberrypi:~# /etc/init.d/firewall
oczywiście te procedury wykonane wraz ze stworzeniem pliku :)
A na laptopach komunikat łączność ograniczona :)
Zmień sterowniki karty wifi na nowsze w swoim laptopie. Jeśli masz na atherosie. W swojej sieci mailem z tym problem. Ale nie koniecznie musi to być ten sam problem u Ciebie.
Mam ten sam problem, wszystko ustawione według intrukcji a stan połaczenia na komputerze ograniczone lub brak łączności. Jakieś pomysły?
używam do tego samego celu karty EDMIMAX nano.
Skonfigurowałem wszystko tak samo, ale podczas uruchamiania hosta (hostapd -d /etc/hostapd/hostapd.conf)
pokazuje się błąd:
failed to initialize nl80211
segmentation fault
To wina sterownika?
Jaki wpisać aby był poprawny?
chcę mieć tylko acces pointa, bez dostępu do internetu. Chcę tylko uzyskac połączenie, zrobiłem więc wszystko poza iptables i próbuje się łączyć:
uwierzytelnianie przechodzi
próbuje uzyskać adres IP, w tym momencie zasięg sieci nagle spada (zasilanie?)
adresu nie uzyskuje, choć sprawdzałemkonfiguracje dhcp i wyglada poprawnie
miał ktoś podobny problem?
A da się zrobić coś takiego, że zrobimy RPI jako access point i po połączeniu z nim, jak wejdziemy w przeglądarce na jego adres ip zrobić stronę www, z której będzie można sterować RPI? Podobnie jak WEBIOPi, tyle, że łączylibyśmy się bezpośrednio z RPI.
Co należy zmienić by na interfejsie LAN przydzielane były adresy 192.168.10.100 … 192.168.10.200 ?
Ja ustawiłem:
interface=wlan0
dhcp-range=192.168.10.100,192.168.10.200,12h
oraz w iptables:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
Łączy się ale nie przydziela IP
No dobra, już przydziela IP. Jednak próby pingowania do wp.pl zwracają:
Badanie wp.pl [212.77.100.101] z 32 bajtami danych:
Odpowied« z 212.77.100.101: bajt˘w=32 czas=18ms TTL=244
Odpowied« z 212.77.100.101: bajt˘w=32 czas=21ms TTL=244
Odpowied« z 212.77.100.101: bajt˘w=32 czas=24ms TTL=244
Odpowied« z 212.77.100.101: bajt˘w=32 czas=21ms TTL=244
Statystyka badania ping dla 212.77.100.101:
Pakiety: Wysane = 4, Odebrane = 4, Utracone = 0
(0% straty),
Szacunkowy czas bĄdzenia pakiet˘w w millisekundach:
Minimum = 18 ms, Maksimum = 24 ms, Czas redni = 21 ms
Dobra, już działa.
Nie uruchomiłem
chmod +x /etc/init.d/firewall
/etc/init.d/firewall
Można skasować
1. Jak dla dnsmasq zrealizować przydzielenie konkretnego adresu na podstawie adresu MAC klienta?
2. Chciałbym podpiąć drugą kartę (wlan2) i skonfigurować LAN2 zupełnie odseparowany od LAN1. Chciałbym, żeby dla LAN1 serwer DHCP przydzielał adresy z puli 192.168.1.X a dla LAN2 adresy z puli 192.168.2.X.
Ktoś wie i podpowie jak to zrobić?
Skorzystałem z tego wpisu i efekt u mnie jest taki, że sieć jest ale z ograniczeniami. Pytanie dlaczego?
Cześć, czy można uruchomić AP na openelec? Karta to tp-link 722