Petit casse tête routage IPv4 sous Linux
Le
Ettore
Topologie
Il s'agit pour l'instant de mettre en place un réseau avec 3 postes.
- Un poste connecté à Internet. Nous l'appellerons par la suite
"Passerelle". Ce poste est sous Linux (Mandrake 9.1 installé sans
serveur X) et utilise Netfilter pour servir aussi de pare-feu. Il est
muni de 3 interface réseau (Modem Sagem F@st 800, ethernet vers mon
réseau filaire et ethernet vers "Routeur Wifi").
- Un poste que nous appellerons "Routeur Wifi". Ce routeur est muni de 2
interfaces réseaux, une interface en Ethernet 10MB (eth0) et l'autre
(eth1) en sans fil (802.11b). Ce poste est sous Linux (Debian Woody).
Pas de pare feu dessus.
- Un poste que nous appellerons "client Wifi". Ce poste est simplement
muni d'une interface sans fil. Il est sous Linux (Debian woody).
Objectif.
Permettre à "Routeur Wifi" et à "Client Wifi" d'accéder à Internet.
Bilan des ping.
- De "Passerelle" à "Routeur Wifi" ethernet : OK
- De "Passerelle" à "Routeur Wifi" wireless : OK
- De "Passerelle" à "Client Wifi" ethernet : KO
- De "Routeur Wifi" à "Passerelle" : OK
- De "Routeur Wifi" à "Client Wifi" : OK
- De "Client Wifi" à "Routeur Wifi" wireless : OK
- De "Client Wifi" à "Routeur Wifi" ethernet : OK
- De "Client Wifi" à "Passerelle" : KO
Adresses des interfaces.
Passerelle eth1 - IP : 10.59.59.10 - Netmask :255.0.0.0 - Broadcast :
10.255.255.255 - Network : 10.0.0.0 - Gateway :
Routeur Wifi eth0 - IP : 10.59.59.9 - Netmask :255.0.0.0 - Broadcast :
10.255.255.255 - Network : 10.59.59.10 - Gateway :10.59.59.10
Routeur Wifi eth1 - IP : 10.59.59.8 - Netmask :255.0.0.0 - Broadcast :
10.255.255.255 - Network : 10.0.0.0 - Gateway :
Client Wifi eth0 - IP : 10.59.59.1 - Netmask :255.0.0.0 - Broadcast :
10.255.255.255 - Network : 10.0.0.0 - Gateway :10.59.59.8
Remarques.
Les 2 interfaces du routeur appartiennent au même réseau. J'y tiens pour
une raison de simplification des règles au niveau de Netfilter sur la
"Passerelle".
Sur le "Routeur Wifi" dans /etc/network/options j'ai "IP_forward=yes"
Question
Après des journées de bricolage, je suis à court d'idée à explorer. L'un
d'entre vous aurait-il quelques idée de piste ? Ou des éclaircissements
à me demander ?
Merci
Ettore
Il s'agit pour l'instant de mettre en place un réseau avec 3 postes.
- Un poste connecté à Internet. Nous l'appellerons par la suite
"Passerelle". Ce poste est sous Linux (Mandrake 9.1 installé sans
serveur X) et utilise Netfilter pour servir aussi de pare-feu. Il est
muni de 3 interface réseau (Modem Sagem F@st 800, ethernet vers mon
réseau filaire et ethernet vers "Routeur Wifi").
- Un poste que nous appellerons "Routeur Wifi". Ce routeur est muni de 2
interfaces réseaux, une interface en Ethernet 10MB (eth0) et l'autre
(eth1) en sans fil (802.11b). Ce poste est sous Linux (Debian Woody).
Pas de pare feu dessus.
- Un poste que nous appellerons "client Wifi". Ce poste est simplement
muni d'une interface sans fil. Il est sous Linux (Debian woody).
Objectif.
Permettre à "Routeur Wifi" et à "Client Wifi" d'accéder à Internet.
Bilan des ping.
- De "Passerelle" à "Routeur Wifi" ethernet : OK
- De "Passerelle" à "Routeur Wifi" wireless : OK
- De "Passerelle" à "Client Wifi" ethernet : KO
- De "Routeur Wifi" à "Passerelle" : OK
- De "Routeur Wifi" à "Client Wifi" : OK
- De "Client Wifi" à "Routeur Wifi" wireless : OK
- De "Client Wifi" à "Routeur Wifi" ethernet : OK
- De "Client Wifi" à "Passerelle" : KO
Adresses des interfaces.
Passerelle eth1 - IP : 10.59.59.10 - Netmask :255.0.0.0 - Broadcast :
10.255.255.255 - Network : 10.0.0.0 - Gateway :
Routeur Wifi eth0 - IP : 10.59.59.9 - Netmask :255.0.0.0 - Broadcast :
10.255.255.255 - Network : 10.59.59.10 - Gateway :10.59.59.10
Routeur Wifi eth1 - IP : 10.59.59.8 - Netmask :255.0.0.0 - Broadcast :
10.255.255.255 - Network : 10.0.0.0 - Gateway :
Client Wifi eth0 - IP : 10.59.59.1 - Netmask :255.0.0.0 - Broadcast :
10.255.255.255 - Network : 10.0.0.0 - Gateway :10.59.59.8
Remarques.
Les 2 interfaces du routeur appartiennent au même réseau. J'y tiens pour
une raison de simplification des règles au niveau de Netfilter sur la
"Passerelle".
Sur le "Routeur Wifi" dans /etc/network/options j'ai "IP_forward=yes"
Question
Après des journées de bricolage, je suis à court d'idée à explorer. L'un
d'entre vous aurait-il quelques idée de piste ? Ou des éclaircissements
à me demander ?
Merci
Ettore

