# [Bridge][pont reseu] connecter deux réseaux

## zuthos

Bonjour,

J'ai la configuration suivante:

Une BOX relié a un réseau d'ordinateur.

Tous les ordinateurs discutent bien ensemble. A par un qui est trop éloigné et je ne peut pas y mettre une carte wifi.

J'ai donc eu l'idée de mettre un PC avec une carte wifi et une carte réseau. la carte wifi est relié a la BOX est tous fonctionne bien.

La carte réseau est branché a l'autre, et fonctionne entre les deux.

Maintenant, la question est comment je fait pour que le passage carte reseau/wifi soit transparent?

Il semble que je doivent réaliser un bridge. Toutefois, je n'arrive pas à trouver de documentation sur le net pour gentoo. 

J'en ai bien trouvé une pour Débian, mais je n'arrive pas à l'adapter.

Quelqu'un connaît une documentation?

Merci d'avanceLast edited by zuthos on Wed Jan 19, 2011 5:11 am; edited 2 times in total

----------

## bdouxx

T'as fait une recherche sur "pont reseau"?, il y a des brides d'info qui trainent un peu partout, en faisant un mix ça devrait fonctionner:

http://www.gentoo.org/doc/fr/handbook/handbook-x86.xml?part=4&chap=3#doc_chap7

https://forums.gentoo.org/viewtopic-t-829337-start-0.html

----------

## zuthos

Merci,

Je n'avais effectivement pas pensé à mettre le terme en français. Pourtant la langue anglaise me pose de sérieuses difficultés..

Je test, et je met sur résolu  :Very Happy: 

----------

## zuthos

Bonjour,

J'ai donc suivi les instructions.

Notament, j'ai installé le package:

```

# eix bridge-utils 

[I] net-misc/bridge-utils

     Available versions:  1.2 1.4

     Installed versions:  1.4(11:20:29 16/01/2011)

     Homepage:            http://bridge.sourceforge.net/

     Description:         Tools for configuring the Linux kernel 802.1d Ethernet Bridge

```

Ce dernier est donc bien installé.

Pourtant:

```

# /etc/init.d/net.br0 start

 * Bringing up interface br0

 *   Creating bridge br0 ...

add bridge failed: Package not installed                                                                                                                                  [ !! ]

 * ERROR: net.br0 failed to start

zsh: exit 1     /etc/init.d/net.br0 start

```

J'ai du oublié quelque chose . Mais quoi   :Question: 

Merci d'avance pour votre aide

----------

## xaviermiller

"Package not installed" : as-tu lu les messages affichés après l'installation ? Il faut probablement configurer tout cela.

----------

## Leander256

Mon ami Google me dit que tu n'as pas activé le support dans le noyau, ou que tu as oublié de charger le module (c'est documenté dans le howto de BVR, mais pas dans la doc officielle)  :Wink: 

Sinon ton titre est un peu limite, la catégorie est bonne mais ce serait mieux avec une petite description quand même!

----------

## zuthos

Merci de vos réponses.

En effet, mon noyau ne possédais pas la possibilité de gérer les ponts réseaux.

