4G vers RJ45 via PI3B+

Bonjour,

Je vais ne plus avoir de box pendant quelques jours, je souhaite donc utiliser temporairement et par intermittence mon partage de connexion 4G de mon smartphone pour mon réseau local RJ45.
J’envisage de me connecter en WIFI avec un PI3B+ sur mon smartphone puis de ressortir sur le RJ45 du PI3 vers un switch qui est connecté à mon réseau local.

Pensez-vous que ce soit réalisable, si oui avec quel type de logiciel ? J’ai vu RaspAP sait-il faire ceci ? ou bien qq’un connait-il un tuto pouvant me guider ?

Merci bien.

hello,

la première étape c’est de paramétrer ton phone pour le « transformer » en box

ensuite installer avec un raspbian buster ( plus simple partir d’un système neuf sans éventuelles modifications )

en rajoutant le fichier ssh (vide) et le fichier wpa_supplicant.conf dans la partition boot de la sd puis en démarrant ( sans cable ethernet )
( bien sur le ssid et le psk peuvent être celui d’une box ou du phone - a noter que les deux peuvent cohabiter d’abord celui de la box, puis celui du phone )

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=FR

network={
        ssid="labox"
        psk="FFAAXXXXXXXXXXXXX"
}

network={
        ssid="lephone"
        psk="YYYYYYYYYYYYYYYY"
}

le paramétrage du système se fait via ssh si on est connecté a la box sinon par le phone il faudra brancher écran et clavier au Rpi et le faire « directement » sur le Rpi.

une fois le système paramétrer ( password, region, MAJ, etc.) et quand on redémarre, la commande ifconfig wlan0 doit t’afficher l’ ip de la box ( ou celle offerte par le phone ) ( ds l’exemple 192.168.43.5 )

En faisant route -n dans un terminal tu dois avoir :

Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
default         192.168.43.1    0.0.0.0         UG    303    0        0 wlan0
192.168.43.0    0.0.0.0         255.255.255.0   U     303    0        0 wlan0

le wlan0 ( l’interface wifi ) du Rpi a donc une adresse ip qui se connecte via la passerelle par défaut (192.168.45.1) la box ou le phone.

et la c’est le drame… enfin pour le moins ça se complique ! :wink:

on va donné une adresse fixe a l’eth0 du Rpi en mettant a la fin de dhcpcd.conf son adresse:

sudo vi /etc/dhcpcd.conf

# adresse fixe eth0
interface eth0
static ip_address=192.168.2.1

ensuite on va dire au kernel d’activer le forwarding :

sudo vi /etc/sysctl.d/routed-ap.conf

# activer forwarding
net.ipv4.ip_forward=1

ensuite il faut installer le paquet dnsmasq et en option nmap

puis :

sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.ori
sudo vi /etc/dnsmasq.conf

et on colle a la fin du fichier :

# dnsmasq pour phone
interface=eth0 # l’interface ou sera branché le switch pour le réseau local
dhcp-range=192.168.2.2,192.168.2.20,255.255.255.0,24h # la plage d’adresses de ton réseau local, le broacast,la durée du lease
dhcp-option=3,192.168.2.1 # l adresse ip de eth0 sur le Rpi la passerelle pour l’accès au réseau et à l’internet
domain=maison # le nom du domaine local
address=/gw.maison/192.168.2.1 # le nom du Rpi (gw dans le domaine maison ) en fait ta nouvelle box …

on protéger un peu le réseau avec ufw et on rend « masquered » l’interface wlan0 …

sudo apt install ufw

modifier la règle du forwarding de DROP a ACCEPT:

sudo vi /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

redire a ufw de mettre le forward ds le noyau ( sans doute pas utile on l’a déja fait mais bon ! )

sudo vi /etc/ufw/sysctl.conf

net/ipv4/ip_forward=1

et rajouter a la fin du fichier sudo vi /etc/ufw/before.rules apres le dernier COMMIT

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

les lignes suivantes

# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic through wlan0
-A POSTROUTING -s 192.168.2.0/24 -o wlan0 -j MASQUERADE

# End each table with the 'COMMIT' line or these rules won't be processed
COMMIT

cette règle va permettre au réseau local (192.168.2.0/24) d’accèder a l’interface wlan0 donc a internet.

on rend ufw actif par sudo ufw enable ( pour l’arreter et l’empecher de redemarrer au prochain reboot : sudo ufw disable )

comme par défaut la policy de ufw est tout interdire en entré, tout autorisé en sortie il faudra ajouter des règles pour permettre au poste du réseau de prendre leur adresse auprès du dhcp et acceder au dns:

sudo ufw allow in on eth0 to any port 67 proto udp
sudo ufw allow in on eth0 to any port 53 proto tcp
sudo ufw allow in on eth0 to any port 53 proto udp

sudo ufw deny in on wlan0 to any port 67 proto udp
sudo ufw deny in on wlan0 to any port 53 proto tcp
sudo ufw deny in on wlan0 to any port 53 proto udp

pour obtenir :

pi@raspi-phone:~ $ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), allow (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
  
67/udp on eth0             ALLOW IN    Anywhere                  
53/tcp on eth0             ALLOW IN    Anywhere                  
53/udp on eth0             ALLOW IN    Anywhere                  
53/udp on wlan0            DENY IN     Anywhere                  
67/udp on wlan0            DENY IN     Anywhere                  
53/tcp on wlan0            DENY IN     Anywhere                  
53/udp (v6) on wlan0       DENY IN     Anywhere (v6)             
67/udp (v6) on wlan0       DENY IN     Anywhere (v6)             
53/tcp (v6) on wlan0       DENY IN     Anywhere (v6)

le sudo nmap 192.168.2.0/24 te donne les ports ouverts sur les postes du réseau local ( sudo nmap -sU 192.168.2.0/24 pour les ports udp )

et voilou ! j’espère que j’ai pas oublié trop de trucs :roll_eyes:

sources:
ufw :
. https://doc.ubuntu-fr.org/ufw
. http://manpages.ubuntu.com/manpages/trusty/man8/ufw-framework.8.html

:hammer_and_wrench: raspberry pi 4, raspbian (2020-08-20-raspios-buster-armhf.img)

1 J'aime

Bonjour, et merci @bof pour cette réponse super complète. Je ne m’attendais pas à autant de précisions, c’est un vrai tuto !

Bon, ben maintenant, il ne me reste plus qu’a me m’échauffer les doigts pour tapoter tout ça sur mon clavier. Dès que j’ai la tête au calme et un peu de temps, je m’y colle. Je vous ferais un retour.

A+

Je ne sais pas si ça vient de mon FAI ou d’un problème avec dnsmasq mais autant ça fonctionne avec ma box ( connexion wifi du Rpi « router » et partage avec un sous réseau par eth0 via un switch )
autant avec un huawei et un forfait pas cher je galère pour obtenir une résolution de nom. via un DNS.
donc par d’accès web. il me donne quant même une ip … mais sur le web je ne ping que leur passerelle.

comme je n’ai pas accès au contrat je ne sais même pas si c’est orange ou tosh …

bref je n’ai pas pu valider si cette façon de paramétrer permettait la connexion d’un phone …

PS : en fait si ça marche aussi en passant par le phone; je n’avais pas activé les « données mobiles » dans les paramètres du phone :roll_eyes:

pour une meilleur lecture du « tuto » j’ai créé une page « old school » sur :
http://rpi.noirpatin.eu/rpi_box4g.html