Raspberry Pi – Raspberry Pi als Access Point
Op deze pagina configureren we de Raspberry Pi als “hostap” (host access point), je hebt internet toegang nodig, zorg dat er ethernet connectie is!
Installeren benodigdheden
Start met het installeren van de benodigdheden:
- hostapd
- isc-dhcp-server
- iptables-persistent
doormiddel van het commando:
sudo apt-get install -y hostapd isc-dhcp-server iptables-persistent
Er wordt 2 keer om een bevestiging gevraagd, geef ja (yes) op beide vragen:
Ps. eventuele is het nodig om sudo apt-get update uit te voeren als er geen repositories gevonden worden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: coinor-libipopt1 libboost-filesystem1.55.0 libboost-program-options1.55.0 libboost-regex1.55.0 libffi5 libgmime-2.6-0 libmumps-seq-4.10.0 liboauth0 libraw10 wolframscript Use 'apt-get autoremove' to remove them. The following extra packages will be installed: libnl-route-3-200 netfilter-persistent Suggested packages: isc-dhcp-server-ldap The following NEW packages will be installed: hostapd iptables-persistent isc-dhcp-server libnl-route-3-200 netfilter-persistent 0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. Need to get 929 kB of archives. After this operation, 2,416 kB of additional disk space will be used. Get:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main libnl-route-3-200 armhf 3.2.24-2 [99.5 kB] Get:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main hostapd armhf 1:2.3-1+deb8u4 [459 kB] Get:3 http://mirrordirector.raspbian.org/raspbian/ jessie/main netfilter-persistent all 1.0.3+deb8u1 [8,494 B] Get:4 http://mirrordirector.raspbian.org/raspbian/ jessie/main iptables-persistent all 1.0.3+deb8u1 [11.0 kB] Get:5 http://mirrordirector.raspbian.org/raspbian/ jessie/main isc-dhcp-server armhf 4.3.1-6+deb8u2 [350 kB] Fetched 929 kB in 0s (1,368 kB/s) Preconfiguring packages ... Selecting previously unselected package libnl-route-3-200:armhf. (Reading database ... 103966 files and directories currently installed.) Preparing to unpack .../libnl-route-3-200_3.2.24-2_armhf.deb ... Unpacking libnl-route-3-200:armhf (3.2.24-2) ... Selecting previously unselected package hostapd. Preparing to unpack .../hostapd_1%3a2.3-1+deb8u4_armhf.deb ... Unpacking hostapd (1:2.3-1+deb8u4) ... Selecting previously unselected package netfilter-persistent. Preparing to unpack .../netfilter-persistent_1.0.3+deb8u1_all.deb ... Unpacking netfilter-persistent (1.0.3+deb8u1) ... Selecting previously unselected package iptables-persistent. Preparing to unpack .../iptables-persistent_1.0.3+deb8u1_all.deb ... Unpacking iptables-persistent (1.0.3+deb8u1) ... Selecting previously unselected package isc-dhcp-server. Preparing to unpack .../isc-dhcp-server_4.3.1-6+deb8u2_armhf.deb ... Unpacking isc-dhcp-server (4.3.1-6+deb8u2) ... Processing triggers for man-db (2.7.0.2-5) ... Processing triggers for systemd (215-17+deb8u6) ... Setting up libnl-route-3-200:armhf (3.2.24-2) ... Setting up hostapd (1:2.3-1+deb8u4) ... Setting up netfilter-persistent (1.0.3+deb8u1) ... update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults Setting up iptables-persistent (1.0.3+deb8u1) ... Setting up isc-dhcp-server (4.3.1-6+deb8u2) ... Generating /etc/default/isc-dhcp-server... Job for isc-dhcp-server.service failed. See 'systemctl status isc-dhcp-server.service' and 'journalctl -xn' for details. invoke-rc.d: initscript isc-dhcp-server, action "start" failed. Processing triggers for libc-bin (2.19-18+deb8u7) ... Processing triggers for systemd (215-17+deb8u6) ... |
Opzetten DHCP server
Om ervoor te zorgen dat WiFi verbindingen automatisch een IP adres toegewezen krijgen, moeten we de DHCP server configureren, dit kan door het bestand “/etc/dhcp/dhcpd.conf” te bewerken, met het commando:
sudo nano /etc/dhcp/dhcpd.conf
Vind de regels:
1 2 |
option domain-name "example.org"; option domain-name-servers ns1.example.org, ns2.example.org; |
En zet daar een hekje voor:
1 2 |
#option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org; |
Vind de regels:
1 2 3 |
# If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. #authoritative; |
en haal het hekje weg bij “authoritative;”:
1 2 3 |
# If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. authoritative; |
Scroll naar beneden en voeg deze regels toe:
1 2 3 4 5 6 7 8 9 |
subnet 192.168.42.0 netmask 255.255.255.0 { range 192.168.42.10 192.168.42.50; option broadcast-address 192.168.42.255; option routers 192.168.42.1; default-lease-time 600; max-lease-time 7200; option domain-name "local"; option domain-name-servers 8.8.8.8, 8.8.4.4; } |
Ps. Hier wordt de range vastgesteld tussen IP 192.168.42.10 en 192.168.42.50, de router op 192.168.42.1
Druk op CTRL+X, dan Y, dan ENTER om de wijzigingen op te slaan!
Bewerk het bestand “/etc/default/isc-dhcp-server” met het commando:
sudo nano /etc/default/isc-dhcp-server
Scroll naar beneden bij:
INTERFACES=""
en werk deze bij met de aanwijzing van de WiFi adapter (veelal wlan0):
INTERFACES="wlan0"
Druk op CTRL+X, dan Y, dan ENTER om de wijzigingen op te slaan!
Vaste IP maken voor wlan0
Allereerst moet er voor gezorgd worden dan wlan0 uit staat, het kan geen kwaad om dit commando te starten voor de zekerheid:
sudo ifdown wlan0
Als volgt geven we de wlan0 verbinding een vast ip adres en inkomend door het bestand “/etc/network/interfaces” te bewerken met het commando:
sudo nano /etc/network/interfaces
Vind de regel met “auto wlan” en plaats een hekje (#) voor de regel en elke regel daarna.
Ps. als je de regel niet hebt, zorg er voor dat het er zo uit komt te zien als de schermafdruk hieronder, het komt er op neer elke andere wlan0 configuratie eruit te halen.
Voeg deze regels toe aan het bestand achter de regel “allow-hotplug wlan0″:
1 2 3 |
iface wlan0 inet static address 192.168.42.1 netmask 255.255.255.0 |
Druk op CTRL+X, dan Y, dan ENTER om de wijzigingen op te slaan!
Geef nu een vast IP adres aan de WiFi adapter met het commando:
sudo ifconfig wlan0 192.168.42.1
Access Point configureren
Nu kunnen we alle datails van de acces point configureren, we gaan een met wachtwoord beveiligd netwerk configureren.
Maak een nieuw bestand aan genaamd “/etc/hostapd/hostapd.conf” met het volgende commando:
sudo nano /etc/hostapd/hostapd.conf
Plaats daarin de volgende tekst:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
interface=wlan0 driver=rtl871xdrv ssid=Pi_AP country_code=US hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=Raspberry wpa_key_mgmt=WPA-PSK wpa_pairwise=CCMP wpa_group_rekey=86400 ieee80211n=1 wme_enabled=1 |
Je kan het SSID veranderen bij ssid= en het wachtwoord aanpassen bij wpa_passphrase=
Ps. bij driver= kan ook een andere naam ingevuld worden zoals driver=nl80211 (afhankelijk van je driver)
LET OP: Gebruik je de WiFi op de Raspberry Pi 3, dan een Hekje (#) voor deze regel plaatsen!
Druk op CTRL+X, dan Y, dan ENTER om de wijzigingen op te slaan!
Ps. Wees er zeker van dat er geen spaties of TABS voor of achter de regels staan, dit bestand is behoorlijk “gevoelig”.
Nu moeten we de Pi vertellen waar dit configuratiebestand te vinden is, bewerk het bestand “/etc/default/hostapd“, met het commando:
sudo nano /etc/default/hostapd
Zoek de regel met
#DAEMON_CONF=""
En pas deze aan met de padnaam en het configuratiebestand:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Ps. vergeet niet het hekje (#) te verwijderen voordat je het bestand op slaat!
Druk op CTRL+X, dan Y, dan ENTER om de wijzigingen op te slaan!
Bewerk het bestand “/etc/init.d/hostapd“, met het commando:
sudo nano /etc/init.d/hostapd
Zoek de regel met
DAEMON_CONF=
En pas deze aan met de padnaam en het configuratiebestand:
DAEMON_CONF=/etc/hostapd/hostapd.conf
Druk op CTRL+X, dan Y, dan ENTER om de wijzigingen op te slaan!
Network Address Translation (NAT) configureren
Met het opzetten van een NAT kunnen meer clienten zich aanmelden bij de WiFi access point, alle data word getunneld naar een enkele ethernet IP. (maar dat moet enigszins altijd gebeuren ook al verbind er maar 1 client)
Bewerk het bestand “/etc/sysctl.conf” met het commando:
sudo nano /etc/sysctl.conf
Scroll helemaal naar beneden en voeg deze regel toe:
net.ipv4.ip_forward=1
Druk op CTRL+X, dan Y, dan ENTER om de wijzigingen op te slaan!
Dit zorgt er voor dat IP forwarding automatisch bij het opstarten gestart wordt!
Start het volgende commando om het meteen te activeren:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
Start de volgende commando’s om een netwerk vertaling uit te voeren tussen de ethernetpoort eth0 en WiFi poort wlan0
1 2 3 |
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT |
Je kan controles uitvoeren op de tables met de commando’s:
1 2 |
sudo iptables -t nat -S sudo iptables -S |
Om te zorgen dat dit gebeurd bij het opstarten, start het commando:
sudo sh -c "iptables-save > /etc/iptables/rules.v4"
de iptables-persistent tool die we geinstalleerd hebben aan het begin zal deze configuratie automatisch laden bij het opstarten van de pi.
Update hostapd (wellicht)
- Als je een rapsberry kernel runt met v4.4.13-v7+ of hoger kan je deze stap overslaan (check met uname -a)
- Als je de ingebouwde WiFi adapter Raspberry Pi 3 gebruikt kan je deze stap overslaan.
Voordat je de access point software kan gebruiken moet deze eerst geupdated worden om een WiFi adapter te ondersteunen.
Download de nieuwe versie met het commando:
wget http://adafruit-download.s3.amazonaws.com/adafruit_hostapd_14128.zip
Uitpakken:
unzip adafruit_hostapd_14128.zip
Oude versie verwijderen:
sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.ORIG
Nieuwe versie installeren:
sudo mv hostapd /usr/sbin
Uitvoeringsrechten goed zetten:
sudo chown root:root /usr/sbin/hostapd
sudo chmod 755 /usr/sbin/hostapd
Eerste test
We kunnen eindelijk de access point host starten met het commando:
sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
Je krijgt dan zoiets al dit te zien:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Configuration file: /etc/hostapd/hostapd.conf Failed to create interface mon.wlan0: -95 (Operation not supported) wlan0: interface state UNINITIALIZED->COUNTRY_UPDATE wlan0: Could not connect to kernel driver Using interface wlan0 with hwaddr b8:27:eb:33:d3:76 and ssid "Pi_AP" wlan0: interface state COUNTRY_UPDATE->ENABLED wlan0: AP-ENABLED wlan0: STA 48:3c:0c:68:c2:32 IEEE 802.11: associated wlan0: AP-STA-CONNECTED 48:3c:0c:68:c2:32 wlan0: STA 48:3c:0c:68:c2:32 RADIUS: starting accounting session 590CCAFC-00000000 wlan0: STA 48:3c:0c:68:c2:32 WPA: pairwise key handshake completed (RSN) wlan0: STA 48:3c:0c:68:c2:32 IEEE 802.11: disassociated wlan0: AP-STA-DISCONNECTED 48:3c:0c:68:c2:32 wlan0: STA 48:3c:0c:68:c2:32 IEEE 802.11: disassociated |
En je kan de Pi AP al zien:
Je kan proberen er al vast verbinding me te maken met het wachtwoord dat ingesteld is (Raspberry), er zal tekst verschijnen in de console, maar je kan nog geen verbinding maken met de ethernet verbinding.
Je kan de test beeindigen met CTRL+C
Weghalen van de WPA-Supplicant
Afhankelijk van je distro moet je wellicht de WPASupplicant verwijderen met het volgende commando:
sudo mv /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service ~/
Daarna rebooten (sudo reboot)
Afronden
Nu we weten dat alles werkt kunnen we een “daemon” opzetten, dat is een programma die start bij het opstarten van de Pi, start de volgende commando’s:
1 2 |
sudo service hostapd start sudo service isc-dhcp-server start |
Ps. je kan altijd de status controleren met:
1 2 |
sudo service hostapd status sudo service isc-dhcp-server status |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
pi@raspberrypi:~ $ sudo service hostapd status hostapd.service - LSB: Advanced IEEE 802.11 management daemon Loaded: loaded (/etc/init.d/hostapd) Active: active (running) since Fri 2017-05-05 18:59:17 UTC; 1min 56s ago Process: 580 ExecStart=/etc/init.d/hostapd start (code=exited, status=0/SUCCESS) CGroup: /system.slice/hostapd.service +-698 /usr/sbin/hostapd -B -P /run/hostapd.pid /etc/hostapd/hostapd.conf May 05 18:59:16 raspberrypi systemd[1]: Starting LSB: Advanced IEEE 802.11 management daemon... May 05 18:59:17 raspberrypi hostapd[580]: Starting advanced IEEE 802.11 management: hostapd. May 05 18:59:17 raspberrypi systemd[1]: Started LSB: Advanced IEEE 802.11 management daemon. May 05 19:00:21 raspberrypi systemd[1]: Started LSB: Advanced IEEE 802.11 management daemon. May 05 19:00:40 raspberrypi hostapd[698]: wlan0: STA 48:3c:0c:68:c2:32 IEEE 802.11: associated May 05 19:00:40 raspberrypi hostapd[698]: wlan0: STA 48:3c:0c:68:c2:32 RADIUS: starting accounting session 590CCB85-00000000 May 05 19:00:40 raspberrypi hostapd[698]: wlan0: STA 48:3c:0c:68:c2:32 WPA: pairwise key handshake completed (RSN) |
Zodra de daemon service start bevestig dat er geen foutmeldingen zijn, nu kunne we deze laten opstarten bij het booten van de Pi, met de volgende commando’s:
1 2 |
sudo update-rc.d hostapd enable sudo update-rc.d isc-dhcp-server enable |
Nu kun je verbinding maken met de Pi als Access Point met bijvoorbeeld je telefoon en zo internetten etc.
Ps. Als je een webserver installeert op de Pi is die te benaderen via 192.168.42.1
[#/handleidingen/raspberry_pi_als_access_point” ]