Comment configurer IPTABLE pour rediriger wlan0 et eth0 vers wwan0

Bonjour à tous,

Je suis en train de suivre ce tuto Setting up a Raspberry Pi as a routed wireless access point pour faire de mon Raspberry un acces point.

La particularité de mon réseau, est qu’internet est fourni par wwan0 (et non pat eth0) et le traffic entrant par wlan0 et/ou eth0 doivent pourvoir atteindre internet via wwan0. Et par la même occasion DHCPCD doit pouvoir fournir une adresse IP à wlan et eth0.

C’est pourquoi je m’interroge particulièrement concernant iptable

J’ai fais les première étape et actuellement je suis au chapitre et là, je bloque car ma configuration est légèrement différente

Enable routing and IP masquerading

This section configures the Raspberry Pi to let wireless clients access computers on the main (Ethernet) network, and from there the internet. NOTE: If you wish to block wireless clients from accessing the Ethernet network and the internet, skip this section.

La différence, mon raspberry n’est pas connecté au LAN pour accéder à Internet. J’ai installé un module 4G (un HAT) sur le Pi, qui donne accès à internet au Pi
Le port LAN (soit eth0) a un autre objectif. Un autre Raspberry est connecté au LAN (eth0) et qui doit lui avoir accès à internet via le premier C’est très important.

Il faut que eth0 and wlan0 puisse accéder à internet via wwan0

Donc, ma configuration doit légèrement différer à ce tuto, et par crainte de devoir tout refaire mon install, je demande votre avis avant de continuer.

J’ai créé le fichier /etc/sysctl.d/routed-ap.conf et j’ai ajouté la ligne

net.ipv4.ip_forward=1

qui comme je l’ai compris, va permettre au port de communiquer ensemble, Q1: mais dans quelle direction?

Enabling routing will allow hosts from network 192.168.4.0/24 to reach the LAN and the main router towards the internet

Q2: Mais est-ce aussi possible d’atteindre wwan0?
Si non, comment faire la modification?

This process is configured by adding a single firewall rule in the Raspberry Pi:

Q3: Mais vu que je souhaite que le traffic entrant soit redirigé vers wwan0, ne devrais-je pas faire ceci, lors de la prochaine étape?

sudo iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE

à la place de

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
???

Concernant le configuration de dnsmasq, je dois saisir ceci pour que le DHCP fournir une IP au client Wireless

interface=wlan0 # Listening interface
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
                # Pool of IP addresses served via DHCP
domain=wlan     # Local wireless DNS domain
address=/gw.wlan/192.168.4.1
                # Alias for this router

Q4: Si je veux qu’il fournisse aussi une adresse dynamique au client eth0, donc à mon deuxième Pi, je pourrais ajouter ceci?

interface=eth0 # Listening interface
dhcp-range=192.168.4.21,192.168.7.22,255.255.255.0,24h
                # Pool of IP addresses served via DHCP
domain=eth     # Local wireless DNS domain
address=/gw.eth/192.168.4.1
                # Alias for this router

Q5: Est-ce bien juste?
J’ai vraiment un gros doute concernant ce passe (domain / address)

domain=eth     # Local wireless DNS domain
address=/gw.eth/192.168.4.1
                # Alias for this router

En espérant que vous pourrez m’aider et m’éclaircir rapidement :slight_smile:
Belle soirée

hello,

sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
wlan0 pas wwan0 (?)
ou
sudo iptables -t nat --A POSTROUTING -s 192.168.4.0/24 -o wlan0 -j MASQUERADE
si tu veux limiter le nat au sous réseau 192.168.4.0/24

tu trouveras comment transformer ton raspberry en router 4G ici :

ce tuto utilise ufw plus simple a mettre en œuvre que des règles iptables « brut »…

Hello,
C’est intéressant, je vais voir, mais à première c’est pas exactement ce que je dois faire.
D’après ce que je peux comprendre dans ce tuto, c’est le smartphone qui est connecté à wlan0 du Raspberry. et le Raspberry va faire office de routeur au swicth.

Mon besoin va pas dans autre sense. J’ai un chapeau 4G connecté au Raspberry et il fourni accès à internet via wwan0. Il ne me semble pas que ton tuto fasse allusion à wwan0

En plus de cela, mon smartphone qui sera connecté, doit pouvoir accèder au reaspberry mais pas forcément à internet. Mon deuxipme Raspberry connecté au port ethrnet doit absolument pouvoir accèder à internet via wwan0 et surtout pas via wlan0. Mais je vais regarder car ca me semble une bonne source d’inspiration. Merciiii

En fait, je viens d’observer un truc en écrivant ce dernier message.
Je résume mon besoin.

  1. eth0 doit absolument accèse à internet via wwan0
  2. wlan0 doit me permettre d’accèder à mon raspberry, mais surtout pas à internet via wwan0, car il va me pomper ma carte SIM prempay :slight_smile::slight_smile:

C’est la raison pour laquelle je voulais mettre un hotspot comme décris ici

et je pense en effet que

sudo iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE

est la bonne commande.

Maintenant, je suis un peu confu, car j’ai trouvé aussi ceci tuto Share wwan0 connection to LAN qui utilise le même matériel que moi. Ce dernier tuto n’utilise pas de hotspot mais il fait tout dans /etc/network/interfaces alors que ce fichier indique

#Please note that this file is written to be used with dhcpcd
#For static IP, consult /etc/dhcpcd.conf and ‹ man dhcpcd.conf ›

Donc je me demande qu’est-ce qui est le plus viable et le plus à jour.

si j’ai bien compris en mettant
sudo iptables -t nat -A POSTROUTING -s 192.168.4.0/25 -o wwan0 -j MASQUERADE

