[Résolu] Routage avancé 2routes selon la destination

Forum d'assistance et d'échange sur l'installation, la configuration, et l'utilisation des système Linux et BSD. Vous pouvez y poster vos questions concernant ces systèmes d'exploitation en faisant l'effort préalable de rechercher dans le forum, dans les manuels et les documentations que la réponse n'y figure pas.

Modérateur: modos Ixus

[Résolu] Routage avancé 2routes selon la destination

Messagepar antolien » 14 Août 2004 12:34

Bonjour,

Je cherche à faire la chose suivante :

Une machine linux avec deux @ip publiques sur 2 plages différentes.
En fait la machine est sur une dmz sur laquelle il y a 2 passerelles

Code: Tout sélectionner

[Firewall1]dmz---[switch]---dmz[Firewall2]
                    |
              ip1[Linux]ip2   


La machine linux à une seule carte réseau; et donc une ip et passerelle par défaut[firewall1] et un alias ip sur l'autre plage ip dmz [firewall2]

N'ayant qu'une seule passerelle par défaut possible, je souhaiterais que lorsqu'une requette arrive avec l'ip destination ip2, le paquet retour doit passer par la deuxième passerelle.

je sais pas si c'est compréhensible, mais il faudrait 2 passerelles par défault routée selon l'ip destination.

J'ai cherché un peu du coté iptables et la table mangle ; peut être avec le patch ROUTE. Mais c'est compliqué.

Quelqu'un peut m'aider ?
Dernière édition par antolien le 14 Août 2004 16:26, édité 1 fois au total.
Avatar de l’utilisateur
antolien
Amiral
Amiral
 
Messages: 3134
Inscrit le: 31 Août 2002 00:00

Messagepar Franck78 » 14 Août 2004 13:47

Si c'est assez clair, ca ressemble à ce que voulait faire une personne ici (
viewtopic.php?t=16337&highlight= )

C'est plutôt ce qu'il y a derrière les FW qui manque.
Si réseaux privés, tu connais forcément les autres routeurs et tu peux laisser le routeur dans linux ce mettre d'accord avec les autres.

Si réseaux publics, aucun FAI ne te laissera joindre leur réseaux respectifs en créant une nouvelle passerelle. Tu es condamné a faire des tables de routages toit même ...

Mais tout ça colle bizarrement avec "deux IP publiques" sur ta machine linux...


bye
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar antolien » 14 Août 2004 14:09

En fait le problème justement c'est que je ne connaît pas la source. En effet, si c'est le réseau local, il me suffit d'ajouter la route correspondante.
Mais ici, c'est un réseau public; donc la source c'est n'importe quelle ip.
Et le problème, c'est que je peux joindre la deuxième ip, mais la réponse est routée sur la passerelle par défaut. Donc ça ne va pas, puisque c'est considéré comme du spoofing, même si ça passait, l'upload de la deuxième ligne serait inutilisé.
Au niveau du routage je fais ce que je veux, j'ai la main sur toutes les machines.

Peut-être avec iproute c'est suffisant ?

Je précise Franck78 qu'il n'y a pas de NAT ici. Merci de votre aide, j'ignore si ma question est explicite ?
Avatar de l’utilisateur
antolien
Amiral
Amiral
 
Messages: 3134
Inscrit le: 31 Août 2002 00:00

Messagepar Cypriens1 » 14 Août 2004 14:33

Si je résume ce que j'ai compris,

l'adresse IP doit être la même pour les trames entrantes que pour les sortantes sinon, les couches OSI ne vont plus rien comprendre (spoofing?).

donc, simplifions dans un premier temps tes adresses IP par une seule un nat pourra marcher plus tard...

1. sachant que le paquet TCP/IP contiens l'adresse du prochain routeur, on peux supposer que lors de la création du paquet, le PC met sa passerelle par défaux comme prochain routeur!

2. sachant que les routeurs utilisent des protocoles pour savoir lequel va transmettre le paquet au routeur suivant, et que c'est indépendant de la machine qui envoie la trame, ben il faut déjà que les deux passerelles ne puissent pas communiquer entre elles non ? sinon, il y a bien des chances pour que celui qui a reçu le paquet soit maitre pour renvoyer la réponse.

3. il faut trouver un moyen de modifier dans les paquets en émission l'adresse du "routeur le plus proche"

4. problème, rien nous assure que les 2 passerelles ne vont pas communiquer par internet pour le routage. Le but des routeurs, c'est bien de trouver le meilleur chemin de la source à la destination quelque soit la source....

mais bon, donc, avec un peu de chance, modifier l'adresse du "premier routeur" dans les paquets envoyé peux peut-être fonctionner. mais c'est tout de même dans les basses couches du modèle OSI. Je ne sais pas si il existe des outils pour l'implémenter.

tu sais programmer ?
Salutations
François


PS je vais suivre ce thread de près
Avatar de l’utilisateur
Cypriens1
Matelot
Matelot
 
Messages: 9
Inscrit le: 12 Août 2004 17:17

