Tags Posts tagged with "access point"

access point

Raspberry Pi

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.
TP-Link TL-WN722 oraz Raspberry Pi

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.

Access Point na Raspberry Pi

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.

Polecane

Prasa, Czasopismo

1 815
Ukazało się Linux Magazine – numer 161. Lipcowe wydanie magazynu zawiera analizę tworzenia bardziej czytelnych wyrażeń regularnych z Simple Regex Language, instrukcje zabezpieczania i...