OVH Cloud OVH Cloud

Question d'école sur la résolution d'adresse d'une passerelle.

2 réponses
Avatar
ALLAIN Norbert
Bonjour.

Soit un réseau avec un pc A 192.168.0.1/255.255.255.0 et une passerelle
avec comme adresse eth0 192.168.1.1/255.255.255.0
Le pc A et la passerelle appartiennent au même réseau physique mais pas
au même réseau logique.

Les paquets envoyés par pc A pour un autre réseau que le sien vont être
envoyés à la passerelle.

Ma question: le pc A va-t-il chercher à savoir si la passerelle
appartient au même réseau logique que le sien, ce qui n'est pas le cas.
Ou va-t-il directement envoyer une requête ARP avec comme adresse
192.168.1.1 à résoudre ?

Merci.

Norbert

2 réponses

Avatar
Kns
ALLAIN Norbert a écrit:

Bonjour.

Soit un réseau avec un pc A 192.168.0.1/255.255.255.0 et une passerelle
avec comme adresse eth0 192.168.1.1/255.255.255.0
Le pc A et la passerelle appartiennent au même réseau physique mais pas
au même réseau logique.


mais vaudrait mieux t'il pas un netmask en 255.255.254.0 tout simplement?

Avatar
Annie D.
[Repost & supersedes]

ALLAIN Norbert wrote:

Soit un réseau avec un pc A 192.168.0.1/255.255.255.0 et une passerelle
avec comme adresse eth0 192.168.1.1/255.255.255.0
Le pc A et la passerelle appartiennent au même réseau physique mais pas
au même réseau logique.


Vous avez de drôles d'idées. Juste par curiosité, vous pourriez fournir
la table de routage des deux machines ?

Les paquets envoyés par pc A pour un autre réseau que le sien vont être
envoyés à la passerelle.


Vous êtes très optimiste.

Ma question: le pc A va-t-il chercher à savoir si la passerelle
appartient au même réseau logique que le sien, ce qui n'est pas le cas.


Oui. Et il ne va pas attendre d'avoir un paquet à envoyer pour cela.
C'est au moment où vous allez configurer l'adresse de passerelle qu'il
va vérifier dans sa table de routage que cette adresse est joignable
directement sur une de ses interfaces. Et dans votre cas, ça risque de
ne pas le faire, comme on dit, car la table de routage standard pour
192.168.0.1/24 ne contient pas la destination 192.168.1.1.

Ou va-t-il directement envoyer une requête ARP avec comme adresse
192.168.1.1 à résoudre ?


Le PC A, il va regarder sa table de routage. En fonction de ce qu'il
trouve, il va au choix :

- envoyer une requête ARP avec l'adresse IP de destination si celle-ci
est directement joignable par l'interface ethernet ; ensuite il enverra
les paquets avec l'adresse MAC et l'adresse IP de la destination ;

- envoyer une requête ARP avec l'adresse IP de la passerelle
correspondante si la destination est joignable via une passerelle ;
ensuite il enverra les paquets avec l'adresse MAC de la passerelle et
l'adresse IP de la destination ;

- retourner une erreur "unreachable" si la destination est inconnue de
la table de routage.

Pour revenir à vos moutons, examinons la table de routage du PC A. Après
configuration d'IP sur eth0, par exemple avec la commande suivante :

# ifconfig eth0 192.168.0.1 mask 255.255.255.0

la table de routage standard devrait ressembler à ça :

# route
Destination Gateway Genmask Interface
192.168.0.0 * 255.255.255.0 eth0

Seules les adresses de son sous-réseau 192.168.0.0/24 sont joignables,
et ceci directement par eth0 sans passer par une passerelle.

Maintenant, si vous voulez ajouter 192.168.1.1 comme passerelle par
défaut :

# route add default gw 192.168.1.1
SIOCADDRT: Network is unreachable

le système proteste en disant que qu'il ne sait pas joindre cette
adresse et que par conséquent cette passerelle serait inutilisable.
Normal, dans l'état actuel de sa table de routage il ne sait pas joindre
autre chose que son propre sous-réseau et cette adresse n'en fait pas
partie.

Si vous voulez absolument faire ça, il faut d'abord la rendre joignable
en disant qu'elle accessible directement sur l'interface eth0 :

# route add 192.168.1.1 dev eth0

La table de routage devient :

# route
Destination Gateway Genmask Interface
192.168.1.1 * 255.255.255.255 eth0
192.168.0.0 * 255.255.255.0 eth0

Maintenant, le système sait comment joindre la passerelle et vous pouvez
spécifier la passerelle par défaut :

# route add default gw 192.168.1.1

La table de routage est finalement :

Destination Gateway Genmask Interface
192.168.1.1 * 255.255.255.255 eth0
192.168.0.0 * 255.255.255.0 eth0
default 192.168.1.1 0.0.0.0 eth0

Cependant, ce n'est pas encore fini. D'accord, le PC A peut envoyer des
paquets via la passerelle, mais cela ne sert pas à grand chose si la
passerelle ne sait pas comment lui renvoyer les paquets reçus en
réponse. Et je soupçonne que le même problème que ci-dessus va se poser
pour la passerelle dont la table de routage n'a aucune raison de
contenir par défaut 192.168.0.1 parmi les destinations joignables par
eth0 puisque les deux machines ne sont pas dans le même sous-réseau. Il
suffit de lui ajouter une route directe comme on l'a fait pour PC A :

# route add 192.168.0.1 dev eth0