Probleme routage - Gateway à 0.0.0.0

Bonjour à tous,

j’explique mon problème, je fais un P.T.I en BTS Informatique de Gestion option reseau. Je voudrai configurer un routeur avec deux cartes reseaux. Mais je bloque sur un truc. Et franchement j’ai beau chercher, pas de reponse.

Je me retrouve avec des routes qui sont integré par le système lui meme. Et franchement, elle me font vraiment chi*** :013

Je m’exlique plus clairement:
J’ai créé un script dans le cas ou le routeur meurt un jour. Comme ça on pourrait le remplacer et integrer la configuration facilement.

Pour information:
[ul]Distribution linux: Debian[/ul]
[ul]Noyau Linux: Douby 2.6.32-5-686 Novembre 2011[/ul]
[ul]Le DHCP de la box est désactivé[/ul]
[ul]La box à pour adresse 192.168.1.254[/ul]

Voici le script:

[code]#!/bin/bash

#Désinstalation de network-manager pour eviter les conflits
apt-get remove network-manager

#On enleve tout les liens physiques du demarrage/arret/redemarrage de la machine
find /etc/ -name “network-manager” -delete

#Mise en place des adresses des cartes reseaux et des routes statics
#en les integrants directement dans le fichier /etc/network/interfaces
echo "auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
broadcast 192.168.1.255
#(modifié apres 2e post)

auto eth1
iface eth1 inet static
address 192.168.91.100
netmask 255.255.255.0
broadcast 192.168.91.255

#Route statique, route par default via la box
up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.100
up route add -net 192.168.91.0 netmask 255.255.255.0 gw 192.168.91.100
up route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.1.254" > /etc/network/interfaces

#On active le routage
echo “1” > /proc/sys/net/ipv4/ip_forward

#On redemarre les interfaces
/etc/init.d/networking restart
[/code]

Je lance mon script en root
Quand je fais un ifconfig, tout va bien

Quand je fais un route -n voila ce qu’il m’arrive:

Destination ! Gateway ! netmask ! Iface 192.168.1.0 ! 192.168.1.100 ! 255.255.255.0 ! eth0 192.168.1.0 ! 0.0.0.0 ! 255.255.255.0 ! eth0 192.168.91.0 ! 192.168.91.100 ! 255.255.255.0 ! eth1 192.168.91.0 ! 0.0.0.0 ! 255.255.255.0 ! eth1 0.0.0.0 ! 192.168.1.254 ! 0.0.0.0 ! eth0
(modifié apres 2e post)

Donc, je fais un ping sur un des pc du reseau (192.168.1.10), naif comme je suis, et bien sur, ça ne marche pas. Car avec une route ayant deux passerelles differente, un masque identique, une meme interface et un meme reseau, je voies pas comment ça peu marcher.

J’imagine quand enlevant les route fabriqué par le systeme, ça marchera. :017

route del -net 192.168.1.0 netmask 255.255.255.0 gw 0.0.0.0 route del -net 192.168.91.0 netmask 255.255.255.0 gw 0.0.0.0

Je me retrouve donc avec des routes tel que:

Destination ! Gateway ! netmask ! Iface 192.168.1.0 ! 192.168.1.100 ! 255.255.255.0 ! eth0 192.168.91.0 ! 192.168.91.100 ! 255.255.255.0 ! eth1 0.0.0.0 ! 192.168.1.254 ! 0.0.0.0 ! eth0
(modifié apres 2e post)

Je fais un ping vers 192.168.1.10 et là??? :041 Magique ça marche!!! Mais bon on va dire que c’est normal non??

Alors voila mes questions:
Pourquoi le système mets des passerelles à 0.0.0.0?? Comment lui dire de stopper ce gros bordel??? Ou alors, quel connerie j’ai fait ou que j’ai pas fait pour eviter ça?

Merci d’avance de vos reponses

-----Edition du scrip apres resolution -----

[code]#Désinstalation de network-manager pour eviter les conflits
apt-get remove network-manager

#On enleve tout les liens physiques du demarrage/arret/redemarrage de la machine
find /etc/ -name “network-manager” -delete

#Mise en place des adresses des cartes reseaux et des routes statics
#en les integrants directement dans le fichier /etc/network/interfaces
echo "auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.91.100
netmask 255.255.255.0
broadcast 192.168.91.255

auto eth1
iface eth1 inet static
address 192.168.1.100
netmask 255.255.255.0
broadcast 192.168.1.255
up route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.1.254"> /etc/network/interfaces

#On active le routage directement
echo “1” > /proc/sys/net/ipv4/ip_forward

