Publié le 8 janvier 2020 - par

Partage d’une connexion 4G Ethernet + Wifi (Episode2)

L’article précédent sur le partage de connexion 4G via le port Ethernet du Raspberry Pi 4 a apparemment bien plu… Des lecteurs m’ont envoyé des demandes pour ajouter le WiFi au partage. Voici une solution, utilisant un Acces Point (Point d’accès ou AP) hostpad pour partager la connexion.

Niveau d'accès pour ce tutoriel : Avancé

Cliquez pour plus d’information sur les niveaux

Partage d’une connexion 4G en Ethernet et en Wifi

Remarque
S’il ne s’agit que de partager la 4G en WiFi, votre smartphone doit pouvoir le faire directement en activant le point d’accès mobile.

Pour ceux qui démarreraient par cet article, je vais donner la marche à suivre, sachant que certaines explications sont déjà présentes dans l’article précédent, je vous conseille de commencer par le premier article, puis de modifier votre installation en fonction de celui-ci…

Objectif de cet article

Ce montage est plutôt destiné à fournir un accès Internet à un endroit dépourvu d’ADSL ou de fibre optique. Encore faudra-t-il que la 4G soit accessible. Ce pourrait être le cas d’une maison à la campagne, pas connectée du tout, ou d’un camping-car. Il devient possible de partager la connexion entre plusieurs utilisateurs.

Qu’est-ce qui change ?

Pour accéder au partage via le WiFi, il va falloir activer le port WiFi du Raspberry Pi. Cela signifie d’abord lui donner une adresse. J’ai choisi de différencier le réseau filaire (10.0.0.0/24) du réseau WiFi (10.0.10.0/24).

Pour permettre aux appareils d’accéder en WiFi au Raspberry Pi, j’ai choisi un classique : hostAP souvent mis en œuvre dans ce cas. Il faudra l’installer et le configurer.

Il faudra donner une adresse statique à wlan0 (10.0.10.1) dans /etc/dhcpcd.conf, ajouter cette interface à la liste des interfaces lues par le DHCP (/etc/default/isc-dhcp-server),  et créer un subnet dans le fichier de configuration du DHCP (/etc/dhcp/dhcpd.conf), pour que celui-ci distribue des adresses sur cette interface.

Dans les options, l’adresse de passerelle et l’adresse du DNS seront toutes deux à 10.0.10.1.

Il faudra aussi modifier iptables pour que les paquets soient routés vers cette nouvelle interface. On en profitera pour améliorer un peu la sécurité.

Enfin, au démarrage, il arrivait souvent que le DHCP soit en erreur lors de son lancement. La cause est que le serveur démarre AVANT que les adresses IP aient été attribuées aux interfaces. Dans un premier temps j’ai demandé que le service démarre après le réseau, mais apparemment wlan0 pose encore problème et très souvent n’a pas d’adresse lors du démarrage du serveur DHCP. Comme ce point d’accès n’est pas destiné à être démarré souvent (en principe on le démarre et il reste en fonction pendant des heures), j’ai choisi de retarder le démarrage du serveur DHCP de 30 secondes, le temps que tout ça se mette en place.

Du coup si vous essayez de vous connecter tout de suite après le démarrage du Raspberry Pi, vous n’obtiendrez pas d’adresse IP… Il faudra juste être un peu patient(e) lors du démarrage 🙂

Ce qu’on va mettre en place

Voici le synoptique de ce qui va être mis en place sur notre Raspberry Pi.

Installation de hostAP

Comme toujours pensez à mettre votre système à jour avant de commencer à installer.

Mettre une adresse fixe à l’interface wlan0

et modifier la fin du fichier avec

Le nohook permet de ne pas prendre en compte le wpa_supplicant s’il y en a un.

Modifier la configuration DHCP

On va rendre le DHCP “autorité” sur ce réseau et ajouter le subnet pour le wifi

authoritative;  Supprimez le # du début de cette ligne

Puis rendez vous à la fin du fichier et ajoutez :

Connecter le DHCP à wlan0

Pour que le serveur DHCP écoute sur des interfaces, il faut les spécifier dans /etc/default/isc-dhcp-server : ouvrez ce fichier avec nano

Modifiez la ligne ci-dessus pour que les deux interfaces soient écoutées.

Modifier la configuration de hostAP

ouvrir le fichier hostapd.conf

et écrire le contenu du fichier

Vous remplacerez le SSID et la passphrase par les vôtres.

