niedziela, 26 stycznia 2014

Raspberry Pi jako Access Point

Nasze Raspberry przy odrobinie pracy może stać się Acess Pointem, oczywiście możemy kupić gotowy AP, jednak dzięki dostępowi do systemu będziemy mogli również skonfigurować Squid'a, dzięki czemu strony będące często używane szybciej będą się"ładować".

1) Wymagania:

- Raspberry Pi z Raspianem,
- Karta Wifi TP-Link TL-WN722N lub inna (pozwalająca na pracę w trybie master),
- Dostęp do internetu po kablu ,

2) Karta WiFi:

Po podpięciu karty oraz wykonaniu polecenia iwconfig, powinniśmy zobaczyć naszą kartę na liście:


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


Możemy ręcznie spróbować włączyć tryb master dla karty, jednak otrzymamy przynajmniej teraz błąd:

root@raspberrypi:~# iwconfig wlan0 mode master
Error for wireless request "Set Mode" (8B06) :
    SET failed on device wlan0 ; Invalid argument. 


3) Instalacja oraz konfiguracja oprogramowania:

Na początek musimy pobrać pakiety potrzebne do stworzenia AP:

apt-get install hostapd dnsmasq

edytujemy hostapd:

nano /etc/hostapd/hostapd.conf


# Interfejs naszej karty WiFi
interface=wlan0

# Sterownik (pozostawiamy)
driver=nl80211

# SSID sieci (nazwa sieci), kanał oraz typ sieci (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g)

ssid=S3
channel=7
hw_mode=g

# Ustawiamy sieć jako otwartą lub zamkniętą 
# 0 = Open System Authentication
# 1 = Shared Key Authentication

auth_algs=1

# Ustawienia szyfrowania sieci
wpa=3
wpa_passphrase=Nasze_haslo
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 - ukrycie SSID

ignore_broadcast_ssid=0


Następnie konfigurujemy dnsmasq, który jest połączeniem DNS'u oraz DHCP.:

nano /etc/dnsmasq.conf


# Wybieramy naszą kartę wifi
interface=wlan0

#Ustawiamy zakres adresów, oraz czas dzierżawy adresy

dhcp-range=192.168.1.2,192.168.1.100,24h


Możemy jeszcze skonfigurować firewall, tak aby cały ruch od nas wychodził na zewnątrz:

nano /etc/init.d/firewall


#!/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ż dodać możliwość przekazywania pakietów:
nano /etc/sysctl.conf

dodajemy:
net.ipv4.ip_forward=1

musimy przeładować ustawienia systemowe:

sysctl -p /etc/sysctl.conf

Startujemy AP:

ifconfig wlan0 192.168.1.1 netmask 255.255.255.0

Skonfigurujemy automatyczne przydzielanie adresu IP:

nano /etc/network/interfaces


allow-hotplug wlan0
auto wlan0
iface wlan0 inet static
        address 192.168.1.1

        broadcast 192.168.1.255

Restartujemy  nasze narządzia:

/etc/init.d/dnsmasq restart


hostapd -d /etc/hostapd/hostapd.conf

Widzimy w odpowiedzi poniższy listing (fragment):




Teraz nasza karta powinna być w trybie master, wywołujemy iwconfig wlan0:


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

Nasza sieć powinna być dostępna, musimy jeszcze uruchomić firewall:

chmod +x /etc/init.d/firewall


/etc/init.d/firewall 

Przy pomocy cat /var/lib/misc/dnsmasq.leases możemy sprawdzić, jaki adres został przypisany jakiemu użytkownikowi.
W następnym wpisie będzie można rozszerzyć nasz AP o Squid.



1 komentarz:

  1. Wielkie dzięki kolego za ten tutorial :)

    OdpowiedzUsuń