Un peu de routage
Rédigé par lkiefer - - Aucun commentaireJ'ai configuré un Raspberry Pi 0 avec Octoprint pour contrôler une de mes imprimantes 3D1. Vu que cette imprimante est portable, si le Pi0 était configuré pour se connecter à mon réseau domestique je ne pourrais pas m'en servir ailleurs que chez moi. Le Pi0 est donc configuré en point d'accès: ce sont les ordinateurs qui se connectent à lui pour contrôler l'imprimante.
Réseau domestique | 192.168.0.0/24 |
Adresse box | 192.168.0.1 |
PC Portable | 192.168.0.10 |
Adresse Pi 4 | 192.168.0.100 |
Réseau Pi 0 | 10.0.0.0/24 |
Adresse Pi 0 | 10.0.0.1 |
Il y a quand même quelques petits inconvénients à ceci: Je ne peux pas connecter en même temps mon ordinateur à mon réseau domestique (pour accéder à Internet) et à mon Pi0: il faut sans arrêt que je bascule entre les deux réseaux. Le Pi0 étant éloigné de mon PC portable (deux pièces les séparent), la connexion est très lente.
Je possède un Raspberry Pi 4 connecté à mon réseau domestique par câble. Il dispose d'une interface Wi-Fi inutilisée: l'idée est de m'en servir pour me connecter à mon Pi0. Pour cela je commence par configurer le fichier /etc/network/interfaces du Pi4:
allow-hotplug wlan0 iface wlan0 inet static wpa-ssid reseau_du_pi0 wpa-psk motdepasse address 10.0.0.254 netmask 255.255.255.0 broadcast 10.0.0.255
Les PC qui se connectent en Wi-Fi au PI 0 reçoivent une adresse par DHCP, ainsi qu'une passerelle par défaut (le PI lui-même). Je ne souhaite pas que le Pi0 soit la passerelle par défaut de mon Pi4, c'est pourquoi j'ai préféré configurer une adresse statique.
Si je pingue 10.0.0.1 depuis mon pi4, ça fonctionne! Mais ça ne fonctionne pas encore depuis mon PC. En effet le Pi0 est sur un autre réseau, mon PC va donc tenter de faire passer la connexion par ma box mais celle-ci ne connaît pas l'adresse 10.0.0.1.
La box de mon FAI étant un routeur, il faudrait lui ajouter une route statique pour lui demander de rediriger les paquets en destination de 10.0.0.1 (Pi0) vers 192.168.0.100 (Pi4). Mais cette possibilité n'est pas offerte par son interface d'administration. On va donc ajouter cette route directement sur le PC portable, avec cette ligne de commande:
sudo route add -host 10.0.0.1 gw 192.168.0.100
Maintenant que le Pi4 reçoit les connexion en destination du pi0, il faut encore lui dire quoi en faire. On va commencer par activer le routage, c'est à dire le transfert de paquets entre différentes interfaces réseau:
echo 1 > /proc/sys/net/ipv4/ip_forward
Pour que me routage persiste au redémarrage, il faut éditer le fichier /etc/sysctl.conf, et enlever le '#' devant la ligne net.ipv4.ip_forward=1.
Les paquets sont encore bloqués par le pare-feu. J'ajoute donc une règle pour laisser passer toutes les connexions en provenance du réseau domestique:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
Pour un peu plus de sécurité, je bloque les connexions en provenance du Pi0 (interface Wi-Fi):
iptables -A INPUT -i wlan0 -j DROP
Ces règles ne seront pas conservées après un redémarrage du Pi4. Pour les rendre persistantes, j'ai installé le paquet iptables-persistent.
Voilà, je peux surfer et surveiller mes impression en même temps! De plus mes Pi sont assez proches l'un de l'autre, la bande passante est également améliorée.
[1] Il parait qu'il ne faut pas faire ça; J'ai réduit le débit de la webcam, et pour l'instant ça marche.