RASP-PI-REMOTE-SCREEN-Install

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Préambule

Nous devons essentiellement installer 2 packages, après avoir reconfiguré la définition du réseau:

  • hostapd: qui contrôle le pilote de l’adaptateur wifi pour qu’il agisse en tant que "Access Point", comme Le routeur de maison, y compris le contrôle d’accès, les canaux,…
  • dnsmasq: qui distribuera les adresses IP sur l’Access Point (serveur DHCP pour le point d'accès).

Comme l’initialisation de Raspbian et du réseau évoluent d’un release à l’autre, la dernière image de Raspbian sera utilisée dans ce tuto (7 septembre 2017).

RASP-PI-REMOTE-SCREEN-Install-00.png

Pour voir les interfaces réseau connectés, exécutons:

ls /sys/class/net

Sur un Pi3 nous aurons au moins 3 interfaces sous la forme eth0 lo wlan0, à savoir

  • eth0 - Interface Ethernet filaire du Pi 3
  • wlan0 - interface WiFi du Pi 3
  • lo - Interface dit "Loopback" permettant au Pi 3 de constater sa propre interface réseau.

Attention au "Predictable network interface names"

Si vous obtenez une réponse du genre: enxb827ebaf64da lo wlan0 wlx000f133822a8 cela signifie que le Pi est configuré avec “Predictable network interface names” qui contiennent la “MAC address” des interfaces.

C’est un choix qui est fait dans raspi-config -Advanced Options-Network interface names.

Attention:

cette dernière mise-à-jour de raspi-config est du 26 septembre ! Et suite à la découverte de KRACK par nos amis de la KUL et d’imec. hostapd et wpasuppicant ont également étés upgradés le 16 octobre 2017 !

Autres commandes utiles

La commande ip remplace ifconfig.

  • ip a
  • ip neigh

Configuration des interfaces réseau

Cette configuration se fait dans /etc/network/interfaces

Au départ ce fichier ne contient comme ligne utile que

source-directory /etc/network/interfaces.d

mais le répertoire /etc/network/interfaces.d est vide

Ajoutons à interfaces la description de notre réseau, vu du Pi:

RASP-PI-REMOTE-SCREEN-Install-01.png

Comme vous pouvez le constater, nous utilisons des adresses IP Statiques pour wlan0 (interface WiFi sur la carte du Pi) et ethernet. L'interface wlan0 sera utilisée pour y connecter la tablette (utilisé comme terminal).

L'interface wlan1 est en allow-hotplug. Cela signifie que la carte détectera le branchement d'une clé WiFi sur un des ports USB, idéal pour connecter le Pi sur un réseau domestique réseau domestique.

Configuration du DHCP

Dans le fichier /etc/dhcpcd.conf, ajoutons les lignes suivantes pour empêcher la configuration DHCP (Dynamic Host Configuration Protocol) des interfaces réseaux eth0 et wlan0 (WiFi Interne).

Ces 2 lignes spécifient que nous gérons nous-même les interfaces eth0 et wlan0. Pour ces interfaces, c’est le Pi qui sera le routeur.

denyinterfaces wlan0
denyinterfaces eth0

DHCP est utilisé par le Pi pour discuter de la configuration IP avec votre routeur wifi domestique afin d'offrir un accès à Internet. Ce qui sera encore le cas de l'éventuelle l’interface wlan1 (lorsque l'on branche une clé WiFi sur le port USB).

Installer le point d'accès

A ce point du tutoriel, votre Pi doit avoir accès à Internet (via sa connexion filaire) pour poursuivre l'installation.

Après le traditionnel apt-get update, les paquets hostapd et dnsmasq seront installés.

Pour éviter tout conflit dans l’initialisation de hostapd avec systemD, il est nécessaire de supprimer complètement le hostapd déjà installé:

sudo apt-get remove --purge hostapd

Puis utiliser la commande suivante pour vérifier que hostapd soit effectivement supprimé du système.

sudo find /etc | grep hostapd

Installer les paquets des packages assurera aussi la création des fichiers d’initialisation

sudo apt-get install hostapd
sudo apt-get install dnsmasq

Le service sera démarré dès l’installation du package mais il sera encore nécessaire de modifier les paramètres.

Configuration de hostapd

Le fichier /etc/hostapd/hostapd.conf contient les paramètres de notre Access Point.

Nous devons y mettre:

RASP-PI-REMOTE-SCREEN-Install-02.png

De préférence:

  • channel - Canal WiFi sera différent de celui du routeur WiFi maison.
  • Passphrase - Mot de passe qui sera demandé pour se connecté sur le Point d'accès WiFi
  • ssid - le nom sous lequel le point d'accès s'annoncera (PiAP pour Pi Acces Point).

Le fichier /etc/default/hostapd contiendra la référence vers le fichier de configuration:

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

A partir d'un PC ou autre Raspberry-Pi, l'utilitaire iwlist détectera le signal PiAP plus fort que celui du routeur domestique si on est nettement plus proche du Pi que du routeur domestique.

sudo iwlist wlan0 scan|grep -E 'Address|ESSID|Channel'

Ce qui produit un résultat similaire à ceci:

RASP-PI-REMOTE-SCREEN-Install-03.png

Même si nous ne recevons pas encore d'adresse IP.

Nous pouvons également tester les réseaux présents avec wicd:

RASP-PI-REMOTE-SCREEN-Install-04.png

Il est également possible de vérifier les réseaux présents avec tablette ou smartphone avec l'utilitaire Wifi Analyzer. L'application sur Smartphone Android montre bien les 2 signaux.

RASP-PI-REMOTE-SCREEN-Install-05.png

Configurer le serveur DHCP du Pi

On remplacera le contenu, volumineux en commentaires, du fichier /etc/dnsmasq.conf par:

 interface=wlan0
dhcp-range=10.0.0.2,10.0.0.15,255.255.255.0,12h

Notre point d'accès ne distribue que quelques adresses IP.

Installation des services

L’initialisation de hostapd et dnsmasq sont faites lors de l’installation, notamment dans les scripts

/etc/init.d/hostapd
/etc/hostapd/ifupdown.sh

(On ne doit donc plus faire systemctl enable hostapd et sudo service hostapd start )

S’il fallait le faire manuellement, on utiliserait:

 systemctl enable hostapd
sudo service hostapd start
systemctl enable dnsmasq
sudo service dnsmasq start

En cas de malheurs, on peut démarrer:

sudo hostapd -dd -K -t /etc/hostapd/hostapd.conf &
sudo /etc/init.d/dnsmasq start /etc/dnsmasq.conf &

Note: /etc/init.d/dnsmasq est un script bash assez compliqué qui invoque l’exécutable de même nom /usr/sbin/dnsmasq

Tester le Point d'accès

Nous allons essayer de voir si le Pi fournit bien un signal WiFi et une adresse IP. Les tablettes et smartphones seront écartés à ce stade car se sont des systèmes très fermés.

A partir d'une autre machine Linux (ou autre Raspberry-Pi), la commande suivante nous indiquera la présence d'un signal WiFi

sudo iwlist wlan0 scan | grep -E 'Address|ESSID|Channel'

Après avoir connecté les différents appareils sur le point d'accès PiAP, nous pouvons consulter les éléments dans l'entourage.

La commande ip neigh liste les ordinateurs dans le voisinage, ce qui produit un résultat similaire à ceci:

10.0.0.10 dev wlan0 lladdr 34:12:34:34:7f:0f DELAY
10.0.0.7 dev wlan0 lladdr 50:98:f8:1e:76:6a STALE
10.0.1.2 dev eth0 lladdr d8:cb:8a:f0:58:f2 REACHABLE

Dans le cas présent, l'adresse MAC 34:12:34:34:7f:0f correspond à la tablette, cette dernière dispose de l'adresse IP 10.0.0.10. Cette adresse est bien dans le range DHCP du point d'accès PiAP.

Si tout ce passe bien, vous pourrez utiliser RealVNC/TightVNC pour visualiser le Bureau du Rasoberry-Pi depuis la tablette (voir détail plus loin) sur WLAN0.

Autre commande utile:

  • wicd
  • Consulter le log de boot de PiAP avec la commande
    tail -f /var/log/syslog

Accès Internet

En ajoutant une clef USB WiFi, le Raspberry-Pi pourra également contacter le routeur domestique (et accéder à Internet).

Cette clé WiFi prendra normalement l’interface wlan1.

Elle sera initialisé à l'aide de la commande:

sudo dhcpcd wlan1

Il faudra remplacer l'adresse nameserver dans /etc/resolv.conf par l'adresse du routeur domestique. Par exemple

nameserver 192.168.1.1

RASP-PI-REMOTE-SCREEN-Install-10.png

Dans l'état actuel des choses:

  • Le Raspberry-Pi accède au routeur domestique (donc Internet) par l'intermédiaire de wlan1 (la clé WiFi)
  • La tablette accès au Raspberry-Pi par l'intermédiaire de wlan0 (WiFi interne)

La photo ci-dessous présente la tablette affichant le bureau du Raspberry-Pi (accès via le point d'accès sur wlan0) . Sur ce bureau, il est possible de voir le rendu d'une page du site shop.mchobby.be. Le Pi peut donc également avoir accès à Internet via son interface wlan1 (qui elle contacte le réseau WiFi Local).

RASP-PI-REMOTE-SCREEN-Install-11.png

Terminal Virtuel

Pou pouvoir accéder au Bureau du Pi depuis la tablette, il faut:

  1. installer un serveur de terminal virtuel sur le Raspberry-Pi
  2. installer un client terminal virtuel sur la tablette

Raspbian installe depuis peu le serveur RealVNC (Virtual Network Computing) par défaut. Le client est gratuit sur iPad et tablettes Android.

Pour cette utilisation sur un iPad, nous allons utiliser TightVNC server (gratuit également comme serveur mais payant à environ 4 euros sur l'iPad). Celui ci se présente sous le nom de nom Remote Ripple. Ce dernier présente les avantages suivants:

  • meilleur contrôle de la définition d’écran
  • un bloc souris beaucoup plus facile à utiliser (question de goût..., mais on peut toujours utiliser une souris sans fil ou un clavier RiiMini sur le Pi)

Installation de tighvncserver

Nous allons commencer par installer le serveur VNC sur notre Raspberry-Pi.

sudo apt-get install tightvncserver

Il faut définir une un mot de passe (passphrase) en démarrant le serveur manuellement la première fois. Ce mot de passe sera demandé à chaque client voulant se connecter en VNC.

Il y a deonc deux mots de passe à retenir:

  • celle de l’Access Point
  • celle du VNC server.

Pour démarrer manuellement le serveur, vous pouvez saisir la commande suivante:

/usr/bin/tightvncserver :1 -geometry 1600x800

Le :1 signifie que l’on demande le "display virtuel 1" (écran virtuel 1) qui sera sur la port TCP 5901. Sachez qu'il est possible de définir plusieur serveurs avec des résolutions différentes.

Pour démarrer le serveur tighVNC au boot, on définira un fichier service nommé tightvncserver.service dans le répertoire /etc/systemd/system

Contenant les informations suivantes:

RASP-PI-REMOTE-SCREEN-Install-20.png

Puis il faudra saisir les commandes suivantes pour activer le service

sudo chmod 0655 /etc/systemd/system/tightvncserver.service
sudo chown root:root /etc/systemd/system/tightvncserver.service

sudo systemctl enable tightvncserver

Installer le client

L'installation du client se fait sur votre tablette. Comme cette dernière est connectée sur le réseau point d'accès du Pi (PiAP), vous pourrez alors lancer le client et vous connecter sur le serveur tightvncserver (à l'adresse 10.0.0.1 puisqu'il est sur le point d'accès)

Référence

Nombreuses références sur ce sujet.

  1. Un script à peu près identique s’applicant à la dernière version de Raspbian

2. Bien entendu la référence officielle est Setting up a Raspberry Pi as a WiFi access point. Avec un pdf de 34 pages (pdf, anglais) 3. hostapd: IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator


Tutoriel généreusement proposé par Mr. Orlans