Netwerktoegang

Start dit hoofdstuk met een nieuwe reservekopie van de Basisimage.

IP-adres vervangen door computernaam

Thuisnetwerken werken met dynamische IP-adressen, met andere woorden het IP-adres van jouw Raspberry Pi zal regelmatig veranderen. Als je er dan even verbinding mee wilt maken, is het wel een heel gedoe om er een toetsenbord, muis en monitor op aan te sluiten om alleen het IP-adres te achterhalen. Zou het niet handiger zijn als je alleen de naam van de Raspberry Pi in de terminal hoeft in te typen om er verbinding mee te maken? Dat klinkt te mooi om waar te zijn, maar het kan in feite vrij gemakkelijk.

Je hebt alleen een stukje software nodig dat hosts en services in een lokaal netwerk niet met hun IP-adres laat zien, maar met hun naam. Multicast Domain Name System (mDNS) maakt het gebruik van computernamen (hostnames) in kleine netwerken mogelijk zonder centrale DNS-server (Domain Name Server). Het is een ZeroConf dienst waarbij je dus niets moet configureren en zonder problemen samen kan werken met bestaande DNS-servers.

Zowel Apple- (Bonjour) als Linux (Avahi) en Windows (vanaf Windows 10 1703) systemen ondersteunen standaard mDNS.

We illustreren dit door in de terminal een ping opdracht naar de Raspberry Pi te sturen. Op sommige besturingssystemen moet je ping afbreken met de toetscombinatie Ctrl+c.

dany@main:~> ping raspberrypi.local
PING raspberrypi.local(2a02:a03f:e02a:8901:f150:233e:c9e9:f903 (2a02:a03f:e02a:8901:f150:233e:c9e9:f903)) 56 data bytes
64 bytes from 2a02:a03f:e02a:8901:f150:233e:c9e9:f903 (2a02:a03f:e02a:8901:f150:233e:c9e9:f903): icmp_seq=1 ttl=64 time=10.8 ms
64 bytes from 2a02:a03f:e02a:8901:f150:233e:c9e9:f903 (2a02:a03f:e02a:8901:f150:233e:c9e9:f903): icmp_seq=2 ttl=64 time=2.76 ms
64 bytes from 2a02:a03f:e02a:8901:f150:233e:c9e9:f903 (2a02:a03f:e02a:8901:f150:233e:c9e9:f903): icmp_seq=3 ttl=64 time=2.73 ms
64 bytes from 2a02:a03f:e02a:8901:f150:233e:c9e9:f903 (2a02:a03f:e02a:8901:f150:233e:c9e9:f903): icmp_seq=4 ttl=64 time=4.46 ms
^C
--- raspberrypi.local ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 2.729/5.174/10.751/3.294 ms

Merk op dat de ZeroConfnaam van de Raspberry Pi bestaat uit twee delen, de computernaam (hostname) raspberrypi en het domein local gescheiden door een punt. Elke ZeroConfnaam heeft als domeinnaam local. Merk ook op dat ZeroConf indien mogelijk de voorkeur heeft aan IPv6-adressen. Om het IPv4-adres van de Raspberry Pi te achterhalen, gebruik je de opdracht:

dany@main:~> ping -4 raspberrypi.local
PING  (192.168.129.37) 56(84) bytes of data.
64 bytes from 192.168.129.37 (192.168.129.37): icmp_seq=1 ttl=64 time=102 ms
64 bytes from 192.168.129.37 (192.168.129.37): icmp_seq=2 ttl=64 time=2.73 ms
64 bytes from 192.168.129.37 (192.168.129.37): icmp_seq=3 ttl=64 time=2.61 ms
64 bytes from 192.168.129.37 (192.168.129.37): icmp_seq=4 ttl=64 time=2.61 ms
^C
---  ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 2.608/27.453/101.863/42.960 ms

Het spreekt voor zich dat als je meerdere Raspberry Pi's in huis hebt, je die best veelzeggende unieke computernamen geeft.

Virtual Network Computing