Charger la configuration de hostAP au démarrage

Ouvrir le fichier de configuration

Remplacer la ligne:

Par la ligne suivant:

Modifier la configuration du DNS

Il faut indiquer au DNS qu’il doit résoudre les noms pour les deux réseaux connectés sur eth0 et wlan0.

Ouvrez le fichier /etc/bind/named.conf

Modifiez le comme suit

Ajuster les iptables

Dans la version précédente, les paquets ne subissent aucun filtrage. Tout ce qui arrive via le modem USB ou l’interface eth0 est routé sans arrière pensée. Ce serait bien de n’autoriser le transit que pour les paquets dûment autorisés.

Si vous aviez déjà des iptables, supprimez-les

puis saisissez en ligne de commande

Comme précédemment on va enregistrer cette configuration iptables :

Créer un service pour recharger les iptables

Créer un fichier pour le service iptables

Saisir dans ce fichier le texte suivant

Ce fichier sera exécuté par systemd lors du démarrage pour mettre les iptables en place (merci Grv pour la suggestion de modif 🙂 )

Il faut aussi activer le service que vous venez de créer.

Vous pouvez vérifier que les iptables ont bien été chargées avec

et

Attention
Si vous aviez configuré les iptables d’après le premier article, supprimez la ligne
/home/pi/reseau.sh
dans le fichier /etc/rc.local

Retarder le démarrage du DHCP

Comme indiqué au début de l’article, j’ai eu des misères avec le démarrage du DHCP qui intervenait avant que les interfaces prennent une adresse IP.

Le fait de rajouter After=network-online.target n’a pas suffi. J’ai retardé le démarrage de 30s. Faites une copie du service DHCP actif vers le dossier de systemd où nous allons pouvoir le modifier.

Ouvrez le fichier du service DHCP

Modifiez le comme suit :

Réinstallez le système pour que les modifications soient prises en compte

Redémarrez le Raspberry Pi pour prendre en compte toutes les modifs et attendez que le DHCP démarre. Vous pouvez tester…

Une distribution pour tester

Je vous propose de télécharger une image déjà configurée suivant cet article. Copiez la sur une carte microSD avec Etcher ou Win32DiskImager. Démarrez l’OS puis lancez raspi-config

pour augmenter la taille de la partition Linux à la place disponible sur la carte microSD

7 Advanced Options > A1 Expand Filesystem.

Ca devrait vous donner une installation opérationnelle. Si vous testez merci de mettre un commentaire ci-dessous pour donner votre avis.

Conclusion

Avec ce projet on met en œuvre beaucoup de connaissances dans différents domaines. On est loin du Raspberry Pi car tout ce qu’on vient de faire, on aurait pu le réaliser sur un PC sous Debian…
Si tout va bien, vous aurez des choses qui ne fonctionne pas. Je dis ça parce que si ça “tombe en marche” vous n’aurez rien appris 🙂 Le but du jeu c’est de trouver pourquoi ça ne fonctionne pas. Utilisez la doc, les Wiki, les moteurs de recherche… concernant les serveurs, l’AP…

Commencez par les bases. Si vous ne comprenez pas comment fonctionne le réseau ou les services DNS ou DHCP, vous avancez en terrain miné. Pour pouvoir dépanner il faut comprendre comment ça fonctionne.
Si vous me contactez en me disant j’ai suivi le tuto et ça ne marche pas… Bin … je ne saurai pas pourquoi, ni ce que vous avez fait ou pas fait. Il suffit d’oublier un ; pour qu’un fichier de config soit défectueux. En général il y a des commandes qui permettent de vérifier ces fichiers de config. Utilisez les… Consultez les journaux d’erreurs système et des applis… Si vous ne savez pas de quoi je parle, c’est par là qu’il faut commencer 😉

Et puis cherchez, recommencez… Si ce qui vous intéresse c’est juste la recette, cet article n’est pas pour vous. Achetez un routeur, vous aurez une belle page web pour le paramétrer et pas des fichiers texte (pas sexy du tout). Mais (et je suis désolé d’insister) si vous ne comprenez pas comment ça fonctionne “vraiment” vous ne vous en sortirez pas.

Voilà, voilà… prenez votre temps, découvrez, essayez, testez. Quand ça ne fonctionne pas c’est bon signe, ça veut dire que vous allez apprendre quelque chose 😀