Après compilations (j'en ai profité pour upgrader mon noyeau  :Smile:  ) .

Toutefois, si je lance le service br0, l'ordinateur perd les deux réseaux  :Sad:  .

```
# /etc/init.d/net.br0 start

  * Bringing up interface br0

  *   Creating bridge br0 ...

  set hello timer failed: Invalid argument

  *   Adding ports to br0

  *     wlan0 ...                                                          [ ok ] 

  *     eth1 ...                                                           [ ok ] 

  *   192.168.1.99 ...                  

```

Il semble que son timer soit pas contents   :Question: 

Voici ma configuration pour réaliser ce pont:

```

# Configuration du reseau local standard

        dns_domain_lo=( "Zuthos.net")

# Conficuration carte WIFI

        config_wlan0=( "192.168.1.11 broadcast 192.168.1.255 netmask 255.255.255.0" )

        dns_servers_wlan0=( "192.168.1.1")

        dns_domain_wlan0=( "Zuthos.net")

           routes_wlan0=("default via 192.168.1.1")

        config_ESSID=( "Zuthos")

        essid_wlan0="Zuthos"

        mode_wlan0="managed"

# Configuration carte Ethernet

        config_eth1=( "192.168.0.1 broadcast 192.168.0.255 netmask 255.255.255.0")

        dns_domain_eth1=( "Zuthos.net")

        dns_servers_eth1=( "192.168.1.1")

# Bridge

         brctl_br0=( "setfd 0" "sethello 0" "stp off" )

         bridge_br0="wlan0 eth1"

         config_br0=( "192.168.1.99")

         RC_NEED_br0="net.wlan0 net.eth1"

```

J'ai mis une adresse IP au hasard pour br0. En effet, je n'ai pas trouvé d'explication sur le choix à faire

----------

## Poussin

Tiré de la doc:

```

# Les ports doient être explicitement non configurés pour ne pas

# lancer DHCP :

config_eth0=( "null" )

config_eth1=( "null" )

```

edit: et pour anticiper ton problème suivant: ta carte wifi ne doit pas être en managed mais en master (et pour ça faut que le pilote le supporte :s )

----------

## zuthos

 *Poussin wrote:*   

> Tiré de la doc:
> 
> ```
> 
> # Les ports doient être explicitement non configurés pour ne pas
> ...

 

C'est la que je comprend pas. Si je met config_eth0=( "null" ) comment les cartes font pour pouvoir discuter chacun de leur coté avec leur réseau respectif?

Bon, force est de constater que cela fonctionne du coté de la carte ethernet

Toutefois, je ne peut pas mettre ma carte en master puisque j'ai déja un master sur le reseau wifi.

Le réseau wifi est piloté par une box. Je n'ai pas trouvé d'option pour la passer en slave.

Je vais essayer de comprendre comment fonctionne la solution avec les vlans..

----------

## Poussin

J'ai dit une connerie (si je vous jure). Je pensais que tu transformais ton portable en AP en quelque sorte. Toi tu veux donc faire l'inverse -> ton wifi est client et "partage" sa connection de façon transparente avec ton réseau filaire.

tu as donc:

```

BOX --- Réseaux filaire 1 + Wifi

                              |

                              +------ Portable ----- Réseau filaire 2

```

Ton wifi ne doit donc pas être en master mais bien en managed (si je ne me plante pas encore).

Ah si j'avais encore mon openwrt sous la main, il était configuré pour faire ça :/

 *Quote:*   

> 
> 
> C'est la que je comprend pas. Si je met config_eth0=( "null" ) comment les cartes font pour pouvoir discuter chacun de leur coté avec leur réseau respectif? 
> 
> Bon, force est de constater que cela fonctionne du coté de la carte ethernet 
> ...

 

Quand tu branches un switch sur un réseau, il n'a pas d'adresse IP (sous si il est configurable, mais c'est juste pour accéder à la config). Un pont est transparent, donc les machines avant le pont discutent directement avec les machines après le pont sans même savoir que le pont existe -> rien à caler que le pont ait une adresse ip  ^^

Maintenant, si tu veux pouvoir te servir du PC qui fait pont, ben lui il lui faut une adresse -> sur l'interface br0 c'est bien :]

Petite question: Ta box internet n'a pas de serveur dhcp?

edit: pour que cela fonctionne, il faut aussi que les cartes acceptent de spoofer l'adresse mac bien entendu, et ça ce n'est pas toujours le cas, notamment avec les cartes wifi

----------

## zuthos

 *Poussin wrote:*   

> J'ai dit une connerie (si je vous jure). Je pensais que tu transformais ton portable en AP en quelque sorte. Toi tu veux donc faire l'inverse -> ton wifi est client et "partage" sa connection de façon transparente avec ton réseau filaire.
> 
> tu as donc:
> 
> ```
> ...

 

Oui!! c'est exactement cela

 *Poussin wrote:*   

> 
> 
> Ton wifi ne doit donc pas être en master mais bien en managed (si je ne me plante pas encore).
> 
> Ah si j'avais encore mon openwrt sous la main, il était configuré pour faire ça :/
> ...

 

Ok, compris  :Very Happy: 

 *Poussin wrote:*   

> 
> 
> Petite question: Ta box internet n'a pas de serveur dhcp?
> 
> 

 

Non, je n'arrive pas à retrouver mes PC entre eux. En mettant une adresse fixe à tous le monde, c'est plus facile pour moi.

Mais, je n'ai pas vérifier avec la box si cela pouvait s'arranger

 *Poussin wrote:*   

> 
> 
> edit: pour que cela fonctionne, il faut aussi que les cartes acceptent de spoofer l'adresse mac bien entendu, et ça ce n'est pas toujours le cas, notamment avec les cartes wifi

 

 :Shocked:  J'espére que ce n'est pas le cas avec moi. Comment puis,je vérifier???

----------

## Poussin

En essayant?  :Very Happy:  Non, je ne sais pas répondre comme ça je dois dire.

Au pire, si le bridge ne marche pas, il te restera la possibilité de transformer ton portable en routeur. Là, pas de raison que ça ne fonctionne pas :]