Poser une question


Dans ce cas ce n'est pas un routeur mais un bridge. Je ne sais pas comment
ça se configure sous Linux, mais en tout cas ce n'est pas pareil. Et il
n'est pas garanti que ça marche avec une interface Wi-Fi.
Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/
Marchera pas tout seul si vous voulez que votre réseau fonctionne avec
du routage IP (ce que suggère ip_forward=yes). La table de routage du
routeur WIFI ne doit pas être jolie-jolie avec plusieurs interfaces pour
la même destination.
Comme l'a écrit Jacques, ça ne peut marcher simplement et proprement que
si la machine "routeur WIFI" fonctionne non pas en routage IP (couche 3)
mais en pont ethernet-WIFI, l'équivalent d'un point d'accès/hub/switch
(couche 2).
Pour que ça fonctionne avec du routage simple et propre, je suggère :
- que les trois réseaux ethernet filaire, passerelle-routeur WIFI et
routeur WIFI-client WIFI aient des plages d'adresses distinctes ;
- que la passerelle par défaut de "client WIFI" soit l'adresse de
l'interface eth1 de "routeur WIFI" (ça c'était déjà fait) ;
- de créer sur la machine "passerelle" une route vers le réseau WIFI
ayant pour passerelle l'adresse d'eth0 de "routeur WIFI" afin que
"passerelle" sache comment atteindre "client WIFI" ;
- et ne pas oublier de "NATer" (IP masquerade) sur la machine
"passerelle" les plages d'adresses des réseaux devant accéder à
internet.
Je ne connais pas Netfilter, mais ton problème peut être résolu à l'aide de
iptables tout simplement. A condition biensûr de ne pas foutre tout le monde
sur le même sous réseau 10.0.0.0/8. Je remarque au passage que tu ne donne
pas les adresses de toutes tes interfaces, ca n'aide pas. Autre chose, l'une
des interface de ta passerelle est inutile, elle t'oblige à définir 3 sous
réseaux au lieu de 2.
Une fois que toute les adresses de tes machines auront été reconfigurée de
façon à s'inclure dans un sous réseau particulier, tu n'a plus qu'a
configurer la table de routage de la passerelle pour atteindre le sous
réseau dans lequel se trouve le client wifi, iptables pour les règle de fire
wall et la translation IP (ip masquerade) et le tour est joué.
par exemple avec 4 sous-réseaux de 62 machines maximum chacun:
réseau filaire : 10.59.59.0/26 plage de 10.59.59.1 à 10.59.59.62
réseau passerelle - wifi : 10.59.59.64/26 plage de 10.59.59.65 à
10.59.59.126
réseau wifi : 10.59.59.128/26 plage de 10.59.59.129 à 10.59.59.190
Si l'adresse du routeur wifi est par exemple 10.59.59.66, dans la table de
routage de la passerelle il faut la ligne de routage statique suivante :
10.59.59.128 10.59.59.66 255.255.255.192 UG 0 0 0 eth1
iptables -t nat -L doit donner quelque chose dans ce goût là :
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
"Bipède"
Ce n'est pas une bonne idée de "masquerader" n'importe qui. Quelqu'un pe ut utiliser la passerelle pour apparaitre de façon anonyme sur internet. Mieux vaut masquerader uniquement les plages du réseau local.
--
Erwann
Netfilter est tout simplement le filtre de paquets intégré aux noyaux
Linux 2.4 (et 2.6 ?) dont iptables n'est que l'outil de configuration.
Pas forcément, si le but est précisément d'isoler le réseau sans fil et
le réseau filaire. Par contre c'est la machine "routeur WIFI" elle-même
qui est inutile si sa seule fonction est le routage. Il serait
diablement plus simple d'installer la carte WIFI directement dans la
machine "passerelle".