seules les adresses de 192.168.4.1 a 192.168.4.127 trouveront le « chemin » vers wwan0
donc si tu donne au wlan0 une adresse au dessus des 192.168.4.128 wlan ne devrait pas être « nater » vers wwan0…
enfin j’espère lol ( chez moi il commence à faire un peu tard :wink: )

source : Calculateur de Masque IPv4

Bonjour,
J’ai refais mon job et j’arrive à un truc de bien, mais le problème est que depuis mon deuxième Pi, qui reçoit bien une IP du premier, n’arrive pas à pinguer google, via le premier Pi.

Pour résumer.
Sur mon premier Pi, j’ai fait cette installation, jusqu’au chapitre " Configurer votre Raspberry en un WiFi hotspot". Ca marche très bien. Mon Pi arrive établir une connexion et pinguer ww.google.ch

Sur mon deuxième Pi, j’ai fait cette installation et ca fonctionne très bien quand il est connecté au router de ma maison.

Ensuite sur mon premier PI, j’ai suivi un turorial Share wwan0 Connection To LAN (je mets le lien plus bas). J’ai ensuite connecté mes deux PI via le port ethernet et le premier fourni bien une adresse IP au deuxième.

Le premier peut pinguer le deuxième. Le deuxième peut pinguer le premier. Je peux aussi ssh les deux dans un sense ou de l’autre.

Le problème est que depuis le deuxième, je ne peux pas pinguer www.google.ch.

Voici le résultat du ping

pi@iotloragateway:~ $ ping www.google.ch
PING www.google.ch (172.217.168.35) 56(84) bytes of data.

Puis, plus rien, pas de retour. Je dois appuyer sur les touche ctrl+C pour retrouver mon prompt.

Avez-vous une idée ce qu’il se passe et qu’est-ce que j’ai manqué de faire pour que le deuxième puisse correctement établir une connexion à un serveur distant en passant par le premier qui a un HAT 4G, via les ports eth0, puis via eth0 et wwan0 du premier?

Merci pour vos lumières car je suis dans une impasse et je peine vraiment à trouver le support
Milles mercis

Voici le lien sur le tuto Share wwan0 Connection To LAN

En espérant que vous pourrez m’aider à trouver le binz…

sur ce deuxième rpi il manque peut être une défault route…
si oui, peut être en ajoutant

dhcp-option=3,192.168.4.1 

dans le dnsmasq.conf

Merci bof d’être là :slight_smile:

Je vaus regarder ceci. En lisant ceci je me demandais si je devais aussi faire ceci sur le premier

sudo iptables -A FORWARD -i wwan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT  
sudo iptables -A FORWARD -i eth0 -o wwan0 -j ACCEPT

en plus de
sudo iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE

Je ne connais rien en iptable

Je me demande un truc.
Comment je fais pour savoir si le ping passe par eth0 ou wlan0?
Parce que s’il passe par wlan0… ca pourrais être le problème.
Comment puis-je faire pour que toutes les requetes passe par eth0???
(je ne peux pas désactiver wlan car si non je ne peux plus l’accèder en ssh

Je ne peux pa faire ceci

dhcp-option=3,192.168.4.1

sur mon deuxième, car dnsmasq n’est pas installé, J’ai essayé sur le premier et CA MARCHE, mais pendant 2sec :slight_smile: Depuis plus.

ping -I eth0

pour le reste l’utilisation de ufw est plus simple que directement iptables ( il gère tout seul les
–state RELATED,ESTABLISHED et autres joyeusetés )

idem pour dnsmasq par rapport à bind et dhcpd …

Voilà, j’ai solutionné mon problème!!!

Le message précédent était bien la solution, mais il reste un tout petit problème.
J’ai mis à jour cet article, en bas https://eco-sensors.ch/router-wifi-4g-hotspot/#eth0

Concernant le problème que j’avais avec ma passerelle qui n’arrivait pas à être vue par TTN, malgré le fait que la passerelle arrivait à oinguer google, je mets la solution ici https://eco-sensors.ch/iot-lora-gateway-pour-raspberry/#4g. Il faudra que je regarde comment optimiser ceci.

Ceci étant dit, il me reste un autre problème. Sur mon premier Pi qui a un module 4G
j’ai constaté que malgré ceci la configuration (voir le premier lien, ci-dessus), un petit problème se passe après le boot (mais pas après le reboot)

Quand je retire l’alimentation et je j’alimente, ifconfig , m’affiche ceci (pas d’adresse IP)

pi@bud1:~ $ ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether b8:27:eb:45:16:89  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Boucle locale)
        RX packets 84  bytes 6924 (6.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 84  bytes 6924 (6.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.3.141.1  netmask 255.255.255.0  broadcast 10.3.141.255
        inet6 fe80::be66:4d53:2eab:963b  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:10:43:dc  txqueuelen 1000  (Ethernet)
        RX packets 7507  bytes 9250594 (8.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4075  bytes 856020 (835.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wwan0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.81.223.205  netmask 255.255.255.252  destination 10.81.223.205
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 3964  bytes 679031 (663.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7324  bytes 9134140 (8.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

si je le reboot, tout devient OK

pi@bud1:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.3.142.1  netmask 255.255.255.0  broadcast 10.3.142.255
        inet6 fe80::f551:1b16:4253:fabc  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:45:16:89  txqueuelen 1000  (Ethernet)
        RX packets 84  bytes 14238 (13.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 37  bytes 4174 (4.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Est-ce que ca serait lié à ma configuration? aurais-je manqué un truc comme

allow-hotplug eth0 

(j’avais vu ceci dans /etc/network/interfaces)

Milles merciiiiiisssss