Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Door: Riley Barrett en Dylan Halland
Het doel van dit project is om een IoT-apparaat, zoals een Weemo Smart Plug, Amazon Echo, Gaming Console of een ander Wi-Fi-apparaat, verbinding te laten maken met een WPA_EAP Enterprise Network door een Raspberry Pi Zero W als pakket te gebruiken. doorstuur apparaat. Er zijn extra configuratiestappen vereist voor apparaten die verbinding maken met een bedrijfsnetwerk, en veel apparaten zijn helemaal niet compatibel. Door een Wi-Fi Bridge te gebruiken, kan elk apparaat eenvoudig internettoegang krijgen door verbinding te maken met de Pi.
Het systeem kan worden geïmplementeerd op één draadloze kaart of op twee afzonderlijke kaarten, afhankelijk van de vereisten van de gebruiker. Voor systemen die een hogere signaalsterkte en snellere upload-/downloadsnelheden vereisen, kunt u het beste een speciale draadloze kaart gebruiken om het toegangspunt te hosten. Voor systemen waar de signaalsterkte en bandbreedte minder belangrijk zijn, of waar een meer kosteneffectieve oplossing gewenst is, kan een enkele kaart worden gedeeld door het toegangspunt en de netwerkverbinding.
Benodigdheden
Raspberry Pi Zero W
Toegang tot een toetsenbord en monitor
Enige kennis van programmeren (voor foutopsporing, Raspberry Pi setup)
Externe WiFi-adapter/dongle (optioneel)
Stap 1: De Raspberry Pi instellen
Begin met het aansluiten van uw Pi op een toetsenbord en monitor (mogelijk een HDMI-adapter nodig).
Vervolgens kunt u beginnen met het typen van de opdracht:
sudo su
Dit zorgt ervoor dat u over de nodige privileges beschikt om bestanden op de pi te wijzigen.
Nu wil je dnsmasq en hostapd installeren met de opdracht:
apt-get install dnsmasq hostapd
U kunt nu beginnen met het instellen van de WiFi-bridge.
OPMERKING - De volgende zelfstudie bevat informatie voor degenen die de enkele ingebouwde draadloze kaart gebruiken voor zowel het toegangspunt als om verbinding te maken met het netwerk. Het is ook mogelijk om het systeem te configureren om op twee aparte kaarten te werken. Om dit te doen, zoekt u gewoon naar de "wlan1"-regels met commentaar in de aangeleverde bestanden en vervangt u deze door de aangrenzende "ap0"-regels.
Stap 2: 70-persistent-net.rules
Begin met het vinden van het MAC-adres van je pi door te typen:
iw dev
Maak het volgende bestand aan:
nano /etc/udev/rules.d/70-persistent-net.rules
en bewerk het zodat het het volgende bevat:
SUBSYSTEM=="ieee80211", ACTION=="toevoegen|wijzigen", ATTR{macaddress}=="b8:27:eb:c0:38:40", KERNEL=="phy0", / RUN+="/sbin/ iw phy phy0 interface add ap0 type _ap", / RUN+="/bin/ip link set ap0 adres b8:27:eb:c0:38:40"
Dit bestand vertelt het systeem om bij het opstarten een apparaat toe te wijzen aan het toegangspunt. Hier moet het MAC-adres worden vervangen door dat van je eigen pi, die je zojuist hebt gevonden.
(Twee draadloze kaarten) Dit bestand is niet vereist bij gebruik van twee draadloze kaarten.
Stap 3: Hostapd.conf
Vervolgens bewerk je het bestand hostapd.conf door het volgende in te voeren:
nano /etc/hostapd/hostapd.conf
Wijzig het bestand zodat het overeenkomt met de volgende configuratie:
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0 #interface=ap0 interface=wlan1 driver=nl80211 ssid=testnet hw_mode=g channel=6 wmm_enabled=0 macaddr_acl=0 auth_algs=1 wpa=2 wpa_passphrase=0123456789 wpa_key_mgmt=WPA-PST wpaKMP_pairwisers
Merk op dat hoewel mijn kanaal hier is ingesteld op 6, je deze waarde mogelijk moet wijzigen om overeen te komen met het kanaal waarop wlan0 is ingeschakeld. Op sommige netwerken wordt het kanaal automatisch gewijzigd zodat het toegangspunt overeenkomt met wlan0, maar dit was niet mijn ervaring op het bedrijfsnetwerk. U kunt controleren welke kanalen momenteel in gebruik zijn en door welke interfaces door te typen
iwlist kanaal
(Twee draadloze kaarten) Verwijder het commentaar op de regel met wlan1 en verwijder de regel met ap0.
Stap 4: Dnsmasq.conf
Nu ga je het bestand dnsmasq.conf bewerken:
nano /etc/dnsmasq.conf
Verwijder commentaar of voeg de volgende regels toe:
interface=lo, ap0
#interface=lo, wlan1 no-dhcp-interface=lo bind-interfaces server=8.8.8.8 domein nodig nep-priv dhcp-range=192.168.2.100, 192.168.2.200, 12h
Je kunt hier je eigen subnet gebruiken als je wilt, zorg er wel voor dat je consistent bent.
(Twee WirelessCcards) Verwijder commentaar op de regel die wlan1 bevat, en commentaar op de regel die ap0 bevat.
Stap 5: Interfaces
Vervolgens moet u het interfaces-bestand wijzigen:
nano /etc/netwerk/interfaces
automatisch uitschakelen
auto ap0 #auto wlan1 auto wlan0 iface lo inet loopback iface eth0 inet dhcp allow-hotplug ap0 #allow-hotplug wlan1 iface ap0 inet statisch #iface wlan1 inet statisch adres 192.168.2.1 netmask 255.255.255.0 hostapd /etc/hostapd/hostapd allow-hotplug wlan0 iface wlan0 inet dhcp pre-up wpa_supplicant -B -Dwext -i wlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf post-down killall -q wpa_supplicant
Het is vermeldenswaard dat de wlan0-interface MOET komen na de interface die u ernaar doorstuurt, anders zal het systeem niet goed werken.
(Twee draadloze kaarten) Verwijder commentaar bij regels die wlan1 bevatten en verwijder commentaar bij regels die ap0 bevatten.
Stap 6: Wpa_supplicant.conf
Nu gaat u het bestand wpa_supplicant.conf wijzigen dat u kunt vinden op:
nano /etc/wpa_supplicant/wpa_supplicant.conf
Sommige netwerken zijn anders geconfigureerd dan andere, dus dit onderdeel vereist misschien wat knutselen, hier is het bestand wpa_supplicant.conf waarmee ik verbinding kon maken met het netwerk bij Cal Poly:
country=USctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="SecureMustangWireless" scan_ssid=1 key_mgmt=WPA-EAP pairwise=CCMP TKIP group=CCMP TKIP eap=PEAP identity="gebruikersnaam@ calpoly.edu" password="your_password" phase1="peapver=0" phase2="MCHAPV2" }
Dit bestand wordt gebruikt om wlan0 te configureren om verbinding te maken met uw bedrijfsnetwerk. Sommige bedrijfsnetwerken hebben een CA-certificaat nodig om verbinding te maken. Het campusnetwerk van Cal Poly vereist geen certificaat, dus ik heb dit gedeelte overgeslagen, maar je kunt eenvoudig de juiste certificaten downloaden en ze toevoegen aan je wpa_supplicant-bestand met de regel
ca_cert="/pad/naar/cert.pem"
Stap 7: Hostapdstart-script
Het laatste dat u nog moet doen, is een script schrijven dat beide interfaces start en het doorsturen van pakketten instelt wanneer het systeem opstart. Maak een bestand met de naam hostapdstart door te typen:
nano /usr/local/bin/hostapdstart
Voeg het volgende toe aan het bestand:
sudo ifdown --force wlan0 && sudo ifdown --force ap0 && sudo ifup ap0 && sudo ifup wlan0
#sudo ifdown --force wlan0 && sudo ifdown --force wlan1 && sudo ifup wlan1 && sudo ifup wlan0 sudo sysctl -w net.ipv4.ip_forward=1 sudo iptables -t nat -A POSTROUTING -s 192.168.2.0/24 ! -d 192.168.2.0/24 -j MASQUERADEsudo systemctl herstart dnsmasq
Dit script haalt beide interfaces naar beneden, brengt ze vervolgens terug in de juiste volgorde, vertelt de pi dat je pakketten van de ene interface naar de andere wilt doorsturen en start tenslotte dnsmasq opnieuw zodat de wijzigingen van kracht worden.
(Twee draadloze kaarten) verwijder de commentaarregel met wlan1 en becommentarieer de regel met ap0.
Stap 8: RC.local
Ten slotte willen we dat het systeem start wanneer het systeem opstart, dus we zullen het bestand rc.local wijzigen, dat bij het opstarten wordt uitgevoerd:
nano /etc/rc.local
Voeg eenvoudig de volgende regel toe aan het einde van het bestand:
hostapdstart>1&
Je bestand zou er ongeveer zo uit moeten zien:
_IP=$(hostnaam -I) || trueif ["$_IP"]; dan printf "Mijn IP-adres is %s\n" "$_IP" fi
hostapdstart>1&
uitgang 0
Stap 9: Opnieuw opstarten
En dat is het! Nu, ervan uitgaande dat alles correct is ingesteld en uw WiFi-dongle is aangesloten (als u er een gebruikt), hoeft u alleen maar uw Raspberry Pi opnieuw op te starten met de opdracht:
opnieuw opstarten
Zodra uw Pi opnieuw is opgestart, zou u de naam van uw toegangspunt op elk apparaat (telefoon, laptop, enz.) moeten kunnen zien. Zodra u verbinding maakt met uw opgegeven wachtwoord, zou het u rechtstreeks moeten verbinden met uw gewenste Enterprise-netwerk!
Met speciale dank aan de volgende links om ons een idee te geven van hoe we dit project kunnen aanpakken:
- https://blog.thewalr.us/2017/09/26/raspberry-pi-ze…
- https://www.raspberrypi.org/forums/viewtopic.php?p…
- https://www.raspberrypi.org/forums/viewtopic.php?f…
Laat het ons weten als je vragen, opmerkingen of suggesties hebt!
Tweede plaats in de IoT-uitdaging