Les tests ont été fait avec un Samsung S8 et un S4. Je n’ai pas d’iPhone et je ne peux pas dire si ça fonctionne ou pas. Après, si Apple veut bien me fournir un iPhone je peux faire les tests, bien entendu 🙂

ps : j’ai même connu des formateurs qui donnaient des TP avec des erreurs pour obliger les techniciens à chercher… je ne dirai pas de nom !

Sources

 

iptables et systemd

Share Button

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

14 réflexions au sujet de « Partage d’une connexion 4G Ethernet + Wifi (Episode2) »

  1. Edouard

    Bonjour,
    Un grand merci pour ce partage !
    J’ai testé et l’ai adopté, tous fonctionne parfaitement sur mon Raspberry 4, mode ethernet et wifi.
    Merci encore et bravo.

    Répondre
  2. dyox

    Merci François et meilleurs voeux !
    Pour ceux qui sont curieux, on peut avoir le même résultat avec OpenWRT.
    Après, c’est sûr, c’est beaucoup moins didactique.

    Répondre
  3. Artemus24

    Salut à tous.

    Beau travail mais il y a des manques, comme par exemple déclarer un nom d’hôte sous bind9.
    Sinon, cela ne sert à rien de l’utiliser.

    Je constate que hostapd fonctionne très bien avec une seule interface.
    Mais quand on en utilise deux, je n’arrive pas à me connecter sur la seconde et je ne sais pas pourquoi.
    (wlan0 & wlan1) ou bien (wlan1 & wlan0).

    Qui est à l’origine de ce sujet ?

    @+

    Répondre
  4. Thierry

    Bonjour,
    Merci pour le partage.

    Il ne manque plus qu’à ajouter le “wifi extender” avec le tethering et la boucle est bouclée.

    Il y a des chances que vous nous fassiez une page sur ça ?

    Sinon merci, c’est très utile.

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      qu’appelez vous WiFi extender avec le tethering ?
      Pour moi le Wifi extender sert à relayer le WiFi d’une box ou d’un routeur
      pour augmenter la distance d’utilisation…
      cordialement
      francois

      Répondre
      1. Thierry

        Bonjour,
        Oui, l’idée serait d’agréger gâce au raspberry pi, une connexion wifi existante plus le tethering.
        Et pourquoi pas même rajouter un modem 3G/4G avec tout ça 😀
        Très utile quand on n’a pas de fibre, pas d’abonnement internet mais juste des forfaits mobiles data.
        Merci

        Répondre
  5. F5SWB

    Bonjour,

    L’image fonctionne sans problème. Le wifi est disponible.
    Néanmoins avec un iphone 7, j’ai “accès internet indisponible”.

    A suivre si quelqu’un aurait une piste.
    Cordialement.
    Dimitri.

    Répondre
  6. matteo

    I followed both guides and managed to make everything work.

    I wanted to test your distribution at the end of this article, but I can’t find the data for access raspberrypi login and password

    is it possible to have them?

    Répondre
  7. Matteo Piva

    Hello.
    Ok file downloaded from the site and started, but once logged in and connected the phone via USB and started the thetering, connected the network cable to the Raspberry and the PC, the PC does not connect and does not find the connection in the ethernet

    Répondre
    1. François MOCQ Auteur de l’article

      Hello Matteo
      I’m sorry it’s not easy to understand what’s going on remotely.
      That’s why this article is classified as “Advanced” because users need to be able to understand what’s going on. Does your phone work when sharing on a PC? Which brand (iphone = problems doesn’t work)? etc
      You have to go through the process step by step and try to locate where the fault is for you. I’ve had several feedback from people who have successfully installed the image and I use it in the workshop regularly… keep me informed.
      regards
      françois

      Répondre
  8. Matteo

    Avviato immagine scaricata, collegato telefono Android con USB e attivato tethering usb, dalla presa ethernet mi collego a uno switch Lan e poi dal Switch a un pc con Windows 10, tutto tramite cavo.
    Ma non c’è connessione, sul Raspberry se faccio if config hi una serie di comandi ma non riesco a condividere la foto qui.

    Image téléchargée démarrée, téléphone Android connecté avec USB et partage de connexion USB activé, à partir de la prise Ethernet, je me connecte à un commutateur Lan, puis du commutateur à un PC avec Windows 10, le tout via un câble.
    Mais il n’y a pas de connexion, sur le Raspberry si je le fais si je configure une série de commandes mais je ne peux pas partager la photo ici.

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP * Time limit is exhausted. Please reload CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.