VNC (Virtual Network Computing is een systeem voor het grafisch delen van een scherm, toetsenbord en muis zodat een gebruiker vanaf zijn eigen computer het scherm van een andere computer kan bekijken en bedienen.

Dit heeft veel nuttige toepassingen: je kunt op afstand de controle overnemen van een systeem, bijvoorbeeld om een andere computergebruiker te helpen of om een netwerkcomputer te gebruiken zonder dat daar een beeldscherm, toetsenbord of muis hoeft aan te hangen.

In ons geval is het handig om toegang te hebben tot de Raspberry Pi zonder de bovengenoemde randapparatuur. Op deze manier kun je er alles op doen wat je normaal zou doen terwijl de Pi alleen aan het lichtnet en het netwerk is aangesloten. Dat scheelt ruimte en voorkomt het maken van extra kosten.

VNC kan je als volgt in Raspberry Pi OS activeren:

De VNC Server configureren

Indien de Raspberry Pi is aangesloten op een scherm, neemt de VNC Server de resolutie van het scherm over. Indien je Raspberry Pi niet op een scherm is aangesloten, gebruikt de VNC Server een standaard resolutie. De standaard VNC Server resolutie is meestal veel te laag waardoor het schermoppervlak in de VNC Viewer verschrikkelijk klein of helemaal niet wordt weergegeven. Je kunt de VNC Server resolutie die gebruikt wordt als er geen scherm is aangesloten zelf instellen:

VNC Viewer

Raspberry Pi OS gebruikt standaard de RealVNC server, dus lijkt het me logisch dat je als Viewer ook RealVNC gebruikt. Voor elk besturingssysteem kan je vanaf de RealVNC Viewer downloadpagina een gepaste viewer downloaden. Je kunt daarbij kiezen voor een installeerbare versie of een alleenstaande versie.

Bij de eerste start van VNC Viewer moet je verschillende dialoogvensters doorlopen:

De RealVNC Viewer is nu klaar voor gebruik:

Werken met de Real VNC Viewer/Server

Alle bewerkingen die je met de muis, het toetsenbord en een scherm op de Raspberry Pi kunt uitvoeren, kan je nu via het venster van de VNC Viewer. Uitgezonderd indien de beelden hardwareversnelling gebruiken (bijvoorbeeld bij het afspelen van video).

Bovenaan het VNC scherm zie je in het midden een klein gedeelte van een paneel dat uitvouwt door het aan te wijzen. Dit paneel bevat blauwe pictogrammen om schermvullend te werken; het scherm aan te passen aan het venster; de toetscombinatie Ctrl+Alt+Del, bestanden, berichten naar de Raspberry Pi te sturen; informatie weer te geven, VNC in te stellen en de verbinding af te breken.
VNC werkbalk

Praktijk opdracht
  1. Laten we met behulp van VNC enkele bestanden (een ZIP archief met foto's) naar de Raspberry Pi overzetten.
    1. Download dit ZIP-archief met foto's.
    2. Start de VNC Viewer en maak een verbinding met jouw Raspberry Pi.
    3. Beweeg de muiswijzer naar het centrum van de bovenkant van de taakbalk van de Raspberry Pi in de VNC viewer om de knoppenbalk weer te geven.
      VNC werkbalk
    4. Klik op de vijfde knop (Transfer files).
    5. Klik op de knop .
    6. Open in de map Downloads het ZIP archief Foto's.
    7. Het ZIP archief Foto's verschijnt op het Bureaublad van de Raspberry Pi.
    8. Je kunt nu alle (één op de Raspberry Pi en één op jouw computer) RealVNC Viewer - File Transfer vensters.
    9. Klik met de rechtermuisknop op het ZIP archief Foto's.zip op het Bureaublad van de Raspberry Pi.
    10. Voer in het snelmenu de opdracht Hier uitpakken uit.
    11. Verplaats de uitgepakte map met Foto's naar de Pictures map in de Thuismap op de Raspberry Pi.
    12. Open in de map Foto's de eerste foto. Deze wordt geopend met de applicatie Afbeeldingkijker.
    13. Om alle foto's in de Pictures map te bekijken, start je met een knop in de werkbalk onderaan het venster een diavoorstelling.
    14. Zorg dat de diavoorstelling schermvullend wordt weergegeven. Zo maak je met een extra LCD-scherm voor de Raspberry Pi en het uitzoeken van prachtige aan de schermresolutie aangepaste foto's een prachtig fotokader.
    15. Druk Esc om de Volledige scherm weergave te verlaten.
    16. Een echt fotokader laat de foto's niet zo snel variëren. In de Voorkeuren van de Afbeeldingkijker kan je het Tussenpoze voor diavoorstelling in seconden instellen. Een rustig fotokader gebruikt tussenpozen van een uur en meer. Stel dit in op 60 seconden.
    17. Je merkt al vlug dat de nieuwe instelling pas wordt toegepast als je de diavoorstelling even stopt en terug herstart.
      Fotokader
    18. Daarstraks heb je foto's naar de Raspberry Pi gekopieerd, nu ga je een PDF document naar je computer kopiëren:
      1. Transfereer uit de map /usr/share/debian-reference het bestand debian-reference.en.pdf naar jouw computer op het netwerk.
      2. Sluit het VNC venster om de verbinding te verbreken.
      3. Open op jouw computer op het Bureaublad het pas ontvangen PDF document.
  2. VNC bestaat in veel smaken en kleuren, een alternatief vind je in TightVNC. Bij TightVNC kan je verschillende Bureaubladen creëren, waardoor je elkaar niet stoort.

    1. Bouw een SSH-verbinding met je Raspberry Pi op.
    2. Jammer genoeg kan je RealVNC en TightVNC niet samen gebruiken. Schakel via de raspi-config configuratieopdracht in de Interfacing Options de VNC server uit. Daarna verwijderen we grondig de Real VNC server met de volgende opdracht:
      pi@raspberrypi:~ $ sudo apt purge realvnc-vnc-server
      Pakketlijsten worden ingelezen... Klaar
      Boom van vereisten wordt opgebouwd... Klaar
      De statusinformatie wordt gelezen... Klaar 
      De volgende pakketten zullen VERWIJDERD worden:
        realvnc-vnc-server*
      0 opgewaardeerd, 0 nieuw geïnstalleerd, 1 te verwijderen en 0 niet opgewaardeerd.
      Na deze bewerking zal er 40,7 MB schijfruimte vrijkomen.
      Wilt u doorgaan? [J/n] 
      (Database wordt ingelezen ... 96925 bestanden en mappen momenteel geïnstalleerd.)
      realvnc-vnc-server (7.5.1.50075) wordt verwijderd ...
      Bezig met afhandelen van triggers voor hicolor-icon-theme (0.17-2) ...
      Bezig met afhandelen van triggers voor gnome-menus (3.36.0-1) ...
      Bezig met afhandelen van triggers voor man-db (2.9.4-2) ...
      Bezig met afhandelen van triggers voor mailcap (3.69) ...
      Bezig met afhandelen van triggers voor desktop-file-utils (0.26-1) ...
      (Database wordt ingelezen ... 96852 bestanden en mappen momenteel geïnstalleerd.)
      Configuratiebestanden voor realvnc-vnc-server (7.5.1.50075) worden gewist ...
      rmdir: kan '/etc/vnc' niet verwijderen: Map is niet leeg
    3. Installeer TightVNC met de opdracht:
      pi@raspberrypi:~ $ sudo apt install tightvncserver
      Pakketlijsten worden ingelezen... Klaar
      Boom van vereisten wordt opgebouwd... Klaar
      De statusinformatie wordt gelezen... Klaar 
      De volgende extra pakketten zullen geïnstalleerd worden:
        libxxf86dga1 x11-utils xfonts-base xfonts-encodings xfonts-utils
      Voorgestelde pakketten:
        tightvnc-java mesa-utils
      De volgende NIEUWE pakketten zullen geïnstalleerd worden:
        libxxf86dga1 tightvncserver x11-utils xfonts-base xfonts-encodings xfonts-utils
      0 opgewaardeerd, 6 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd.
      Er moeten 7.408 kB aan archieven opgehaald worden.
      Na deze bewerking zal er 11,0 MB extra schijfruimte gebruikt worden.
      Wilt u doorgaan? [J/n] 
      Ophalen:1 http://deb.debian.org/debian bullseye/main arm64 libxxf86dga1 arm64 2:1.1.4-1+b3 [20,9 kB]
      Ophalen:2 http://deb.debian.org/debian bullseye/main arm64 x11-utils arm64 7.7+5 [196 kB]
      Ophalen:3 http://deb.debian.org/debian bullseye/main arm64 tightvncserver arm64 1:1.3.10-3 [635 kB]
      Ophalen:4 http://deb.debian.org/debian bullseye/main arm64 xfonts-encodings all 1:1.0.4-2.1 [573 kB]
      Ophalen:5 http://deb.debian.org/debian bullseye/main arm64 xfonts-utils arm64 1:7.7+6 [85,6 kB]
      Ophalen:6 http://deb.debian.org/debian bullseye/main arm64 xfonts-base all 1:1.0.5 [5.897 kB]
      7.408 kB opgehaald in 2s (3.077 kB/s)     
      Voorheen niet geselecteerd pakket libxxf86dga1:arm64 wordt geselecteerd.
      (Database wordt ingelezen ... 96852 bestanden en mappen momenteel geïnstalleerd.)
      Uitpakken van .../0-libxxf86dga1_2%3a1.1.4-1+b3_arm64.deb wordt voorbereid...
      Bezig met uitpakken van libxxf86dga1:arm64 (2:1.1.4-1+b3) ...
      Voorheen niet geselecteerd pakket x11-utils wordt geselecteerd.
      Uitpakken van .../1-x11-utils_7.7+5_arm64.deb wordt voorbereid...
      Bezig met uitpakken van x11-utils (7.7+5) ...
      Voorheen niet geselecteerd pakket tightvncserver wordt geselecteerd.
      Uitpakken van .../2-tightvncserver_1%3a1.3.10-3_arm64.deb wordt voorbereid...
      Bezig met uitpakken van tightvncserver (1:1.3.10-3) ...
      Voorheen niet geselecteerd pakket xfonts-encodings wordt geselecteerd.
      Uitpakken van .../3-xfonts-encodings_1%3a1.0.4-2.1_all.deb wordt voorbereid...
      Bezig met uitpakken van xfonts-encodings (1:1.0.4-2.1) ...
      Voorheen niet geselecteerd pakket xfonts-utils wordt geselecteerd.
      Uitpakken van .../4-xfonts-utils_1%3a7.7+6_arm64.deb wordt voorbereid...
      Bezig met uitpakken van xfonts-utils (1:7.7+6) ...
      Voorheen niet geselecteerd pakket xfonts-base wordt geselecteerd.
      Uitpakken van .../5-xfonts-base_1%3a1.0.5_all.deb wordt voorbereid...
      Bezig met uitpakken van xfonts-base (1:1.0.5) ...
      Instellen van libxxf86dga1:arm64 (2:1.1.4-1+b3) ...
      Instellen van xfonts-encodings (1:1.0.4-2.1) ...
      Instellen van x11-utils (7.7+5) ...
      Instellen van tightvncserver (1:1.3.10-3) ...
      update-alternatives: /usr/bin/tightvncserver wordt gebruikt om in de automatische modus in /usr/bin/vncserver (vncserver) te voorzien.
      update-alternatives: /usr/bin/Xtightvnc wordt gebruikt om in de automatische modus in /usr/bin/Xvnc (Xvnc) te voorzien.
      update-alternatives: /usr/bin/tightvncpasswd wordt gebruikt om in de automatische modus in /usr/bin/vncpasswd (vncpasswd) te voorzien.
      Instellen van xfonts-utils (1:7.7+6) ...
      Instellen van xfonts-base (1:1.0.5) ...
      Bezig met afhandelen van triggers voor libc-bin (2.31-13+rpt2+rpi1+deb11u5) ...
      Bezig met afhandelen van triggers voor man-db (2.9.4-2) ...
      Bezig met afhandelen van triggers voor fontconfig (2.13.1-4.2) ...
    4. Start de VNC-server met de opdracht:
      pi@raspberrypi:~ $ vncserver :1
      
      You will require a password to access your desktops.
      
      Password: 
      Verify:   
      Would you like to enter a view-only password (y/n)? n
      
      New 'X' desktop is raspberrypi:1
      
      Creating default startup script /home/pi/.vnc/xstartup
      Starting applications specified in /home/pi/.vnc/xstartup
      Log file is /home/pi/.vnc/raspberrypi:1.log
      Daarbij moet je een toegangswachtwoord blind (zonder dat er iets op het scherm verschijnt) ingeven (tweede maal om tikfouten te vermijden). Met een view-only password kan je de Raspberry Pi enkel bedienen als je dit wachtwoord kent. View-only betekent dus dat je enkel het scherm van de Raspberry Pi kunt overnemen en niet het toetsenbord en de muis.
    5. Start op de computer de RealVNC viewer op.
    6. Vul in het tekstvak Enter a VNC Server address or search de computernaam (hostname) of het IP-adres van de Raspberry Pi direct gevolgd door het schermnummer :1.
    7. Bouw een verbinding op door Return te drukken. Je krijgt een waarschuwing dat de verbinding niet versleuteld is. Klik Continue.
    8. Geef het VNC toegangswachtwoord in en klik OK.
    9. Start een programma op de Raspberry Pi via VNC. Je merkt al vlug dat er geen vensteromgeving is (geen titelbalk, enz). TightVNC werk blijkbaar met de vensteromgeving mutter en niet met de huidige openbox vensteromgeving. Dit los je als volgt op:
      1. Open een terminal(venster of via SSH) op de Raspberry Pi.
      2. Start als systeembeheerder de teksteditor nano op met het configuratiebestand /etc/xdg/lxsession/LXDE-pi/desktop.conf:
        pi@raspberrypi:~ $ sudo nano -B /etc/xdg/lxsession/LXDE-pi/desktop.conf
      3. Pas de tweede regel aan van
        window_manager=mutter
        naar
        window_manager=openbox
      4. Sla de aanpassingen op en sluit nano af.
      5. Herstart de Raspberry Pi met de opdracht
        pi@raspberrypi:~ $ sudo shutdown -r now
      6. Start de VNC server op de Raspberry Pi.
      7. Probeer opnieuw een VNC verbinding naar de Raspberry Pi op te bouwen.
      8. Test of je nu een werkende vensteromgeving hebt.
    10. Wie niet graag met de X-cursor werkt, kan die als volgt aanpassen:
      1. Open het Menu en start in Hulpmiddelen de Text Editor.
      2. Start in het menu Bestand de opdracht Open.
      3. Activeer de Persoonlijke map van de pi gebruiker.
      4. Configuratiebestanden en mappen worden voor gewone gebruikers veiligheidshalve verborgen. Om deze verborgen mappen en bestanden weer te geven, klik je met de rechter muisknop tussen de bestanden en mappen en activeer je de optie Verborgen bestanden tonen.
      5. Verborgen mappen en namen beginnen in Linuxsystemen met een punt. Open de verborgen map .vnc waarin de configuratie van de VNC Server is opgeslagen.
      6. De inhoud van de verborgen .vnc map verschijnt in het hoofdvenster. Open het configuratiebestand xstartup.
      7. Vul de regel met xsetroot -solid grey aan met -cursor_name left_ptr.
      8. Sla de aanpassing op en sluit de teksteditor.
      9. Om de aanpassing te activeren, moet je de vncserver herstarten:
        1. Sluit het VNC venster om de verbinding te verbreken.
        2. Daarmee is de VNC server op de Raspberry Pi nog niet afgesloten, m.a.w. zorg voor een SSH-verbinding met uw Raspberry Pi.
        3. Sluit de VNC server af met de opdracht:
          pi@raspberrypi:~ $ vncserver -kill :1
          Killing Xtightvnc process ID 1940
          :1 bepaald welk scherm (sessie) afgesloten wordt, bij het starten van de VNC server werd ook het schermnummer meegegeven.
        4. Herstart de VNC server. Daarbij merk je dat je deze keer geen toegangswachtwoord meer moet opgeven. Het vorige toegangswachtwoord blijft geldig.
      10. Test de aanpassing door een nieuwe VNC verbinding naar de Raspberry Pi op te bouwen.
  3. Als je van plan bent om VNC veelvuldig te gebruiken, is het misschien handiger om de VNC server automatisch bij het opstarten van de Pi op te starten:
    1. Zorg voor een SSH verbinding naar jouw Raspberry Pi.
    2. Sluit de VNC server af.
    3. Maak een autostart map met de opdracht:
      pi@raspberrypi:~ $ mkdir .config/autostart
    4. Alle in deze map geplaatste startbestanden (.desktop bestanden) worden automatisch bij het opstarten van de Raspberry Pi uitgevoerd. Het autostart tightvncserver.desktop bestand maken we aan met nano.
      pi@raspberrypi:~ $ nano -B .config/autostart/tightvncserver.desktop
    5. Met het volgende script:
      [Desktop Entry]
      Type=Application
      Exec=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1
    6. Sla het opstartscript op in het bestand .config/autostart/tightvncserver.desktop.
    7. Sluit nano af.
    8. Herstart de Raspberry Pi met de opdracht:
      pi@raspberrypi:~ $ sudo shutdown -r now
    9. Test na het volledig opstarten van de Raspberry Pi (wacht een tijd) de VNC server door een VNC verbinding naar de Raspberry Pi op te zetten. Je merk meteen dat je een groter scherm krijgt, namelijk met een 1280x800 resolutie. Dit is te wijten aan de optie -geometry bij het opstarten van de vncserver in het opstartscript. De optie -depth bepaalt de kleurdiepte, hier 24 bits.
    10. Mocht de VNC verbinding mislukken, controleer dan het opstartscript op fouten.
  4. Een VNC verbinding is niet versleuteld en dus onveilig. Door een beveiligde SSH verbinding op te zetten en de VNC verbinding via de beveiligde SSH verbinding tot stand te laten komen, kan je een versleutelde en veilige VNC verbinding maken. Dit noemen we tunneling en wordt ook gebruikt bij VPN (Virtual Private Network) en HTTPS (beveiligde internetverbindingen). Een VNC tunnel bouw je als volgt:
    1. Zorg voor een SSH verbinding naar jouw Raspberry Pi.
    2. Pas als systeembeheerder het opstartscript voor de VNC server aan. De regel waar de VNC server wordt opgestart, pas je aan naar:
      Exec=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :1
      Daarbij voeg je de optie localhost toe, waardoor de VNC server enkel een verbinding toestaat vanaf de Raspberry Pi zelf. De SSH server zal deze lokale VNC verbinding beveiligd ter beschikking stellen van andere computers op het netwerk.
    3. Om de nieuwe configuratie toe te passen, herstart je de Raspberry Pi.
    4. Sluit de SSH verbinding naar jouw Raspberry Pi af met de opdracht:
      pi@raspberrypi:~ $ exit
    5. Zorg voor een SSH tunnel vanaf jouw computer naar de Raspberry Pi met de opdracht:
      dany@main:~> ssh -L 5901:localhost:5901 pi@raspberrypi.local
      Elk VNC scherm gebruikt een eigen netwerkpoort (5900 + schermnummer). De -L 5901:localhost:5901 optie zorgt ervoor dat op de Raspberry Pi het netwerkverkeer op poort 5901 door SSH wordt onderschept en versleuteld naar jouw computer wordt verzonden. Daar ontvangt SSH het versleutelde VNC scherm waar het terug ontcijfert wordt en doorgestuurd naar de VNC Viewer.
    6. Start de VNC Viewer op jouw computer.
    7. Maak een VNC verbinding naar localhost:1. M.a.w. je maakt een VNC verbinding naar de SSH server op jouw eigen computer die de VNC verbinding versleuteld doorstuurt naar de Raspberry Pi.
    Hoewel de VNC viewer nog steeds een onversleutelde verbinding ziet, is deze wel degelijk versleuteld, alleen niet door de VNC Server, maar door SSH, een betrouwbaar versleutelsysteem.
  5. Nu je een beveiligde VNC verbinding kunt opzetten, kan je via het onveilige internet jouw Raspberry Pi bedienen. Daarvoor heb je echter een externe dienst als dataplicity nodig. Je moet de bedrijven achter deze diensten dan wel vertrouwen. Ook RealVNC biedt een versleutelde dienst aan, maar niet via SSH.
  6. Microsoft’s Remote Desktop Protocol (RDP) wordt hoofdzakelijk gebruikt in Windows Server producten om servers zonder monitor te beheren. Alle moderne Windows versies hebben standaard een RDP viewer. Je moet op de Windows computer dus geen extra software installeren.

    Er zijn verschillende mogelijkheden om een Linux-systeem met RDP uit te breiden. Xrdp zorgt dat je een Linux scherm via RDP op een Windows computer kunt bekijken en bedienen. Daarenboven werkt xrdp ook met RDP viewers op andere systemen. Om xrdp op de Raspberry Pi te installeren, open je met PuTTY een SSH verbinding of start je de LXTerminal.

    1. Het xrdp pakket zelf installeer je met de opdracht:
      pi@raspberrypi:~ $ sudo apt install xrdp
      Pakketlijsten worden ingelezen... Klaar
      Boom van vereisten wordt opgebouwd... Klaar
      De statusinformatie wordt gelezen... Klaar 
      De volgende extra pakketten zullen geïnstalleerd worden:
        libfuse2 x11-apps x11-session-utils xbitmaps xfonts-100dpi xfonts-75dpi xfonts-scalable xorg xorg-docs-core xorgxrdp
      Voorgestelde pakketten:
        mesa-utils xorg-docs x11-xfs-utils guacamole
      De volgende NIEUWE pakketten zullen geïnstalleerd worden:
        libfuse2 x11-apps x11-session-utils xbitmaps xfonts-100dpi xfonts-75dpi xfonts-scalable xorg xorg-docs-core xorgxrdp xrdp
      0 opgewaardeerd, 11 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd.
      Er moeten 8.967 kB aan archieven opgehaald worden.
      Na deze bewerking zal er 15,1 MB extra schijfruimte gebruikt worden.
      Wilt u doorgaan? [J/n] 
      Ophalen:1 http://deb.debian.org/debian bullseye/main arm64 libfuse2 arm64 2.9.9-5 [125 kB]
      Ophalen:2 http://deb.debian.org/debian bullseye/main arm64 x11-apps arm64 7.7+8 [618 kB]                          
      ...
      Ophalen:10 http://deb.debian.org/debian bullseye/main arm64 xorg arm64 1:7.7+22 [39,0 kB]
      Ophalen:11 http://archive.raspberrypi.org/debian bullseye/main arm64 xorgxrdp arm64 1:0.2.17-1~bpo11+rpt1 [56,9 kB]
      8.967 kB opgehaald in 2s (4.136 kB/s)
      Voorheen niet geselecteerd pakket libfuse2:arm64 wordt geselecteerd.
      (Database wordt ingelezen ... 97443 bestanden en mappen momenteel geïnstalleerd.)
      Uitpakken van .../00-libfuse2_2.9.9-5_arm64.deb wordt voorbereid...
      Bezig met uitpakken van libfuse2:arm64 (2.9.9-5) ...
      ...
      Voorheen niet geselecteerd pakket xorgxrdp wordt geselecteerd.
      Uitpakken van .../10-xorgxrdp_1%3a0.2.17-1~bpo11+rpt1_arm64.deb wordt voorbereid...
      Bezig met uitpakken van xorgxrdp (1:0.2.17-1~bpo11+rpt1) ...
      Instellen van xfonts-100dpi (1:1.0.4+nmu1.1) ...
      Instellen van x11-apps (7.7+8) ...
      ...
      Instellen van xfonts-scalable (1:1.0.3-1.2) ...
      Instellen van xrdp (0.9.17-2~bpo11+rpt1) ...
      
      Generating 2048 bit rsa key...
      
      ssl_gen_key_xrdp1 ok
      
      saving to /etc/xrdp/rsakeys.ini
      
      Created symlink /etc/systemd/system/multi-user.target.wants/xrdp-sesman.service → /lib/systemd/system/xrdp-sesman.service.
      Created symlink /etc/systemd/system/multi-user.target.wants/xrdp.service → /lib/systemd/system/xrdp.service.
      Instellen van xorg (1:7.7+22) ...
      Bezig met afhandelen van triggers voor libc-bin (2.31-13+rpt2+rpi1+deb11u5) ...
      Bezig met afhandelen van triggers voor man-db (2.9.4-2) ...
      Bezig met afhandelen van triggers voor fontconfig (2.13.1-4.2) ...

      Xrdp wordt als een dienst (service of server) geïnstalleerd die automatisch start bij het starten van de Raspberry Pi.

    2. Nog een kleine aanpassing van de grafische omgeving voor xrdp.
      1. Start als systeembeheerder de teksteditor nano op en open het configuratiebestand /etc/X11/xrdp/xorg.conf met de opdracht
        pi@raspberrypi:~ $ sudo nano /etc/X11/xrdp/xorg.conf
      2. Start de zoekfunctie met Ctrl+w.
      3. Zoek naar DRMDevice
      4. Pas de gevonden regel aan van
        Option "DRMDevice" "/dev/dri/renderD128"
        naar
        Option "DRMDevice" ""
      5. Sla de aanpassing op.
      6. Sluit nano af.
      7. Herstart de Raspberry Pi met de opdracht
        pi@raspberrypi:~ $ sudo shutdown -r now
    3. Onder Windows start je Verbinding met extern bureaublad en typ je in het tekstvak Computer de hostname of het IP-adres van de Raspberry Pi in. Klik op de knop Verbinden om een verbinding met de Raspberry Pi op te bouwen.
      Extern bureaublad

      Je krijgt een melding dat de identiteit van de externe computer niet kan worden geverifieerd. Klik op Ja om toch een verbinding met de Raspberry Pi op te bouwen.
      Login to xrdp

      Vanaf nu werk je op de Raspberry Pi. Meld je aan als gebruiker (username) pi met het bijhorende wachtwoord (password). Bevestig met OK.
      Xrdp Raspberry Pi

    4. Sluit de RDP Viewer.
    5. De standaard schermresolutie wordt niet door de Raspberry Pi bepaald, maar door het Windows programma. De RDP viewer op Windows onderhandelt met de Raspberry Pi om de schermresolutie en de kleurdiepte te bepalen. Om zelf de resolutie en kleurdiepte te bepalen, activeer je op de RDP viewer Opties weergeven en daarna het tabblad Weergave.
      RDP opties
      Maak een verbinding naar de Raspberry Pi met een kleurdiepte van 16 bits. Welk verschil merk je? ......
    6. RDP start voor elke verbinding een nieuwe grafische omgeving op. Dit heeft als voordeel dat meerdere via RDP verbonden gebruikers elk hun eigen grafische omgeving hebben en elkaar dus niet storen. Een nadeel is echter dat dit de Raspberry Pi zwaarder belast en sommige instellingen verloren gaan.

    7. Het configuratiebestand voor xrdp is /etc/xrdp/xrdp.ini en kan je aanpassen met de opdracht:
      pi@raspberrypi:~ $ sudo nano -B /etc/xrdp/xrdp.ini
      [Globals]
      ; xrdp.ini file version number
      ini_version=1
      
      ; fork a new process for each incoming connection
      fork=true
      
      ; ports to listen on, number alone means listen on all interfaces
      ; 0.0.0.0 or :: if ipv6 is configured
      ; space between multiple occurrences
      ; ALL specified interfaces must be UP when xrdp starts, otherwise xrdp will fai>
      ;
      ; Examples:
      ;   port=3389
      ;   port=unix://./tmp/xrdp.socket
      ;   port=tcp://.:3389                           127.0.0.1:3389
      ;   port=tcp://:3389                            *:3389
      ;   port=tcp://:3389      192.168.1.1:3389
      ;   port=tcp6://.:3389                          ::1:3389
      ;   port=tcp6://:3389                           *:3389

      De configuratie bestaat uit verschillende secties, waarvan de naam tussen rechte haken staat. In de [globals] sectie kan je de compressie uitschakelen door de eigenschap bitmap_compression op no te zetten. Dit kan betere resultaten opleveren daar de Pi processor vrijgesteld wordt van het intensieve comprimeren. Je zult waarschijnlijk pas een betere performantie merken bij een zeer actieve Pi.

      Het Remote Desktop Protocol heeft drie versleutelniveau's, low, medium en high. Low is een 40 bit encryptie van de client naar de server. Medium is een 40 bit encryptie in beide richtingen. High is een 128 bit encryptie in beide richtingen. Je past deze beveiligingsmethode aan met de eigenschap crypt_level.

      In de [Xorg] sectie, kan je een standaard username en password ingeven waardoor je in het xrdp login dialoogvenster niets meer hoeft in te geven. Wil je de toegang tot je Raspberry Pi beperken, wijzig dan niets, maar als iets gebruiksvriendelijker wilt werken kan je bij de username een standaard gebruiker invullen. Je beperkt het aanmelden dan ook tot die ene standaard gebruiker.

      1. Zorg dat je zonder het ingeven van een gebruikersnaam en bijhorend wachtwoord een RDP verbinding kunt opbouwen.
      2. Test de nieuwe configuratie.
      3. Dit is wel gemakkelijk, maar niet zo veilig. M.a.w. zorg dat bij het verbinden terug een gebruikersnaam en bijhorend wachtwoord gevraagd wordt.
      4. Test de veiliger configuratie.
  7. Of je kunt gebruik maken van totaaloplossingen zoals Teamviewer. Aangezien het volledige proces (scherm overnemen en versleutelen) dan in handen is van dezelfde firma, moet het vertrouwen nog groter zijn.

    Installeer als extra opdracht eens Teamviewer voor de Raspberry. Handleidingen voor deze opdracht vindt je op internet. Succes.

  8. Wie het uiterste uit zijn Raspberry Pi wil halen, werkt met maar één scherm. Configureer via een beveiligde VNC verbinding naar jouw Raspberry Pi de Pi zodat deze niet opstart naar een bureaublad, maar Naar CLI (Command Line Interface of opdrachtregel). Na het aanpassen en bevestigen van de configuratie herstart je de Raspberry Pi. Test de aanpassing door opnieuw een beveiligde SSH verbinding naar jouw Raspberry Pi op te zetten. Het enige verschil is dat er geen bureaublad omgeving meer is via de HDMI aansluiting, waardoor rekenkracht vrijkomt voor andere toepassingen.

Openbare reacties op deze pagina (kunnen door alle bezoekers gelezen worden)

, vrijdag 2 juni 2023 19:28