Problème tordu -- Linux

Le
Manu
Bonjour à toutes et à tous !

Mon problème est un peu compliqué à présenter ; j'ai une machine li=
nux
A reliée à un petit réseau local 192.168.0.0 par wifi. Elle est
également connectée à une deuxième machine linux B par un câble
ethernet croisé ; je souhaiterais que B soit vue comme membre du
réseau 192.168.0.0 et puisse communiquer avec tous les autres à
travers A de façon totalement transparente.

J'ai résolu en partie ce problème en activant sur A l'ip_forward et le
proxy_arp sur ses deux interfaces, et en associant :
Sur A : 192.168.0.1 sur l'interface wi-fi / 192.168.0.100 sur
l'interface ethernet câblé
Sur B : 192.168.0.10 sur l'interface ethernet câblé

Tout se passe à merveille, n'importe quelle machine du réseau voit
192.168.0.10 au ping et vice-versa.

mais

plus personne ne répond au broadcast ! Depuis B, personne ne répond,
et depuis A ou toute autre machine raccordée en Wifi, seule la
passerelle internet répond (une freebox, 192.168.0.254).
Un autre point me chagrine : lorsque j'émets un broadcast
192.168.0.255 depuis A, il ne part que sur l'interface sans fil, mais
pas sur l'autre

Auriez-vous des suggestions ?

Merci d'avance !!


Manu.

P.S : J'ai pensé à faire du NAT statique à travers A (ie attribuer =
à B
une adresse 192.168.1.10, et la transformer en 192.168.0.10 à la
traversée de A et pareil dans le sens inverse), mais cette solution ne
me satisfait pas pour plusieurs raisons :
- Le problème du broadcast n'est pas résolu
- Pour que les autres machines puissent envoyer des trames à
192.168.0.10, je dois leur définir une entrée spécifique dans leur
table de routage pour leur dire de passer par A.
J'ai imaginé une autre solution en créant une interface virtuelle de A
possédant l'adresse 192.168.0.10 de sorte que les autres machines se
dirigent toutes seules vers A ; ça fonctionnait, mais depuis A il
était impossible de contacter B avec l'adresse 192.168.0.10 : le NAT
ne s'effectuait pas car A considère qu'elle cause à elle-même ! Il me
faut utiliser depuis A l'adresse 192.168.1.10 et cela ne me convient
pas
Bon je sais, ça fait beaucoup de choses qui ne me conviennent
pasmais ça rend le défi d'autant plus tentant..non ? ;-)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
GuiGui
Le #862179
Bonjour à toutes et à tous !

Mon problème est un peu compliqué à présenter ; j'ai une machin e linux
A reliée à un petit réseau local 192.168.0.0 par wifi. Elle est
également connectée à une deuxième machine linux B par un câb le
ethernet croisé ; je souhaiterais que B soit vue comme membre du
réseau 192.168.0.0 et puisse communiquer avec tous les autres à
travers A de façon totalement transparente.



En gros, tu veux faire un bridge ;-)
C'est pas plus simple de bridger les interfaces plutôt que d'essayer de
faire ça avec du nat ?

gloubi
Le #862178
"Manu" news:
Bonjour à toutes et à tous !

Mon problème est un peu compliqué à présenter ; j'ai une machine linux
A reliée à un petit réseau local 192.168.0.0 par wifi. Elle est
également connectée à une deuxième machine linux B par un câble
ethernet croisé ; je souhaiterais que B soit vue comme membre du
réseau 192.168.0.0 et puisse communiquer avec tous les autres à
travers A de façon totalement transparente.


En fait tu agis au niveau réseau en faisant du forwarding, c'est plus ou
moins du routage, et tu routes sur le même réseau, donc totalement inutile!
Pour faire du routage l'idéal c'est d'avoir 2 réseaux séparés, par exemple
192.168.0.0/24 et 192.168.1.0/24, parce que là ne t'étonne pas si tes
paquets envoyés sur le broadcast sont routés uniquement vers une seule
interface, vu que par rapport à la table de routage il prendra la 1ere route
valide et l'autre sera ignorée puisque la 1er remplie la condition du réseau
utilisé.

En gros soit tu routes 2 réseaux differents, soit tu fais quelque chose de
plus bas niveau des couches réseaux.(genre un pont)

Pascal Hambourg
Le #862177
Salut,


Mon problème est un peu compliqué à présenter ; j'ai une machine linux
A reliée à un petit réseau local 192.168.0.0 par wifi. Elle est
également connectée à une deuxième machine linux B par un câble
ethernet croisé ; je souhaiterais que B soit vue comme membre du
réseau 192.168.0.0 et puisse communiquer avec tous les autres à
travers A de façon totalement transparente.

J'ai résolu en partie ce problème en activant sur A l'ip_forward et le
proxy_arp sur ses deux interfaces, et en associant :
Sur A : 192.168.0.1 sur l'interface wi-fi / 192.168.0.100 sur
l'interface ethernet câblé
Sur B : 192.168.0.10 sur l'interface ethernet câblé

