Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème tordu -- Linux

7 réponses
Avatar
Manu
Bonjour =E0 toutes et =E0 tous !

Mon probl=E8me est un peu compliqu=E9 =E0 pr=E9senter ; j'ai une machine li=
nux
A reli=E9e =E0 un petit r=E9seau local 192.168.0.0 par wifi. Elle est
=E9galement connect=E9e =E0 une deuxi=E8me machine linux B par un c=E2ble
ethernet crois=E9 ; je souhaiterais que B soit vue comme membre du
r=E9seau 192.168.0.0 et puisse communiquer avec tous les autres =E0
travers A de fa=E7on totalement transparente.

J'ai r=E9solu en partie ce probl=E8me 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=E2bl=E9
Sur B : 192.168.0.10 sur l'interface ethernet c=E2bl=E9

Tout se passe =E0 merveille, n'importe quelle machine du r=E9seau voit
192.168.0.10 au ping et vice-versa.

mais...

plus personne ne r=E9pond au broadcast ! Depuis B, personne ne r=E9pond,
et depuis A ou toute autre machine raccord=E9e en Wifi, seule la
passerelle internet r=E9pond (une freebox, 192.168.0.254).
Un autre point me chagrine : lorsque j'=E9mets 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=2ES : J'ai pens=E9 =E0 faire du NAT statique =E0 travers A (ie attribuer =
=E0 B
une adresse 192.168.1.10, et la transformer en 192.168.0.10 =E0 la
travers=E9e de A et pareil dans le sens inverse), mais cette solution ne
me satisfait pas pour plusieurs raisons :
- Le probl=E8me du broadcast n'est pas r=E9solu
- Pour que les autres machines puissent envoyer des trames =E0
192.168.0.10, je dois leur d=E9finir une entr=E9e sp=E9cifique dans leur
table de routage pour leur dire de passer par A.
J'ai imagin=E9 une autre solution en cr=E9ant une interface virtuelle de A
poss=E9dant l'adresse 192.168.0.10 de sorte que les autres machines se
dirigent toutes seules vers A ; =E7a fonctionnait, mais depuis A il
=E9tait impossible de contacter B avec l'adresse 192.168.0.10 : le NAT
ne s'effectuait pas car A consid=E8re qu'elle cause =E0 elle-m=EAme ! Il me
faut utiliser depuis A l'adresse 192.168.1.10 et cela ne me convient
pas...
Bon je sais, =E7a fait beaucoup de choses qui ne me conviennent
pas...mais =E7a rend le d=E9fi d'autant plus tentant.....non ? ;-)

7 réponses

Avatar
GuiGui
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 ?

Avatar
gloubi
"Manu" a écrit dans le message de
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)

Avatar
Pascal Hambourg
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.

Avatar
Manu
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.



Avatar
Pascal Hambourg

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.

Avatar
Manu
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


Avatar
GuiGui

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.