Donc essaye le mode managed, config("null") pour les interfaces réelles, config l'ip sur l'interface bridge. Bien entendu les options de ton wifi doivent être indiquée. Je sèche un peu, je ne suis pas certain que ça fonctionne. A la base, c'est du bridge (802.1d), il fait un pont entre 2 réseaux ethernet, ce qui n'est pas le cas quand le wifi rentre en jeu. Mais comme c'est faisable avec les petits routeurs wireless compatibles linux, il doit bien y avoir une solution ^^

----------

## zuthos

Bon, il semble que cela ne fonctionne pas.

Au cas ou, je vous livre mon nouveau fichier /etc/conf.d/net

Précision/ suite à une compilation de mon noyau eth0 est devenu wlan0. Je met ceci pour la cohérance avec tous ce qui précéde.

Donc,/etc/conf.d/ne

```

# Configuration du reseau local standard

        dns_domain_lo=( "VeroNico.net")

# Conficuration carte WIFI

        config_wlan0=("null")

        dns_servers_wlan0=( "192.168.1.1")

        dns_domain_wlan0=( "VeroNico.net")

        routes_wlan0=("default via 192.168.1.1")

        config_ESSID=( "Veronico")

        essid_wlan0="Veronico"

        mode_wlan0="managed"

# Configuration carte Ethernet

        config_eth1=("null")

        dns_domain_eth1=( "VeroNico.net")

        dns_servers_eth1=( "192.168.1.98")

# Bridge

         brctl_br0=( "setfd 0" "sethello 0" "stp off" )

         bridge_br0="wlan0 eth1"

         config_br0=( "192.168.1.97")

         RC_NEED_br0="net.wlan0 net.eth1"

```

Si vous voyez une erreur?

Ou une idée pour contourner mon problème?

Quel est le principe du routeur dans mon cas?

----------

## Poussin