Tout se passe à merveille, n'importe quelle machine du réseau voit
192.168.0.10 au ping et vice-versa.

mais...


Mais tu as un petit problème : les deux interfaces de A sont configurées
avec le même sous-réseau, et donc les mêmes destinations, ce qui induit
des routes contradictoires dans la table de routage. Il aurait mieux
valu créer une simple route d'hôte pour joindre B au lieu de configurer
le même sous-réseau sur l'interface ethernet.

plus personne ne répond au broadcast ! Depuis B, personne ne répond,
et depuis A ou toute autre machine raccordée en Wifi, seule la
passerelle internet répond (une freebox, 192.168.0.254).
Un autre point me chagrine : lorsque j'émets un broadcast
192.168.0.255 depuis A, il ne part que sur l'interface sans fil, mais
pas sur l'autre...


Déjà, un détail : les broadcasts ne traversent pas les routeurs, sauf
cas spéciaux comme les broadcasts DHCP quand le routeur fait office de
relais DHCP. Ensuite un paquet ne peut être émis que sur une interface,
en fonction des règles de routage.

Auriez-vous des suggestions ?


Ouais : remplacer le routage IP + proxy ARP par un pont ethernet
(ethernet bridge), c'est plus propre. Cf. brctl. Question aux lecteurs :
au fait, ça marche bien le pontage avec une interface wifi ?

P.S : J'ai pensé à faire du NAT statique à travers A (ie attribuer à B
une adresse 192.168.1.10, et la transformer en 192.168.0.10 à la
traversée de A et pareil dans le sens inverse), mais cette solution ne
me satisfait pas pour plusieurs raisons :
- Le problème du broadcast n'est pas résolu
- Pour que les autres machines puissent envoyer des trames à
192.168.0.10, je dois leur définir une entrée spécifique dans leur
table de routage pour leur dire de passer par A.


Le problème classique de la résolution ARP qui ne se fait pas si
l'adresse n'est pas configurée quelque part.

J'ai imaginé une autre solution en créant une interface virtuelle de A
possédant l'adresse 192.168.0.10 de sorte que les autres machines se
dirigent toutes seules vers A ; ça fonctionnait, mais depuis A il
était impossible de contacter B avec l'adresse 192.168.0.10 : le NAT
ne s'effectuait pas car A considère qu'elle cause à elle-même !


Il faut créer une règle DNAT similaire dans la chaîne OUTPUT pour les
paquets émis localement. Mais le NAT c'est laid et ça ne marche pas avec
toutes les applications. Autant l'éviter si possible.

Manu
Le #862176
Tout d'abord merci chaleureusement à tous pour vos réponses !

Je suppose en effet que les deux solutions envisageables sont de faire
de A soit un routeur soit un switch. L'idée du routeur ne me tente pas
beaucoup parce que je serai obligé d'ajouter une entrée aux tables de
routage de toutes les autres machines de 192.168.0.0/24 (leur
passerelle par défaut est déjà 192.168.0.254), or il s'agit de
machines qui peuvent tourner soit sous Linux soit sous Windows, et je
ne sais pas (encore) comment modifier la table de routage du noyau
XP...et quoi qu'il en soit, ça risque d'être fastidieux de le faire
sur toutes les machines et pour les deux OS.

Je vais essayer de faire un switch...encore une fois, merci à tous !


Manu.

On 13 août, 13:21, Pascal Hambourg wrote:
Salut,






Mon problème est un peu compliqué à présenter ; j'ai une machin e linux
A reliée à un petit réseau local 192.168.0.0 par wifi. Elle est
également connectée à une deuxième machine linux B par un câb le
ethernet croisé ; je souhaiterais que B soit vue comme membre du
réseau 192.168.0.0 et puisse communiquer avec tous les autres à
travers A de façon totalement transparente.

J'ai résolu en partie ce problème en activant sur A l'ip_forward et le
proxy_arp sur ses deux interfaces, et en associant :
Sur A : 192.168.0.1 sur l'interface wi-fi / 192.168.0.100 sur
l'interface ethernet câblé
Sur B : 192.168.0.10 sur l'interface ethernet câblé

Tout se passe à merveille, n'importe quelle machine du réseau voit
192.168.0.10 au ping et vice-versa.

mais...


Mais tu as un petit problème : les deux interfaces de A sont configur ées
avec le même sous-réseau, et donc les mêmes destinations, ce qui in duit
des routes contradictoires dans la table de routage. Il aurait mieux
valu créer une simple route d'hôte pour joindre B au lieu de configur er
le même sous-réseau sur l'interface ethernet.

plus personne ne répond au broadcast ! Depuis B, personne ne répond,
et depuis A ou toute autre machine raccordée en Wifi, seule la
passerelle internet répond (une freebox, 192.168.0.254).
Un autre point me chagrine : lorsque j'émets un broadcast
192.168.0.255 depuis A, il ne part que sur l'interface sans fil, mais
pas sur l'autre...


