Cas d'école : probleme de routage sur plusieurs interfaces

[Fermé]
Signaler
-
 dreamdeb -
Bonjour,

Je n'arrive pas à m'en sortir, peut etre quelqu'un pourra m'aider.
Sachant que les IP LAN1 et LAN2 sont des gateways de mes 2 réseaux locaux
Sachant que les IP de WAN 1 et WAN 2 sont des IPs qui doivent faire entrer/sortir les trafics provenant respectivement des IP LAN1 et LAN2,


C'est à dire tout ce qui est sollicité du réseau rattaché à LAN1 doit uniquement sortir sur WAN1
et que
C'est à dire tout ce qui est sollicité du réseau rattaché à LAN2 doit uniquement sortir sur WAN2

Le tout sur une seule interface physique.



Voici mon fichier interfaces:

# Interface physique montee mais sans IP
auto eth0
allow-hotplug eth0
iface eth0 inet manual
pre-up ifconfig $IFACE up

# Interface WAN 1
auto eth0:1
allow-hotplug eth0:1
iface dummy0 inet static
address 192.168.100.2
netmask 255.255.255.0
gateway 192.168.100.1
dns-nameservers 8.8.8.8

# Interface LAN 1 lie a eth0:1
auto eth0:2
allow-hotplug eth0:2
iface eth0:2 inet static
address 10.14.1.1
netmask 255.255.255.0

# Interface WAN 2
auto eth0:3
allow-hotplug eth0:3
iface eth0:3 inet static
address 192.168.100.10
netmask 255.255.255.0
dns-nameservers 8.8.8.8

# Interface LAN 2 lie a eth0:3
auto eth0:4
allow-hotplug eth0:4
iface eth0:4 inet static
address 10.14.2.1
netmask 255.255.255.0


J'ai vraiment besoin d'aide, je ne m'en sors pas ni avec iptables ni avec route add

Sans appliquer de réelle sécurité pour le moment, est-ce que quelqu'un aurait une mini conf iptables et / ou route pour au moins que mes deux reseaux puissent aller sur le net.
Je sécuriserais dans un second temps.

Avec mes remerciements pour vos propositions

7 réponses

Messages postés
30132
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
26 septembre 2021
7 176
Personnellement je n'ai pas bien compris l'énoncé, je pense que pour plus de clarté tu devrais au lieu de parler de LAN1, LAN2, WAN1 et WAN2 nous dire de quelles IPs et de quels préfixes il est question, car ça éviterait d'avoir à inférer ce que tu as voulu écrire dans /etc/network/interfaces.

Si j'ai bien compris tu as simplement trois routes :
- une route pour ton réseau locale (qui permet de router les deux passerelles)
- une route dont la gateway est la première passerelle et qui route les IPs du réseau attaché à cette passerelle
- et une autre route dont la gateway est la première passerelle et qui route les IPs du réseau attaché à cette passerelle
- on peut imaginer une 4e route (route par défaut) qui indique par quelle passerelle transiter pour atteindre toutes les autres IPs (typiquement Internet).

Tu noteras qu'on utilise seulement les routes (donc seulement la commande route), chose qu'on peut à terme automatiser via /etc/network/interfaces. Il n'y a pas besoin d'iptables car tu ne bidouilles pas les paquets (pour les rerouter ou les trafiquer à l'insu de leur plein gré typiquement).

Bonne chance
Messages postés
6
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
2 juillet 2013

Dans ce cas tu dois utiliser ip rules et ip route.

Faire un "ip rule show" pour voir les numéros de fichier des rules et chercher 2 numéros de fichiers libres.

Ensuite "ip rule add from 10.14.1.1/24 table 1 (où 1 est le numéro vu libre)
Ensuite "ip rule add from 10.14.2.1/24 table 2 (où 2 est le numéro vu libre)
Ensuite ip route add default via X dev eth0:1 table 1 (où 1 est le numéro vu libre) et où tu remplace X par l'ip de la passerelle
Ensuite ip route add default via X dev eth0:3 table 2 (où 2 est le numéro vu libre)
et où tu remplace X par l'ip de la passerelle

A+
En fait pour résumer:

J'ai 2 ip sur un réseau qui sont en realité mes addr de sorties
192.168.0.240
192.168.0.241
gw : 192.168.0.1

de mes deux réseaux privés:
10.14.1.0/24
10.14.2.0/24

Le but est que :
10.14.1.0/24 sorte uniquement sur 192.168.0.240
et que
10.14.2.0/24 sorte uniquement sur 192.168.0.241

Sans que 10.14.1.0/24 voit 10.14.2.0/24 et vice versa

Le tout avec UNE seule interface physique

@Loberty : qu'est ce que 'voir les numéros de fichier des rules et chercher 2 numéros de fichiers libres. ' ?

Merci
Messages postés
30132
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
26 septembre 2021
7 176
Si j'ai bien compris tu as une machine M qui reçoit du trafic qui vient de deux réseaux (10.14.1/24 et 10.14.2/24) et qui en fonction du réseau de provenance, doit router le trafic le trafic de 10.4.1/24 (resp. 10.4.2/24) vers 192.168.0.240 (resp. 192.168.0.241). C'est bien ça ?

Si oui, tu auras effectivement besoin d'iptables car le routage dépend de la provenance, donc d'une considération au niveau des paquets. Comme la table de routage (cf route -n) ne dépend que de l'adresse destination, elle ne suffit pas à décrire un tel routage, d'où le besoin d'utiliser iptables.

À mon avis la solution la plus simple est de faire viser à 10.4.1/24 10.4.2/24 une gateway G bidon, mais qui les conduit à router leur trafic vers M. Ensuite la machine M rattrape les paquets destinés à G et sait qu'elle doit trafiquer la gateway grâce à iptables. En fonction du réseau de provenance, M si elle doit rediriger le trafic vers 192.168.0.240 ou 192.168.0.241. Pour cela, tu as besoin de deux règles iptables (une par réseau), qui ressembleront à ceci :
http://www.sveasoft.com/forum/general-questions/119437-how-to-change-gateway-thru-iptables

Bonne chance
Hello MamieMando,

En fait tu as bien compris, (ormi que mes ip sont 10.14.1.0/24 et 10.14.2.0/24)
En fait si je fais des regles avec route, les interfaces 0:x ne sont pas affichées, et donc il y a qu'un seul réseau qui est routé.
Si je fais de l'iptables, (mais je n'ai pas essayé MANGLE), rien ne fonctionne.
Si je déclare un eth0 sans ip et que je route ou iptable les addr 0:x, rien ne fonctionne.

