Vanheden Old VanHeden

Datablad

Robot-plattformar Vir-/kopplingskort Digitala/analoga komponenter AVR/Raspberry Kommunikation Kringutrustning Displayer Sensorer Knappar & LEDs Gott & Blandat Alla PDF:er

Övrig information

Handledningar Karta (PDF) ELDA-biblioteket (mazemap) Tips o Trix Kuriosa FAQ

Raspberry Pi som access-punkt

Bakgrund:

Raspberry Pi har en firmware-bugg, som kan orsaka problem när den ska användas som access-punkt. Istället för den standardiserade nätverkshanteraren behövs då istället en separat access point daemon.

Efter följande steg ska din Raspberry Pi:

Utrustning som behövs:

  1. RPi3 + tangentbord + bildskärm
  2. micro-SD-kort
  3. Switch inkopplad via stolpe i labbet

Steg:

1. Uppdatera operativsystemet

  sudo apt update
  sudo apt upgrade -y

2. Installera följande paket

  sudo apt install hostapd dnsmasq iptables-persistent netfilter-persistent openssh-server

3. Stoppa följande services

  sudo systemctl stop hostapd dnsmasq

4. Enabla SSH

  sudo systemctl enable --now ssh

5. Hindra NetworkManager från att hantera wlan0

Skapa filen /etc/NetworkManager/conf.d/10-unmanaged-wlan0.conf, t ex med nano via kommandot:

  sudo nano /etc/NetworkManager/conf.d/10-unmanaged-wlan0.conf

... med följande innehåll:

  [keyfile]
  unmanaged-devices=interface-name:wlan0

Spara filen med CTRL-O, avsluta nano med CTRL-X

6. Starta om NetworkManager

  sudo systemctl restart NetworkManager

7. Verifiera att NetworkManager kör

  nmcli device status

wlan0 ska nu vara 'unmanaged'

8. Konfigurera hostapd

Skapa filen /etc/hostapd/hostapd.conf, t ex med nano via kommandot:

  sudo nano /etc/hostapd/hostapd.conf

... med följande innehåll: (byt Gxx-RaspberryPi-AP till lämpligt namn, samt YourSecurePassword till lämpligt lösenord)

  country_code=SE
  interface=wlan0
  driver=nl80211

  ssid=Gxx-RaspberryPi-AP

  hw_mode=g
  channel=6
  ieee80211n=0
  wmm_enabled=0

  auth_algs=1
  wpa=2
  wpa_key_mgmt=WPA-PSK
  rsn_pairwise=CCMP
  wpa_passphrase=YourSecurePassword

  ignore_broadcast_ssid=0

Spara filen med CTRL-O, avsluta nano med CTRL-X

ieee80211n=0 samt wmm_enabled=0 kan senare ändras för bättre WiFi-prestanda.

9. Enabla hostapd, med följande kommandon

sudo systemctl unmask hostapd
sudo systemctl enable hostapd

10. Konfigurera dnsmasq

Skapa filen /etc/dnsmasq.d/access-point.conf, t ex med nano via kommandot:

  sudo nano /etc/dnsmasq.d/access-point.conf

... med följande innehåll:

  interface=wlan0
  bind-dynamic

  dhcp-range=192.168.50.100,192.168.50.200,255.255.255.0,12h

  dhcp-option=option:router,192.168.50.1
  dhcp-option=option:dns-server,192.168.50.1

10. Enabla dnsmasq, med kommandot

  sudo systemctl enable dnsmasq

11. Sätt permanent IP-adress för wlan0

Skapa filen /etc/systemd/system/ap-address.service, t ex med nano via kommandot:

  sudo nano /etc/systemd/system/ap-address.service

... med följande innehåll:

  [Unit]
  Description=Configure WiFi access point address
  After=network-pre.target NetworkManager.service
  Before=hostapd.service dnsmasq.service
  Wants=network-pre.target

  [Service]
  Type=oneshot
  ExecStart=/usr/sbin/ip addr replace 192.168.50.1/24 dev wlan0
  ExecStart=/usr/sbin/ip link set wlan0 up
  RemainAfterExit=yes

  [Install]
  WantedBy=multi-user.target

12. Enabla permanent IP-adress, med följande kommandon

  sudo systemctl daemon-reload
  sudo systemctl enable ap-address.service

13. Enabla IP-forwarding

Skapa filen /etc/sysctl.d/90-router.conf, t ex med nano via kommandot:

  sudo nano /etc/sysctl.d/90-router.conf

... med följande innehåll:

net.ipv4.ip_forward=1

14. Aktivera IP-forwarding, med följande kommando

  sudo sysctl --system

15. Konfigurera NAT forwarding, med följande kommandon

sudo iptables -A FORWARD -i wlan0 -o eth0 -s 192.168.50.0/24 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o wlan0 -d 192.168.50.0/24 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o eth0 -j MASQUERADE

16. Spara firewall-reglerna, med följande kommandon

  sudo netfilter-persistent save
  sudo systemctl enable netfilter-persistent

17. Enabla och starta tidigare konfigurerade services, med följande kommandon

  sudo systemctl enable hostapd dnsmasq
  sudo systemctl start ap-address
  sudo systemctl start hostapd dnsmasq

18. Boota om Raspberry Pi och testa att det funkar

  sudo reboot

19. Efter ombootning, kontrollera status med följande kommandon

  ip -4 addr
  ip route
  sysctl net.ipv4.ip_forward

  systemctl status hostapd
  systemctl status dnsmasq
  systemctl status ap-address
  systemctl status ssh

20. Från t ex en laptop, anslut till Gxx-RaspberryPi-AP och testa: (byt username mot användarnamn på Raspberry Pi)

  ssh username@192.168.50.1

21. Testa internet-access

  ping -c 3 1.1.1.1
  ping -c 3 raspberrypi.com