Déjà, un détail : les broadcasts ne traversent pas les routeurs, sa uf
cas spéciaux comme les broadcasts DHCP quand le routeur fait office de
relais DHCP. Ensuite un paquet ne peut être émis que sur une interfac e,
en fonction des règles de routage.

Auriez-vous des suggestions ?


Ouais : remplacer le routage IP + proxy ARP par un pont ethernet
(ethernet bridge), c'est plus propre. Cf. brctl. Question aux lecteurs :
au fait, ça marche bien le pontage avec une interface wifi ?

P.S : J'ai pensé à faire du NAT statique à travers A (ie attribue r à B
une adresse 192.168.1.10, et la transformer en 192.168.0.10 à la
traversée de A et pareil dans le sens inverse), mais cette solution ne
me satisfait pas pour plusieurs raisons :
- Le problème du broadcast n'est pas résolu
- Pour que les autres machines puissent envoyer des trames à
192.168.0.10, je dois leur définir une entrée spécifique dans leur
table de routage pour leur dire de passer par A.


Le problème classique de la résolution ARP qui ne se fait pas si
l'adresse n'est pas configurée quelque part.

J'ai imaginé une autre solution en créant une interface virtuelle d e A
possédant l'adresse 192.168.0.10 de sorte que les autres machines se
dirigent toutes seules vers A ; ça fonctionnait, mais depuis A il
était impossible de contacter B avec l'adresse 192.168.0.10 : le NAT
ne s'effectuait pas car A considère qu'elle cause à elle-même !


Il faut créer une règle DNAT similaire dans la chaîne OUTPUT pour l es
paquets émis localement. Mais le NAT c'est laid et ça ne marche pas a vec
toutes les applications. Autant l'éviter si possible.



Pascal Hambourg
Le #862175

Je suppose en effet que les deux solutions envisageables sont de faire
de A soit un routeur soit un switch. L'idée du routeur ne me tente pas
beaucoup


C'est pourtant ce que tu as fait en activant ip_forward.

parce que je serai obligé d'ajouter une entrée aux tables de
routage de toutes les autres machines de 192.168.0.0/24 (leur
passerelle par défaut est déjà 192.168.0.254),


L'autre possibilité est d'ajouter la route qui va bien dans la table de
routage de la passerelle par défaut. Au mieux celle-ci enverra des
messages ICMP "Redirect" qui ajouteront automatiquement la route sur les
postes qui communiquent avec B. Au pire le trafic transitera par la
passerelle avant de repartir vers A.

or il s'agit de
machines qui peuvent tourner soit sous Linux soit sous Windows, et je
ne sais pas (encore) comment modifier la table de routage du noyau
XP...


route -h
L'option -p rend une route permanente.

Manu
Le #862174
On 13 août, 13:57, Pascal Hambourg wrote:



Je suppose en effet que les deux solutions envisageables sont de faire
de A soit un routeur soit un switch. L'idée du routeur ne me tente pas
beaucoup


C'est pourtant ce que tu as fait en activant ip_forward.


Oui, bien-sûr, mais c'est un routeur qui route au sein du même sous-
réseau (192.168.0.0)...ce qui est conceptuellement gênant ! ;-)
L'avantage était précisément que je n'avais pas besoin de spécifier de
route à mes autres machines : lorsqu'elles envoyaient une requête ARP
pour connaître qui était 192.168.0.10, c'était A (192.168.0.1) qui
leur répondait (puisque A fait proxy ARP), et elles lui envoyaient
aveuglément toutes leurs trames sans que j'aie à spécifier de route,
puisqu'elles pensaient s'adresser directement à B : ce côté là me
plaisait bien !


parce que je serai obligé d'ajouter une entrée aux tables de
routage de toutes les autres machines de 192.168.0.0/24 (leur
passerelle par défaut est déjà 192.168.0.254),


L'autre possibilité est d'ajouter la route qui va bien dans la table de
routage de la passerelle par défaut. Au mieux celle-ci enverra des
messages ICMP "Redirect" qui ajouteront automatiquement la route sur les
postes qui communiquent avec B. Au pire le trafic transitera par la
passerelle avant de repartir vers A.


J'y ai pensé bien-sûr, malheureusement ladite passerelle est une
freebox, et il m'est impossible de modifier sa table de routage :-(


or il s'agit de
machines qui peuvent tourner soit sous Linux soit sous Windows, et je
ne sais pas (encore) comment modifier la table de routage du noyau
XP...


route -h
L'option -p rend une route permanente.


Merci ! j'étais allé jeter un oeil entre temps


GuiGui
Le #861970

Question aux lecteurs :
au fait, ça marche bien le pontage avec une interface wifi ?


Oui, sauf un cas particulier : lorsque j'utilise mon client vpn sur une
eth virtuelle bridgée sur la wifi qui sert à sortir sur internet, mai s
c'est pas vraiment une utilisation courante.

Publicité
Poster une réponse
Anonyme