Donc, je pense que ton idee de faire une gateway G bidon, me semble bonne a essayer.

a. Comment je la déclare en par ex 10.14.3.1 et sur eth0 ou sur une autre eth0:x ?
b. Je devrais suivre la regle MANGLE de ton lien?

Merci de me confirmer
Et surtout merci pour ton aide
Messages postés
30132
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
26 septembre 2021
7 176
(hormis que mes ips sont 10.14.1.0/24 et 10.14.2.0/24)

Ben non ça ce sont des préfixes, ie un bloc d'adresses IPs.

Si je fais de l'iptables, (mais je n'ai pas essayé MANGLE), rien ne fonctionne.

Pour moi c'est justement ce que tu dois utiliser. Personnellement j'ai dû utiliser cette règle iptable pour rerouter du trafic destiné à mon IP publique vers localhost et ça marchait très bien. Dans mon cas je n'avais pas besoin de considérer l'IP de provenance (mais l'IP cible et le port cible), donc j'avais une seule règle iptable.

a) En fait tu peux mettre n'importe quelle IP que tu es sûr de n'utiliser dans aucun d'autre contexte. Par exemple une IP locale bidon (par exemple 192.168.0.242) mais qui est routée vers la machine M qui dispatche le trafic entre les deux réseaux. M ne doit pas avoir cette IP attribuée, sinon le trafic sera arrivé a destination et M n'aurait pas de raison de le forwarder. C'est pas très élégant comme approche mais je pense que ça doit marcher.

b) Oui je pense

Bonne chance
Ok, j'ai saisi la logique.

Je vais essayé, mais je ne forwarde pas des ports, uniquement le traffic quel qu'il soit.

Je te tiens informé en fin de semaine.

Merci encore pour toutes tes explications.
Bien Cordialement ... et merci pour le 'Bonne Chance', j'en ai besoin ;-)
Messages postés
1134
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
27 novembre 2019
527
Hello,

Alors tu as trouvé ?

