Vandaag uitzonderlijk geen openSUSE tip, maar een Raspberry Pi tip. Alhoewel veel uit het hier gepresenteerde installatie script kan gebruikt worden in scripts in elke Linux distributie.
Wie nog een Raspberry Pi in één of andere lade heeft liggen, kan met onderstaand installatie script deze omtoveren naar een WiFi Access Point. Dit WiFi Access Point verbind uw draadloze apparaten met uw bekabeld netwerk (Bridge) en vormt dus geen afzonderlijk netwerk. Dit heeft als voordeel dat je alle op uw bekabeld aangesloten apparaten (NAS, Printer, Gedeelde mappen, enz.) ook via uw draadloze apparaten kunt gebruiken. Daar elke medaille twee kanten heeft, is het nadeel van een Bridged WiFi Access Point de beveiliging. Wie op uw WiFi netwerk kan, kan ook op uw bekabeld netwerk. Geef dus niet zomaar iedereen toegang tot uw Bridged WiFi Access Point en zorg steeds dat al uw apparaten bijgewerkt (up to date) zijn.
Dit installatie script werkt met Raspberry Pi 3 en Zero met WiFi op het moederbord. Daarnaast zorg je voor een SD kaart met het recentste Raspbian Buster Lite besturingssysteem.
Zorg dat je de Raspberry Pi kunt bedienen door een toetsenbord en beeldscherm aan te sluiten of via een SSH verbinding (Headless). Dit laatste kan je bereiken door in de boot partitie een leeg bestand met de naam ssh aan te maken. Let wel op dat je dit bestand geen extensie meegeeft, m.a.w. de bestandsnaam bestaat uit drie letter: ssh.
Sluit de Raspberry Pi met een ethernetkabel aan op het bekabelde netwerk. De WiFi gaan we namelijk als Access Point (zender) gebruiken.
Start de Raspberry Pi door de voeding erop aan te sluiten. De Raspberry Pi start op en maakt automatisch verbinding met het bekabelde netwerk.
Download op de Raspberry Pi het installatie script met de opdracht:
wget https://raw.githubusercontent.com/pindanet/Raspberry/master/softap-install.sh
Start op de Raspberry Pi het installatie script met de opdracht:
bash softap-install.sh
Volg de instructies van het installatie script. Voor meer informatie lees je in het onderstaande script de Nederlandstalige commentaarregels (deze beginnen met een #) en zijn lichtgrijs.
De bediening en handleiding staat op het WiFi Access Point zelf en kan zowel via het bekabeld als draadloos netwerk bereikt worden door te surfen naar:
http://HOSTNAME
Daarbij vervang je HOSTNAME door de tijdens de installatie ingegeven hostname. Zonder de http:// geven sommige browsers de webpagina niet weer, m.a.w. typ de volledige URL in de adresbalk.
Gebruik deze webpagina ook om het WiFi Access Point af te sluiten. De Raspberry Pi beschikt namelijk niet over een Aan/Uit knop.
Het WiFi Access Point kan je ook gebruiken om bestanden en mappen te delen. Plug gewoon een USB stick (FAT of EXFAT) in het WiFi Access Point en deze worden via Samba automatisch gedeeld. Geen paniek, de inhoud van de stick wordt kan enkel gelezen worden. Handig voor het gebruik in klas om oefenbestanden met de cursisten te delen. Je kunt daardoor de USB stick ook zonder problemen terug uitpluggen (zonder veilig te verwijderen of los te koppelen).
Dit is ook wat het werken met de Raspberry Pi en open source zo leuk maakt, je combineert naar hartenlust tot je bereikt wat je wil bereiken. Wil je een USB printer op uw WiFi Access Point aansluiten, installeer en configureer dan CUPS, enz.
#!/bin/bash # For Raspbian Buster Lite # wget https://raw.githubusercontent.com/pindanet/Raspberry/master/softap-install.sh # bash softap-install.sh # ToDo # Voorlopig is dit project klaar # Test if executed with Bash # Dit script werkt enkel correct in de Bash shell, met sh krijg je foutmeldingen, vandaar deze test. case "$BASH_VERSION" in "") echo "usage: bash softap-install.sh" exit;; esac # Enkele instellingen, deze kan je indien gewenst aanpassen # Het toetsenbord layout voor Belgische AZERTY toetsenborden KEYMAP="be" # De gebruikte taalinstellingen en tekens LOCALE="nl_BE.UTF-8" # De tijdzone waarin je woont TIMEZONE="Europe/Brussels" # Het land waarin je woont (belangrijk en noodzakelijk voor WiFi) COUNTRY="BE" if [ $USER == "pi" ]; then # Het eerste deel van de installatie # Change Keyboard (aanpassen toetsenbord layout) sudo raspi-config nonint do_configure_keyboard "$KEYMAP" # Change locale (aanpassen gebruikte taalinstellingen en tekens) sudo raspi-config nonint do_change_locale "$LOCALE" # Change timezone (aanpassen tijdzone) sudo raspi-config nonint do_change_timezone "$TIMEZONE" # Change WiFi country (aanpassen WiFi land) sudo raspi-config nonint do_wifi_country "$COUNTRY" # Standaard gebruikt Raspbian de hostname raspberrypi # Om conflicten met andere Raspberry Pi's in het netwerk te vermijden moet je dit aanpassen # Het aanpassen van standaard ingestelde namen zorgt eveneens voor een veiliger systeem # Change hostname read -p "Enter the new hostname [snt-guest]: " NEW_HOSTNAME NEW_HOSTNAME=${NEW_HOSTNAME:-snt-guest} sudo raspi-config nonint do_hostname "$NEW_HOSTNAME" # Voor de liefhebbers van SSH # Gebruik je geen SSH, schakel deze regel dan uit door er commentaar van te maken: # plaats er een # voor. # Beveiliging: wat je niet gebruikt moet je ook niet activeren. # Wat niet actief is, kan namelijk ook niet misbruikt worden. # enable ssh sudo raspi-config nonint do_ssh 0 # Beveiliging: voer deze 3 opdrachtregels regelmatig uit om Raspbian # en dus uw WiFi Access Point bij te werken # Upgrade sudo apt update sudo apt dist-upgrade -y sudo apt autoremove -y # We vervangen de standaard pi gebruiker door een zelf te kiezen gebruiker # Dit is veiliger, ook omdat je dan enkel als je het gebruikerswachtwoord kent systeemtaken (sudo) kunt uitvoeren # Change user read -p "Enter the new user [dany]: " NEW_USER NEW_USER=${NEW_USER:-dany} sudo adduser --disabled-password --gecos "" "$NEW_USER" # Er wordt met de sudo passwd opdracht een nieuw wachtwoord voor de nieuwe gebruiker aangemaakt, # zorg dan ook voor een uniek en sterk wachtwoord. sudo passwd "$NEW_USER" # Geef de nieuwe gebruiker mogelijkheden (bevoegdheden) door deze aan bepaalde groepen toe te voegen sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio "$NEW_USER" # Tref voorbereidingen om na een herstart de installatie verder te zetten met de nieuwe gebruiker # Continue after reboot # Verplaats het installatie script naar de Persoonlijke map van de nieuwe gebruiker sudo mv softap-install.sh /home/$NEW_USER/ # Voeg het installatie script toe aan de inlogprocedure van de nieuwe gebruiker echo "bash softap-install.sh" | sudo tee -a /home/$NEW_USER/.bashrc # Geef instructies weer echo "Login as $NEW_USER" read -p "Press Return to Restart " key else # Tweede deel van de installatie (nu met de nieuwe gebruiker) # Verwijder het installatie script uit de inlogprocedure van de nieuwe gebruiker # Disable Continue after reboot sed -i '/^bash softap-install.sh/d' .bashrc # Beveiliging: Wat je niet gebruikt, verwijder je, ook de standaard pi gebruiker # Remove pi user sudo userdel -r pi # Het WiFi Access Point bestuur je vanaf elk apparaat met een browser via een webpagina. # Bijvoorbeeld om deze uit te schakelen, want de Raspberry Pi heeft geen Aan/Uit schakelaar # Webserver sudo apt install apache2 php libapache2-mod-php -y sudo systemctl restart apache2.service # Download de webpagina met de handleiding en de knop Afsluiten sudo wget -O /var/www/html/index.html https://raw.githubusercontent.com/pindanet/Raspberry/master/softap/index.html sudo sed -i.ori "s/snt-guest/$HOSTNAME/g" /var/www/html/index.html sudo wget -O /var/www/html/pinda.png https://raw.githubusercontent.com/pindanet/Raspberry/master/softap/pinda.png sudo wget -O /var/www/html/koffer.png https://raw.githubusercontent.com/pindanet/Raspberry/master/softap/koffer.png sudo wget -O /var/www/html/brugge.svg https://raw.githubusercontent.com/pindanet/Raspberry/master/softap/brugge.svg sudo wget -O /var/www/html/fileshare.svg https://raw.githubusercontent.com/pindanet/Raspberry/master/softap/fileshare.svg sudo wget -O /var/www/html/guest_wifi.svg https://raw.githubusercontent.com/pindanet/Raspberry/master/softap/guest_wifi.svg sudo wget -O /var/www/html/system.php https://raw.githubusercontent.com/pindanet/Raspberry/master/softap/system.php # Geef webpagina's (gebruiker www-data) de mogelijkheid om de Raspberry Pi af te sluiten echo "www-data ALL = NOPASSWD: /sbin/shutdown -h now" | sudo tee -a /etc/sudoers # Zorg voor het automatische alleen lezen koppelen van ingeplugde USB sticks # Automount echo 'ACTION=="add", KERNEL=="sd*", TAG+="systemd", ENV{SYSTEMD_WANTS}="usbstick-handler@%k"' | sudo tee /etc/udev/rules.d/usbstick.rules sudo wget -O /lib/systemd/system/usbstick-handler@.service https://raw.githubusercontent.com/pindanet/Raspberry/master/softap/usbstick-handler sudo wget -O /usr/local/bin/automount https://raw.githubusercontent.com/pindanet/Raspberry/master/softap/automount sudo chmod +x /usr/local/bin/automount sudo apt install exfat-fuse -y # Deel de inhoud van automatisch gekoppelde USB sticks # Share automounted USB-sticks # Installeer Samba sudo apt install samba samba-common-bin -y # Configureer Samba en deel de USB stick voor iedereen op het netwerk (openbaar) echo "[Media]" | sudo tee -a /etc/samba/smb.conf echo " comment = SoftAP-Network-Attached Storage" | sudo tee -a /etc/samba/smb.conf echo " path = /media" | sudo tee -a /etc/samba/smb.conf echo " public = yes" | sudo tee -a /etc/samba/smb.conf echo " force user = $USER" | sudo tee -a /etc/samba/smb.conf sudo systemctl restart smbd.service # Voor Windows 10 gebruikers en waarschijnlijk ook Windows 8 # Patch for Windows Web Service Discovery wget https://raw.githubusercontent.com/christgau/wsdd/master/src/wsdd.py sudo mv wsdd.py /usr/bin/wsdd sudo chmod +x /usr/bin/wsdd wget https://raw.githubusercontent.com/christgau/wsdd/master/etc/systemd/wsdd.service sudo mv wsdd.service /etc/systemd/system/ sudo sed -i.ori "s/User=nobody/User=$USER/g" /etc/systemd/system/wsdd.service UserGroup=$(id -gn) sudo sed -i "s/Group=nobody/Group=$UserGroup/g" /etc/systemd/system/wsdd.service sudo systemctl daemon-reload sudo systemctl start wsdd.service sudo systemctl enable wsdd.service # SoftAP # Geef tweemaal het WiFi wachtwoord in, de tweede maal om typfouten uit te sluiten while true; do read -s -p "WiFi Access Point Password: " password echo read -s -p "WiFi Access Point Password (again): " password2 echo [ "$password" = "$password2" ] && break echo "Please try again" done # Installeer de WiFi Access Point software sudo apt install hostapd bridge-utils -y sudo systemctl stop hostapd # Configureer het netwerk als WiFi Access Point echo "denyinterfaces wlan0" | sudo tee -a /etc/dhcpcd.conf echo "denyinterfaces eth0" | sudo tee -a /etc/dhcpcd.conf sudo brctl addbr br0 sudo brctl addif br0 eth0 echo "# Bridge setup" | sudo tee -a /etc/network/interfaces echo "auto br0" | sudo tee -a /etc/network/interfaces echo "iface br0 inet manual" | sudo tee -a /etc/network/interfaces echo "bridge_ports eth0 wlan0" | sudo tee -a /etc/network/interfaces # Configureer het WiFi Access Point # Mocht je teveel storing hebben door andere WiFi Access Points, pas dan channel aan # In Europa kan je kanalen tussen 1 en 13 gebruiken. cat > hostapd.conf <<EOF interface=wlan0 bridge=br0 #driver=nl80211 ssid=$HOSTNAME country_code=BE hw_mode=g channel=7 # Wireless Multimedia Extension/Wi-Fi Multimedia needed for # IEEE 802.11n (HT) wmm_enabled=1 # 1 to enable 802.11n ieee80211n=1 ht_capab=[HT20][SHORT-GI-20][DSSS_CK-HT40] macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=$password wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP EOF sudo mv hostapd.conf /etc/hostapd/hostapd.conf # Zorg dat het WiFi Access Point systeem automatisch start bij het opstarten van de Raspberry Pi sudo systemctl disable hostapd cat > hostapd.service <<EOF [Unit] Description=advanced IEEE 802.11 management Wants=network-online.target After=network.target network-online.target [Service] ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf PIDFile=/run/hostapd.pid RestartSec=5 Restart=on-failure [Install] WantedBy=multi-user.target EOF sudo mv hostapd.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable hostapd.service fi # Restart Raspberry Pi sudo shutdown -r now