Er zijn heel wat omstandigheden waarin je wel een extra draadloos toegangspunt in huis kunt gebruiken. Je wilt bijvoorbeeld een gastnetwerk voor als je vrienden op bezoek zijn, of je zolderkamer die geen draadloos bereik heeft van internettoegang voorzien. Als je draadloze toegangspunt geen extra netwerk ondersteunt of je geen extra ‘gewoon’ toegangspunt wilt installeren, doe je dat toch gewoon met je Raspberry Pi?

Koen Vervloesem

De Raspberry Pi 4 is het ideale apparaatje om een flexibel draadloos toegangspunt op te zetten. De gigabit-ethernetaansluiting kan als snelle verbinding met je router dienen en de dualband-wifi-chip ondersteunt 2,4 en 5 GHz 802.11.b/g/n/ac. Je kunt dat uiteraard met een kant-en-klaar draadloos toegangspunt doen, maar met Raspbian op de Raspberry Pi 4 heb je een veel flexibeler toegangspunt dat je nog met allerlei functionaliteit kunt uitbreiden. We gaan er in dit artikel van uit dat je Raspbian Buster Lite (www.tiny.cc/raspbian) op je Pi 4 geïnstalleerd hebt en dat je toegang via ssh hebt via de bekabelde ethernetinterface.

Met Raspbian op je Pi heb je een flexibel wifipunt dat je qua functies nog kunt uitbreiden

Netwerkconfiguratie

Eerst moeten we de wifi-chip correct in te stellen. Open het configuratiebestand wpa_supplicant.conf met de teksteditor nano met:

nano /etc/wpa_supplicant/wpa_supplicant.conf

En voeg helemaal bovenaan de volgende regel toe:

country=NL

Voor België vul je uiteraard BE in.

De wifi-interface van je Pi moet een statisch ip-adres krijgen. Dat doe je door het bestand dhcpcd.conf aan te passen met:

sudo nano /etc/dhcpcd.conf

Voeg helemaal onderaan de volgende regels toe:

interface wlan0
static ip_address=192.168.4.1/24
nohook wpa_supplicant

Sla je wijzigingen op met Ctrl+O en sluit nano af met Ctrl+X. Herstart nu je Pi:

sudo reboot

Controleer na de reboot of de netwerkinterface wlan0 het ip-adres 192.168.4.1 heeft:

ip addr show wlan0

Dhcp-server

Als eerste hebben we een dhcp-server nodig, die ip-adressen uitdeelt aan de clients. Die installeren we met:

sudo apt install dnsmasq

Open het configuratiebestand:

sudo nano /etc/dnsmasq.conf

Voeg daaraan de volgende regels toe:

interface=wlan0
dhcp-range=192.168.4.2,192.168.4.150,255.255.255.0,24h

Hiermee geven we aan dat dnsmasq op de interface wlan0 luistert naar dhcp-aanvragen, en ip-adressen van 192.168.4.2 tot en met 192.168.4.150 uitdeelt, die 24 uur geldig zijn.

Sla je wijzigingen op en herstart dan dnsmasq:

sudo systemctl restart dnsmasq

Met dnsmasq delen we ip-adressen uit aan verbonden wifi-clients.

Toegangspunt

Met de software hostapd zetten we een toegangspunt op de Pi op. Installeer dit eerst:

sudo apt install hostapd

Open daarna het (lege) configuratiebestand:

sudo nano /etc/hostapd/hostapd.conf

Daarin moet dan het volgende komen te staan:

interface=wlan0
driver=nl80211
ssid=NaamVanNetwerk
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=Ultrageheimwachtwoord
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Het ssid en het wachtwoord kies je uiteraard zelf. Bij de hw_mode staat nu g, wat 802.11g (2,4 GHz) betekent. Vul hier a in als je 802.11a (5 GHz) voor je draadloze netwerk wilt gebruiken. Bij channel kun je ook een ander kanaal kiezen dan 7. Sla je wijzigingen op en open dan een ander bestand:

sudo nano /etc/default/hostapd

En vul daar de volgende regel in zodat hostapd het configuratiebestand vindt:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Schakel daarna hostapd in en start het programma:

sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd

Met deze configuratie maken we van onze Raspberry Pi 4 een draadloos toegangspunt.

Routing

Probeer op je smartphone met het draadloze netwerk van je Pi te verbinden. Normaal gesproken krijg je dan een ip-adres in het ingestelde bereik toegekend. Maar je hebt nu nog geen internetverbinding. Daarvoor dien je op je Pi routing en een firewallregel in te stellen. Allereerst de routing, open het volgende bestand in nano:

sudo nano /etc/sysctl.conf

Zoek naar de volgende regel:

#net.ipv4.ip_forward=1

En haal het hekje ervoor (#) weg. Sla je wijzigingen op.

Met de volgende firewallregel implementeren we network address translation (NAT) voor de wifi-clients:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Het verkeer van de aangesloten wifi-clients dat naar buiten gaat via de ethernetinterface van de Pi, krijgt daardoor het ip-adres van de ethernetinterface als zijn bronadres, zodat de antwoorden ook weer bij de client terechtkomen.

We willen nu dat iedere keer dat de Pi opstart deze firewallregel opnieuw wordt ingeladen. Daarvoor dienen we nog een pakket te installeren:

sudo apt install iptables-persistent

Bij de vraag om de huidige IPv4-regels op te slaan, antwoord je bevestigend. Voor de IPv6-regels antwoord je alleen bevestigend als je IPv6 gebruikt. Herstart daarna nog eens je Pi met sudo reboot.

Als je Pi nu herstart is, kun je vanaf je smartphone met het toegangspunt van je Pi verbinden en internetten.

Wifi-clients inperken

Wifi-clients die met het toegangspunt van je Pi verbonden zijn, hebben nu niet alleen toegang tot internet, maar tot je hele netwerk. In sommige gevallen wil je dat helemaal niet, bijvoorbeeld als het om een gastnetwerk voor je bezoek gaat of om een afgescheiden netwerk voor IoT-apparaten die je niet vertrouwt. Dat kun je op twee manieren oplossen. Je Pi is via zijn ethernetpoort met je primaire router verbonden, en daar kun je firewallregels instellen die toegang van alles wat met je Pi verbonden is tot de rest van je lokale netwerk verbiedt. Of je kunt dit op je Pi zelf regelen.

We tonen hier kort hoe je dit laatste doet. Maak allereerst de communicatie tussen clients op het wifi-netwerk onmogelijk met de opdracht:

sudo iptables -A FORWARD -i wlan0 -o wlan0 -s 192.168.4.0/24 -d 192.168.4.0/24 -j DROP

Probeer maar eens met de opdracht ping op de opdrachtprompt van de ene client de andere te bereiken. Dat lukt niet. Maar je kunt nog altijd bij de apparaten op het netwerk waarop je Pi met zijn ethernetinterface aangesloten is. Als dat als adresbereik 192.168.0.0/24 heeft, dan verbied je ook die communicatie met:

sudo iptables -A FORWARD -i wlan0 -o eth0 -s 192.168.4.0/24 -d 192.168.0.0/24 -j DROP

Dan hoef je nu alleen nog maar je aangepaste firewallregels op te slaan:

sudo netfilter-persistent save

Als je nu je Pi reboot, laadt hij al je ingestelde firewallregels in. Je hebt nu een volledig van de rest van je netwerk geïsoleerd draadloos toegangspunt gemaakt.