Messagepar Cypriens1 » 14 Août 2004 14:38

euhhh encore moi,

on pourrais pas programmer iptables pour que firewall1 n'accèpte que les entrées de paquets et firewall2 que les sorties? bien sure si firewall1 reçois une sortie, il la forward sur firewall2 et si firewall2 reçois une entrée il la forward sur firewall1 ???

pas trop compliqué ça ?

je sais pas
François
Avatar de l’utilisateur
Cypriens1
Matelot
Matelot
 
Messages: 9
Inscrit le: 12 Août 2004 17:17

Messagepar antolien » 14 Août 2004 14:52

J'y ai pensé mais les firewalls ne communiquent pas entre eux; je pense avoir une idée concrête :

1- Marquage du paquet avec la table mangle selon l'ip destination

2 - Ajout d'une route par défaut avec iproute, selon la marque du paquet

Pour le marquage des paquets c'est pas compliqué, par contre l'ajout de la route selon la marque c'est certainement possible mais j'ignore encore comment. Peut-être en créant une table de routage et ip rule add fwmark.

Je chauffe ?
Avatar de l’utilisateur
antolien
Amiral
Amiral
 
Messages: 3134
Inscrit le: 31 Août 2002 00:00

Messagepar antolien » 14 Août 2004 14:57

je pense avoir la solution mais je suis bon pour recompiler le kernel déjà pour les tests; avec CONFIG_IP_MULTIPLE_TABLES

:cry:
Avatar de l’utilisateur
antolien
Amiral
Amiral
 
Messages: 3134
Inscrit le: 31 Août 2002 00:00

Messagepar Cypriens1 » 14 Août 2004 15:17

mouai, on voulais pas en arriver là :roll:

J'ai regardé sur le net, et c'est vrai qu'il y a des personnes qui ont utilisé cette méthode. donc ça doit fonctionner, donc c'est cool il y a une solution. Bon c'est vrai aussi que j'ai rarement vu des gents poster sur le web : c'est cool ça a marché tout de suite.... mdrrr c'est plus les prob qu'on voit.

J'ai pas regardé, mais est-ce que c'est pas possible de le mettre en module? comme ça pas besoin de recompiler le noyau?

François
Avatar de l’utilisateur
Cypriens1
Matelot
Matelot
 
Messages: 9
Inscrit le: 12 Août 2004 17:17

Messagepar Franck78 » 14 Août 2004 15:25

Disons qu'il faudrait que chaque firewall informe ton routeur linux avec l'info suivante :

FW1, j'ai reçu quelquechose en provenance du réseau W.X.Y.Z et à destination du linux
j'informe le routeur linux que je suis désormais la passerelle pour le réseau W.X.Y.Z

Idem FW2.
Le linux élimine les routes dynamique au bout d'un délai à determiné.
Donc le linux saura quelle gateway choisir pour les réponses.
Mais si lui est à l'origine, ou route statique que tu connais, ou default gateway obligatoire.

On refait là sans doute un protocole de routage basique. Je vois pas comment sinon nourrir la désicion de routage entre FW1 FW2.

Maintenant, informer avec mangle sur les FW est peut être une façon simple de communiquer. Mais extraire cette info sur le linux est plus ardu qu'un simple script perl qui écouterait sur un port. Dans l'autre manière, repérer le nouveau réseau sur FW1 et envoyer le message est aussi ardu. Je partirais sur tcpdump/libpcap pour écrire ce petit bout de code.

Il y a peut être déja ce genre de projet développé. Tu as cherché sur internet ?

Tout faire sur le linux, pourquoi pas. Ca doit aussi marcher.
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar antolien » 14 Août 2004 16:14

C'est bon ça marche !!!

Arpès la recompil du kernel; il suffit donc de faire :

1 - marquage des paquets avec la table mangle
ex : iptables -t mangle -A OUTPUT -s 11.1.1.2 -j MARK --set-mark 7

Pour les paquets ayant comme source la deuxième ip publique je les marques à 7

2 - iproute 2 ajout d'une route par défaut selon la marque
on édite /etc/iproute2/rt_tables
et par exemple la table 7 on l'appelle gw2

ip rule add fwmark 7 table gw2 (je met mes paquets ayant la marque 7 dans la table gw2)
ip route add default via 11.1.1.1 table gw2 (ajout de la route par défaut pour ce qui passe par la table gw2)

on vérifie dans notre table de routage : ip route show table gw2
default via 11.1.1.1 dev eth0

:lol:
C'est pas compliqué finalement.
C'est plus simple en faisant cela sur le linux que sur les firewall, car ça évite pas mal de transformation du paquet, et cela économise aussi du traffic. Maintenant il est clair que si c'était une machine windows dans la dmz, on ne serait pas dans la même situation :roll:
Avatar de l’utilisateur
antolien
Amiral
Amiral
 
Messages: 3134
Inscrit le: 31 Août 2002 00:00


Retour vers Linux et BSD (forum généraliste)

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron