Outils pour utilisateurs

Outils du site


reseaux_bridge

Ceci est une ancienne révision du document !


Bridge...

Liens:

http://people.via.ecp.fr/~alexis/formation-linux/bridge.htmlhttp://www.cgsecurity.org/Articles/netfilter.html

Un bridge est un pont :o) C'est un pont entre 2 liens Ethernet (par exemple) qui est totalement invisible vis a vis de l'exterieur: ce bridge est une sorte de cable ethernet virtuel.

Creer un bridge

D'abord, il faut installer les outils necessaire:

 # apt-get install bridge-utils

On va creer un bridge entre l'interface eth1 et eth2

La methode simple:

Modifier /etc/network/interfaces pour avoir un truc comme ça:

 auto br0
 iface br0 inet manual
        bridge_ports eth1 eth2
        bridge_stp off
 #       bridge_hello 1
 #       bridge_maxage 4
        bridge_fd 2
        bridge_maxwait 0

Et enfin

 # ifup br0

J'ai mis en commentaire ce qui a fait partie de mes tests, sans comprendre quel etait leurs fonctions… mais ca marche aussi en les commentant.

manual permet, il me semble, de ne pas preciser d'adresse IP.

On peut specifier une adresse IP aussi ! Exemple:

 auto br0
 iface br0 inet static
        address 192.168.0.65
        network 192.168.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        bridge_ports eth1 eth2
        bridge_stp off
 #       bridge_hello 1
 #       bridge_maxage 4
 #       bridge_fd 4
        bridge_maxwait 0

Ainsi, on peut acceder a la machine qui sert de bridge sans besoin d'une 3 ieme carte reseau.

 ...

Il faut savoir que le bridge peut mettre plusieurs longues secondes avant d'être fonctionnel. (une sorte de decouverte du réseau …)

Methode compliqué...

(Methode vu et revu maintes fois… mais elle est chiiiiiiiiiante)

 #!/bin/sh -x
 IFA="eth1"
 IFB="eth2"
 ifconfig $IFA 0.0.0.0 promisc
 ifconfig $IFB 0.0.0.0 promisc
 brctl addbr br0
 brctl addif br0 $IFA
 brctl addif br0 $IFB
 brctl sethello br0 1
 brctl setmaxage br0 4
 brctl setfd br0 4
 ifconfig br0 up

Ca marche un peu… mais ce n'est pas le methode que je comprend le mieux.

Interessant quand même de faire brctl show pour voir les bridges existant.

 # brctl show
 bridge name     bridge id               STP enabled     interfaces
 br0             8000.0000b452eff6       no              eth1
                                                         eth2

bridge et iptables

C'est assez limité en fait, car le veritable outils pour les bridges, c'est ebtables qui manipulent les trames Ethernet… ce qui n'est pas mon but.

Le bridge ne passe que par le filtre FORWARD. (y parait que c'est logique) Donc, on peut autoriser ou non des echanges au niveau du filtre FORWARD.

iptables ne semble voir a priori que br0, et pas les interfaces bridgé que sont eth1 et eth2.

Je ne vois pas bien l'utilité de jouer avec br0 vu que je ne comprend pas le sens de deplacement des trames ! Le seul usage que j'en ai vu, c'est pour simplement faire:

 # iptables -A FORWARD -i br0 -j ACCEPT
 # iptables -A FORWARD -o br0 -j ACCEPT

Pour designer les interfaces physiques, il faut utiliser le module physdev… ouf

Exemple, on suppose que eth1 est le reseau de nos serveurs et eth2 est le WAN…

 # autorisons d'abord ce qui est legitime
 # Le wan ne peut pas initier de connexion et se limite au sous reseau designé
 iptables -A FORWARD -m physdev --physdev-in eth2 --physdev-out eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
 # notre reseau oui
 iptables -A FORWARD -m physdev --physdev-in eth1 --physdev-out eth2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 # autoriser le WAN a acceder au port 80 des serveurs
 iptables -A FORWARD -m physdev --physdev-in eth2 --physdev-out eth1 -p tcp --dport www -m state --state NEW -j ACCEPT
 # a SSH
 iptables -A FORWARD -m physdev --physdev-in eth2 --physdev-out eth1 -p tcp --dport ssh -m state --state NEW -j ACCEPT
 # autoriser tout au reseau de confiance...
 iptables -A FORWARD -m physdev --physdev-in eth2 -s 212.7.3.0/24 -m state --state NEW -j ACCEPT
 # et finalement
 iptables -A FORWARD -m physdev --physdev-in eth2 -j DROP

Et voila, un putain de reseau protege…

Par contre, impossible de faire du NAT ! Ca doit être normal mais c'est dommage. J'aurai voulu modifier les IP a la volé, mais ca ne semble pas possible.

Piste

On peut faire une sorte de “nat” et beaucoup d'autres choses au niveau des trames Ethernet avec un outil comme ebtables.

reseaux_bridge.1175385190.txt.gz · Dernière modification : 2007/03/31 23:53 de thierry