Pour moi, ta configuration wifi ne devrait contenir que ceci: (par ailleurs, pourquoi 2 config d'ESSID différentes? Je ne suis pas à jour à ce niveau, mais ça me semble étrange)

```

        config_wlan0=("null") 

        config_ESSID=( "Veronico") 

        essid_wlan0="Veronico" 

        mode_wlan0="managed" 

```

et ta configuration filaire:

```

        config_eth1=("null") 

```

Toute information d'ip, de dns, de gateway, etc... -> dans le br0

Petite question, sans le br0, quand tu configures tes ip sur les différentes interfaces, tu arrives bien à accéder à tes 2 réseaux depuis ta machine?

----------

## zuthos

Oui, les réseaux sont fonctionnel.

J'ai justement voulu partir de deux réseaux fonctionnant. J'avais compris que le pont était justement au-dessus.

Bon, j'essaye cette nouvel configuration demain  :Very Happy: 

----------

## guilc

Bon, juste une question : pourquoi, mais au grand pourquoi t'escrimes-tu à vouloir le même sous-réseau partout !!

Pourquoi donc s'embêter avec un bridge ici !

Un simple routage est plus que largement suffisant !

Petit schéma :

BOX - réseau 192.168.1.0/24

----------- WIFI -----------

ordinateur (on le nommera A)connecté en WIFI (192.168.1.0/24) + ETH0 (192.168.2.0/24 par exemple)

--------- ETHERNET ---------

PORTABLE (on le nommera B) loin qui n'a pas de wifi en ethernet sur 192.168.2.0/24

Bon, maintenant, on s'assure que :

- A a accès à internet par le wifi

- A a accès à B par eth0

- la route par défaut de A est 1992.168.1.1 (la box en wifi)

Ensuite :

- on configure sur B une route par défaut par A (donc par une IP en 192.168.2.X)

- sur A, on active le forwarding : 

```
echo "net.ipv4.ip_forward = 1

net.ipv4.conf.all.forwarding = 1" >> /etc/sysctl.conf
```

- sur A, on ajoute l'iptable qui va bien :

```
/sbin/iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

/sbin/iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

/sbin/iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
```

- sur B, on mets les DNS adéquats (par exemple, 192.168.1.1 devrait être OK, la plupart des box faisant forwarder DNS)

Et voila, si on fait un ping google.fr sur B, ça doit passer. Pas la peine de se prendre la tête avec un bridge !

----------

## Poussin

 *guilc wrote:*   

> Bon, juste une question : pourquoi, mais au grand pourquoi t'escrimes-tu à vouloir le même sous-réseau partout !!
> 
> Pourquoi donc s'embêter avec un bridge ici !
> 
> 

 

Parce que, en théorie, c'est plus simple (= dans le sens "on remonte une couche de l'OSI en moins!") De plus, faire du NAT, dans du NAT, c'est pas méga propre. Et accessoirement, pourquoi faire du NAT? Même s'il passe en mode "routeur", pas besoin de faire du masquerade -> juste configurer les routes correctements.

Puis le NAT, c'est satanique  :Very Happy: 

----------

## guilc

Oui oui, nat pas obligé, après, suivant les box, elles peuvent ne pas aimer, d'autant plus que si tu nates pas, faut router sur la box le sous-réseau qui se cache derrière le PC qui fait passerelle, sinon le retour des paquets ne trouvera jamais sa route...

Et comme je pars du principe qu'on ne peux pas toucher la table de routage de la box...

Bref, ça fait une conf sans prise de tête (KISS qu'il disait l'autre)

----------

## zuthos

Bonjour,

Merci de votre aide.

En fait, je pensais que le pont était ce qui fallait dans mon cas.

Mais, bon, j'essaye dont de faire avec iptable.

Premier essai iptable n'est pas installé  :Sad: 

Deuxième essai, il faut recompiler mon noyau.

Le soucis, est que je ne trouve pas l'option pour activer le NAT. Si quelqu'un pouvait m'indiquer ou trouver cela. Merci d'avance

Bon, finalement un petit make config et beaucoup de patience m'on permis de résoudre en parti ce soucis.

En parti parce que, j'ai bien:

CONFIG_NF_NAT=m

Mais:

```

# iptables -v -L -t nat

iptables v1.4.10: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)

Perhaps iptables or your kernel needs to be upgraded.

```

Je supose qu'il manque quelque chose. Mais quoi?

----------

## RaX

Salut,

# modprobe nf_nat

# lsmod | grep nf_nat

Ça te retourne quelque chose ou pas ?

----------