#On active le routage au demarrage de l’ordinateur en insérant la commande à la ligne 13 du fichier rc.local
sed -i ‘13iecho “1” > /proc/sys/net/ipv4/ip_forward’ /etc/rc.local

#On redemarre les interfaces
/etc/init.d/networking restart
[/code]

iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.136.255
Qu’est-ce que c’est que cette adresse de broadcast fantaisiste qui n’appartient même pas au sous-réseau ? L’option broadcast n’est pas indispensable, l’adresse de broadcast peut être calculée automatiquement à partir de l’adresse et du masque.

#Route statique, route par default via la box up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.100 up route add -net 192.168.91.0 netmask 255.255.255.0 gw 192.168.91.100 up route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.1.254
Les deux premières routes pour les sous-réseaux des interfaces sont inutiles, car déjà créées automatiquement par la configuration des interfaces avec adresse et masque. Quant à la route par défaut, on peut la créer avec une option gateway dans le bloc de définition de l’interface concernée.

Accessoirement, les commandes additionnelles up/down liées à l’interface eth0 devraient se trouver dans le bloc de définition d’eth0 et pas dans celui d’eth1.

Avec les commandes ci-dessus ça m’étonnerait qu’y ait une telle route (sous-réseau d’eth1 avec l’adresse d’eth0).

Je ne sais pas comment tu t’es débrouillé, mais chez moi ça marche.

En fait quand la table de routage contient plusieurs routes de même priorité pour la même destination, alors le noyau en choisit une. Pas évident de savoir laquelle a priori : la la plus ancienne, la plus récente… il vaut mieux ne pas compter dessus. Ici ce n’est pas trop grave car les deux routes sont valables.

Parce cela signifie “pas de passerelle pour cette route”, c’est-à-dire que la destination est joignable directement sur l’interface concernée. Et ce genre de route fonctionne parfaitement pour tout le monde.

Merci PascalHambourg pour ta réponse rapide.

Oui tu as raison, j’ai ecrit des grosses erreurs que j’ai vite corrigé.
Et grace à ces erreurs, j’ai compris d’ou venait le problème…

Franchement, c’est vraiment nul :blush:
En fait, j’étais sur que eth0 correspondait à la carte réseau de la carte mere, là ou est le réseau 192.168.1.0. Et eth1 à l’autre car c’est une carte qui à été ajouté apres.
En faisant une GROSSE erreur dans la config des interfaces, j’ai réussi à pingé sur 192.168.1.10 alors qu’en temps normal, il aurai du me faire “host unreachable”.

En fait, apres avoir corrigé mes erreurs et reconfigurer les interfaces, il m’était impossible de pinger sur les postes des deux réseaux. Je me suis dit, y a vraiment un truc qui déconne.
Puis j’ai trouvé, j’ai inversé les interfaces et voila, ça marche.

Comme tu dis, pas besoin de creer les routes en static, le système le fait lui meme du moment qu’on à bien remplis le fichier de config des interfaces.
Il y aura juste à rajouter la destination par default et voila, le tour est joué…

J’imagine qu’il doit exister une commande pour savoir à quel carte correspond l’interface eth0 et eth1 pour éviter de se poser la question, “c’est à qui cette interface??” et perdre tu temps à tester… Mais je prefere chercher pour l’instant. Je demanderai dans le cas ou mes recherches n’aboutisse pas.

Du coup, ce sera un PTI un peu maigre… En avant pour rajouter un pare-feu dessus.

Merci à toi et bonne journée :mrgreen:

Ajoutée après l’installation du système Debian ? Installation Debian standard (avec noyau standard et udev) ?
Dans ce cas l’interface ethernet intégrée, qui était seule présente au moment de l’installation, aurait normalement dû être nommée eth0, et le rester après l’ajout de la seconde carte ethernet qui aurait alors dû prendre le premier nom disponible, eth1. Le noyau nomme les interfaces dans l’ordre (variable) de leur découverte à chaque démarrage, mais en principe udev les renomme en se basant sur leurs adresses MAC pour faire en sorte que leurs noms soit persistants.

Le plus simple pour identifier une interface, c’est de vérifier son adresse MAC qui est unique, avec “ifconfig -a”. Quand on la connaît…
Autres sources possibles :
"ethtool -i " indique quel module est utilisé par une interface, mais n’aide pas forcément si plusieurs interfaces utilisent le même module. Pour les cartes PCI la position logique sur le bus est indiquée, mais ce n’est pas toujours évident de faire la correspondance avec la position physique.