Bon aller, je me lance. Tout d'abord tu as deux réseaux qui ont le même subnet (WAN1 et WAN2) -> c'est pas possible ou alors tu as pas 4 mais 3 réseaux.
Après tu utilises deux arguments conflictuels dans le fichier '/etc/network/interfaces' : "auto" et "allow-hotplug". En général, on met soit l'un soit l'autre mais pas les deux (je préfère "auto" car l'autre pose problème dans certains cas).

J'ai réfléchi à ta demande et je t'ai fait une conf exemple (en prenant le soin de modifier le subnet de WAN2). Tout d'abord, les DNS pas besoin de les mettre dans le fichier interfaces, ça va dans '/etc/resolv.conf'.

Fichier '/etc/resolv.conf' :
nameservers 8.8.8.8    


Il faut ajouter des tables de routage à linux pour faire du multi-gateways.

Fichier '/etc/iproute2/rt_tables' (installer iproute2 si non présent) :
#    
# reserved values    
#    
255     local    
254     main    
253     default    
0       unspec     
#    
# local    
#    
1      inr.ruhep    
10    WAN1    
20    WAN2    


Puis, on configure les interfaces - fichier '/etc/network/interfaces' (pas besoin d'activer eth0 si non utilisée) :
# This file describes the network interfaces available on your system    
# and how to activate them. For more information, see interfaces(5).    

# The loopback network interface    
auto lo    
iface lo inet loopback    

# The primary network interface    
# auto eth0    
# iface eth0 inet dhcp    

# Interface WAN1    
auto eth0:1    
iface eth0:1 inet static    
 address 192.168.100.2    
 netmask 255.255.255.0    
 network 192.168.100.0    
 broadcast 10.0.255.255    
        gateway 192.168.100.1    
 up ip route add 192.168.100.0/24 dev eth0:1 src 192.168.100.2 table WAN1    
 up ip route add default via 192.168.100.1 table WAN1    
 up ip route add 192.168.100.0/24 dev eth0:1 src 192.168.100.2    
 up ip rule add from all fwmark 2 table WAN1    
 down ip rule del from all fwmark 2 table WAN1    
 down ip route del 192.168.100.0/24 dev eth0:1 src 192.168.100.2    
 down ip route del default via 192.168.100.1 table WAN1    
 down ip route del 192.168.100.0/24 dev eth0:1 src 192.168.100.2 table WAN1    

# Interface LAN1    
auto eth0:2    
iface eth0:2 inet static    
 address 10.14.1.1    
 netmask 255.255.255.0    
 network 10.14.1.0    
 broadcast 10.14.1.255    

# Interface WAN2    
auto eth0:3    
iface eth0:3 inet static    
 address 192.168.101.10    
 netmask 255.255.255.0    
 network 192.168.101.0    
 broadcast 192.168.101.255    
 up ip route add 192.168.101.0/24 dev eth0:3 src 192.168.101.10 table WAN2    
 up ip route add default via 192.168.101.1 table WAN2    
 up ip route add 192.168.101.0/24 dev eth0:3 src 192.168.101.10    
 up ip rule add from all fwmark 3 table WAN2    
 down ip rule del from all fwmark 3 table WAN2    
 down ip route del 192.168.101.0/24 dev eth0:3 src 192.168.101.10    
 down ip route del default via 192.168.101.1 table WAN2    
 down ip route del 192.168.101.0/24 dev eth0:3 src 192.168.101.10 table WAN2    

# Interface LAN2    
auto eth0:4    
iface eth0:4 inet static    
 address 10.14.2.1    
 netmask 255.255.255.0    
 network 10.14.2.0    
 broadcast 10.14.2.255    


Enfin on fini par iptables - fichier '/etc/network/iptables' (appeler le fichier avec la commande 'iptables-restore < /etc/network/iptables') :
###    
#    
# eth0:1 WAN1 - table WAN1 - fwmark 2 
# eth0:2 LAN1   
# eth0:3 WAN2 - table WAN2 - fwmark 3  
# eth0:4 LAN2    
#    
###    
*mangle    
:PREROUTING ACCEPT [0:0]    
:INPUT ACCEPT [0:0]    
:FORWARD ACCEPT [0:0]    
:OUTPUT ACCEPT [0:0]    
:POSTROUTING ACCEPT [0:0]    
-A PREROUTING -i eth0:2 -j MARK --set-mark 2 
-A PREROUTING -i eth0:4 -j MARK --set-mark 3 
COMMIT    
###    
*nat    
:PREROUTING ACCEPT [0:0]    
:POSTROUTING ACCEPT [0:0]    
:OUTPUT ACCEPT [0:0]    
#-A POSTROUTING -o eth0:1 -j MASQUERADE     
#-A POSTROUTING -o eth0:3 -j MASQUERADE    
COMMIT    
###    
*filter    
:INPUT ACCEPT [0:0]    
:FORWARD ACCEPT [0:0]    
:OUTPUT ACCEPT [0:0]    
COMMIT    
###    


Pour expliquer rapidement, je créé deux tables de routages dédiées puis en montant mes interfaces, j'ajoute les routes à chaque table ainsi que les passerelles par défaut respectives.

On note bien, que mon linux a aussi besoin d'une route par défaut. Je lui ai attribué la passerelle de WAN1 via l'argument 'gateway' (choix totalement arbitraire).

Enfin, grâce à la table mangle d'iptables tous les packets entrants via les interfaces LAN sont marqués respectivement pour chaque table de routage disponible (ici, en fonction de l'interface d'arrivée). Si j'ai besoin du NAT, on dé-commente les lignes dans la partie NAT.

Je n'oublies pas d'activer l'IP forwarding : 'echo "1" > /proc/sys/net/ipv4/ip_forward' (si besoin permanent, éditer le fichier '/etc/syscfg.conf').

Voilà, j'espère ne rien avoir oublié et être clair ^^
A+
Wow! je suis impressionné !
Merciiiiii, je vais tester de suite et commenterais mes progressions ici.

A tout bientot