2005-12-19 19:34:56 +01:00
|
|
|
|
<?xml version="1.0" encoding="ISO-8859-15"?>
|
|
|
|
|
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
|
|
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
|
|
|
|
<article lang="fr">
|
|
|
|
|
<!--$Id$-->
|
|
|
|
|
|
|
|
|
|
<articleinfo>
|
|
|
|
|
<title>Shorewall et pont filtrant</title>
|
|
|
|
|
|
2006-01-01 15:11:39 +01:00
|
|
|
|
<subtitle>Version Fran<61>aise de <foreignphrase lang="en"><ulink
|
|
|
|
|
url="http://www.shorewall.net/bridge.html">Shorewall and Bridged
|
|
|
|
|
Firewalls</ulink></foreignphrase></subtitle>
|
|
|
|
|
|
2005-12-19 19:34:56 +01:00
|
|
|
|
<authorgroup>
|
|
|
|
|
<author>
|
|
|
|
|
<firstname>Tom</firstname>
|
|
|
|
|
|
|
|
|
|
<surname>Eastep</surname>
|
|
|
|
|
</author>
|
|
|
|
|
|
2006-01-02 19:04:29 +01:00
|
|
|
|
<othercredit role="translator">
|
2005-12-19 19:34:56 +01:00
|
|
|
|
<firstname>Guy</firstname>
|
|
|
|
|
|
|
|
|
|
<surname>Marcenac</surname>
|
2006-01-02 19:04:29 +01:00
|
|
|
|
|
|
|
|
|
<contrib>Adaptation fran<61>aise</contrib>
|
|
|
|
|
|
|
|
|
|
<email>guy@posteurs.com</email>
|
2006-01-01 15:11:39 +01:00
|
|
|
|
</othercredit>
|
2005-12-19 19:34:56 +01:00
|
|
|
|
</authorgroup>
|
|
|
|
|
|
2006-01-02 19:04:29 +01:00
|
|
|
|
<pubdate>2005-01-02</pubdate>
|
2005-12-19 19:34:56 +01:00
|
|
|
|
|
|
|
|
|
<copyright>
|
|
|
|
|
<year>2004</year>
|
|
|
|
|
|
|
|
|
|
<year>2005</year>
|
|
|
|
|
|
|
|
|
|
<holder>Thomas M. Eastep</holder>
|
|
|
|
|
|
|
|
|
|
<holder>Guy Marcenac</holder>
|
|
|
|
|
</copyright>
|
|
|
|
|
|
|
|
|
|
<legalnotice>
|
|
|
|
|
<para>Permission est accord<72>e de copier, distribuer et/ou modifier ce
|
|
|
|
|
document selon les termes de la Licence de Documentation Libre GNU (GNU
|
|
|
|
|
Free Documentation License), version 1.2 ou toute version ult<6C>rieure
|
|
|
|
|
publi<6C>e par la Free Software Foundation ; sans section Invariables, sans
|
|
|
|
|
premi<6D>re de Couverture, et sans texte de quatri<72>me de couverture. Une
|
|
|
|
|
copie de la pr<70>sente Licence est incluse dans la section intitul<75>e. Une
|
|
|
|
|
traduction fran<61>aise de la licence se trouve dans la section
|
|
|
|
|
<quote><ulink
|
|
|
|
|
url="http://www.idealx.org/dossier/oss/gfdl.fr.html">Licence de
|
|
|
|
|
Documentation Libre GNU</ulink></quote>. Ce paragraphe est une
|
|
|
|
|
traduction fran<61>aise pour aider <20> votre compr<70>hension. Seul le texte
|
|
|
|
|
original en anglais pr<70>sent<6E> ci-dessous fixe les conditions
|
|
|
|
|
d'utilisation de cette documentation.</para>
|
|
|
|
|
|
|
|
|
|
<para>Permission is granted to copy, distribute and/or modify this
|
|
|
|
|
document under the terms of the GNU Free Documentation License, Version
|
|
|
|
|
1.2 or any later version published by the Free Software Foundation; with
|
|
|
|
|
no Invariant Sections, with no Front-Cover, and with no Back-Cover
|
|
|
|
|
Texts. A copy of the license is included in the section entitled
|
|
|
|
|
<quote><ulink url="GnuCopyright.htm">GNU Free Documentation
|
|
|
|
|
License</ulink></quote>.</para>
|
|
|
|
|
</legalnotice>
|
|
|
|
|
</articleinfo>
|
|
|
|
|
|
|
|
|
|
<note>
|
|
|
|
|
<para><emphasis role="underline">Notes du traducteur :</emphasis> Si vous
|
|
|
|
|
trouvez des erreurs ou si vous avez des am<61>liorations <20> apporter <20> cette
|
|
|
|
|
documentation vous pouvez me contacter <ulink
|
|
|
|
|
url="mailto:guy@posteurs.com">Guy Marcenac</ulink>.</para>
|
|
|
|
|
</note>
|
|
|
|
|
|
|
|
|
|
<caution>
|
|
|
|
|
<para><emphasis role="bold">Cet article s'applique <20> Shorewall 3.0 et <20>
|
|
|
|
|
ses versions ult<6C>rieures. Si vous utilisez une version plus ancienne de
|
|
|
|
|
Shorewall, r<>f<EFBFBD>rez-vous <20> la documentation s'appliquant <20> votre
|
|
|
|
|
version.</emphasis></para>
|
|
|
|
|
</caution>
|
|
|
|
|
|
|
|
|
|
<section>
|
|
|
|
|
<title>Contexte</title>
|
|
|
|
|
|
|
|
|
|
<para>Les syst<73>mes sur lesquels tourne Shorewall fonctionnent en g<>n<EFBFBD>ral
|
|
|
|
|
comme des routeurs. Dans le mod<6F>le de r<>f<EFBFBD>rence OSI (Open System
|
|
|
|
|
Interconnect), un routeur op<6F>re au niveau 3. Shorewall peut <20>galement <20>tre
|
|
|
|
|
d<>ploy<6F> sur un syst<73>me GNU Linux se comportant comme un pont (bridge). Les
|
|
|
|
|
ponts sont des <20>quipements de niveau 2 dans le mod<6F>le OSI (pensez <20> un
|
2006-01-01 15:11:39 +01:00
|
|
|
|
pont comme <20> un switch <20>thernet).</para>
|
2005-12-19 19:34:56 +01:00
|
|
|
|
|
|
|
|
|
<para>Voici quelques-unes des diff<66>rences entre les routeurs et les
|
|
|
|
|
ponts:</para>
|
|
|
|
|
|
|
|
|
|
<orderedlist>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Les routeurs d<>terminent la destination d'un paquet en fonction
|
|
|
|
|
de l'adresse IP de destination alors que les ponts routent le trafic
|
|
|
|
|
en fonction de l'adresse MAC de destination de la trame
|
|
|
|
|
<20>thernet.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Par cons<6E>quent, les routeurs peuvent <20>tre connect<63>s <20> plusieurs
|
|
|
|
|
r<>seaux IP alors qu'un pont ne peut appartenir qu'<27> un seul
|
|
|
|
|
r<>seau.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Dans la plupart des configurations, les routeurs ne font pas
|
|
|
|
|
suivre les paquets de diffusion (broadcast) alors que les ponts le
|
|
|
|
|
font.</para>
|
|
|
|
|
|
|
|
|
|
<note>
|
|
|
|
|
<para>Les conditions dans lesquelles un routeur peut ou doit faire
|
|
|
|
|
suivre les paquets de diffusion sont d<>crites dans la section 4 de
|
|
|
|
|
la RFC 1812.</para>
|
|
|
|
|
</note>
|
|
|
|
|
</listitem>
|
|
|
|
|
</orderedlist>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section>
|
|
|
|
|
<title>Pr<EFBFBD>-requis syst<73>me</title>
|
|
|
|
|
|
|
|
|
|
<para>N'importe quelle version de Shorewall fera l'affaire si vous avez
|
|
|
|
|
besoin d'un pont mais que vous n'avez pas besoin de restreindre le trafic
|
|
|
|
|
<20> travers ce pont. Pour plus de d<>tails, reportez vous <20> la <ulink
|
|
|
|
|
url="SimpleBridge.html">Documentation pour un pont simple</ulink>.</para>
|
|
|
|
|
|
|
|
|
|
<para>Pour utiliser Shorewall comme pont filtrant:</para>
|
|
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Votre noyau doit <20>tre compil<69> avec le support pour les ponts
|
|
|
|
|
(CONFIG_BRIDGE=m ou CONFIG_BRIDGE=y).</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Votre noyau doit <20>tre compil<69> avec le support pour les
|
|
|
|
|
correspondances physdev de Netfilter (CONFIG_IP_NF_MATCH_PHYSDEV=m ou
|
|
|
|
|
CONFIG_IP_NF_MATCH_PHYSDEV=y). Le support des correspondances physdev
|
|
|
|
|
est en standard dans le noyau 2.6 mais doit <20>tre patch<63> dans les
|
|
|
|
|
noyaux 2.4 (voir <ulink
|
|
|
|
|
url="http://bridge.sf.net">http://bridge.sf.net</ulink>). Les
|
|
|
|
|
utilisateurs de Bering et de Bering uCLibc doivent trouver et
|
|
|
|
|
installer ipt_physdev.o pour leur distribution puis ajouter
|
|
|
|
|
<quote>ipt_physdev</quote> au fichier
|
|
|
|
|
<filename>/etc/modules</filename>.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Votre version d'<command>iptables</command> doit offrir le
|
|
|
|
|
support pour les correspondances physdev. Ceci est le cas avec
|
|
|
|
|
iptables 1.2.9 et toutes ses versions ult<6C>rieures.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Vous devez avoir install<6C> le paquetage des utilitaires pour les
|
|
|
|
|
ponts (bridge-utils).</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section>
|
|
|
|
|
<title>Application</title>
|
|
|
|
|
|
|
|
|
|
<para>Le diagramme au dessous pr<70>sente une application classique d'un
|
|
|
|
|
pont/firewall. Il y a d<>j<EFBFBD> un routeur install<6C> qui supporte un r<>seau
|
|
|
|
|
local sur son interface interne et vous voulez ins<6E>rer un firewall entre
|
|
|
|
|
ce routeur et les syst<73>mes de ce r<>seau local. Dans notre exemple, le
|
|
|
|
|
r<>seau local utilise des adresses de la RFC 1918 mais ceci n'est pas
|
|
|
|
|
obligatoire. Le pont marcherait de la m<>me fa<66>on si on utilisait des
|
|
|
|
|
adresses IP publiques (n'oubliez pas qu'un pont ne s'occupe pas d'adresses
|
|
|
|
|
IP).</para>
|
|
|
|
|
|
|
|
|
|
<graphic fileref="images/bridge.png" />
|
|
|
|
|
|
|
|
|
|
<para>Il existe des diff<66>rences cl<63> entre cette configuration et une
|
|
|
|
|
configuration normale de Shorewall:</para>
|
|
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Le syst<73>me Shorewall Pont/Firewall ne poss<73>de qu'une seule
|
|
|
|
|
adresse IP m<>me si il dispose de deux interfaces <20>thernet ! Cette
|
|
|
|
|
adresse IP est configur<75>e sur le pont m<>me au lieu de l'<27>tre sur l'une
|
|
|
|
|
des cartes r<>seau.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Les syst<73>mes connect<63>s au LAN sont configur<75>s avec l'adresse du
|
|
|
|
|
routeur IP (192.168.1.254 dans notre exemple) comme passerelle par
|
|
|
|
|
d<>faut.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para><command>traceroute</command> ne d<>tectera pas le Pont/Firewall
|
|
|
|
|
comme un routeur interm<72>diaire</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Si le routeur ex<65>cute un serveur DHCP, les h<>tes connect<63>s au
|
|
|
|
|
r<>seau local peuvent utiliser ce serveur sans avoir <20> ex<65>cuter
|
|
|
|
|
<command>dhcrelay</command> sure le Pont/Firewal.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
|
|
<para>Voici d'autres possibilit<69>s -- Il pourrait y avoir un hub ou un
|
|
|
|
|
switch entre le routeur et le Pont/Firewall, et il pourrait y avoir
|
|
|
|
|
d'autres syst<73>mes connect<63>s <20> ce hub ou ce switch. Tous les syst<73>mes du
|
|
|
|
|
cot<6F> local du routeur devraient toujours <20>tre configur<75>s avec des adresses
|
|
|
|
|
IP prises dans 192.168.1./24.<graphic
|
|
|
|
|
fileref="images/bridge3.png" /></para>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section>
|
|
|
|
|
<title>Configuration du pont</title>
|
|
|
|
|
|
|
|
|
|
<para>Configure le pont est une chose assez simple. On se sert de
|
|
|
|
|
l'utilitaire <command>brctl</command> issu du paquetage bridge-utils. Vous
|
|
|
|
|
trouverez des informations sur la configuration d'un pont <20> <ulink
|
|
|
|
|
url="http://bridge.sf.net">http://bridge.sf.net</ulink>.</para>
|
|
|
|
|
|
|
|
|
|
<para>Malheureusement peu de distributions Linux ont de bons outils de
|
|
|
|
|
configuration pour un pont et les outils de configuration r<>seau
|
|
|
|
|
graphiques ne d<>tectent pas la pr<70>sence d'un pont. Voici l'extrait d'un
|
|
|
|
|
fichier de configuration Debian pour un pont <20> deux interfaces et ayant
|
|
|
|
|
une adresse IP statique:</para>
|
|
|
|
|
|
|
|
|
|
<blockquote>
|
|
|
|
|
<programlisting>auto br0
|
|
|
|
|
iface br0 inet static
|
|
|
|
|
address 192.168.1.253
|
|
|
|
|
netmask 255.255.255.0
|
|
|
|
|
network 192.168.1.0
|
|
|
|
|
broadcast 192.168.1.255
|
|
|
|
|
pre-up /sbin/ip link set eth0 up
|
|
|
|
|
pre-up /sbin/ip link set eth1 up
|
|
|
|
|
pre-up /usr/sbin/brctl addbr br0
|
|
|
|
|
pre-up /usr/sbin/brctl addif br0 eth0
|
|
|
|
|
pre-up /usr/sbin/brctl addif br0 eth1</programlisting>
|
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
|
|
|
<para>Bien qu'il ne soit pas obligatoire de donner une adresse IP <20> un
|
|
|
|
|
pont, le faire permet au Pont/Firewall d'acc<63>der <20> d'autres syst<73>mes et
|
|
|
|
|
permet <20>galement l'administration distante du pont. Le pont doit aussi
|
|
|
|
|
avoir une adresse IP pour que les politiques et les r<>gles REJECT
|
|
|
|
|
fonctionnent correctement - sinon les r<>gles REJECT se comporteront
|
|
|
|
|
exactement de la m<>me mani<6E>re que des r<>gles DROP. Enfin, si un pont fait
|
|
|
|
|
partie d'un <link linkend="bridge-router">Pont/Routeur</link>, il est
|
|
|
|
|
<20>galement indispensable de lui donner une adresse IP.</para>
|
|
|
|
|
|
|
|
|
|
<important>
|
|
|
|
|
<para>Avant de configurer Shorewall, assurerez-vous d'avoir un pont qui
|
|
|
|
|
fonctionne et qui se lance au boot.</para>
|
|
|
|
|
</important>
|
|
|
|
|
|
|
|
|
|
<para>On peut attribuer une adresse IP au pont par DHCP.</para>
|
|
|
|
|
|
|
|
|
|
<para>Voici un fichier
|
|
|
|
|
<filename>/etc/sysconfig/network/ifcfg-br0</filename> issu d'un syst<73>me
|
|
|
|
|
<trademark>SUSE</trademark>:</para>
|
|
|
|
|
|
|
|
|
|
<blockquote>
|
|
|
|
|
<programlisting>BOOTPROTO='dhcp'
|
|
|
|
|
REMOTE_IPADDR=''
|
|
|
|
|
STARTMODE='onboot'
|
|
|
|
|
UNIQUE='3hqH.MjuOqWfSZ+C'
|
|
|
|
|
WIRELESS='no'
|
|
|
|
|
MTU=''</programlisting>
|
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
|
|
|
<para>Voici un fichier
|
|
|
|
|
/<filename>etc/sysconfig/network-scripts/ifcfg-br0</filename> issu d'un
|
|
|
|
|
syst<73>me <trademark>Mandriva</trademark>:</para>
|
|
|
|
|
|
|
|
|
|
<blockquote>
|
|
|
|
|
<programlisting>DEVICE=br0
|
|
|
|
|
BOOTPROTO=dhcp
|
|
|
|
|
ONBOOT=yes</programlisting>
|
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
|
|
|
<para>Aussi bien sur les syst<73>mes SUSE que sur les syst<73>mes Mandriva, il
|
|
|
|
|
faudra un script s<>par<61> pour configurer le pont.</para>
|
|
|
|
|
|
|
|
|
|
<para>Voil<EFBFBD> les scripts dont je me sers sur un syst<73>me
|
|
|
|
|
<trademark>Suse</trademark> 9.1.</para>
|
|
|
|
|
|
|
|
|
|
<blockquote>
|
|
|
|
|
<para><filename>/etc/sysconfig/network/ifcfg-br0</filename></para>
|
|
|
|
|
|
|
|
|
|
<programlisting>BOOTPROTO='dhcp'
|
|
|
|
|
REMOTE_IPADDR=''
|
|
|
|
|
STARTMODE='onboot'
|
|
|
|
|
UNIQUE='3hqH.MjuOqWfSZ+C'
|
|
|
|
|
WIRELESS='no'
|
|
|
|
|
MTU=''</programlisting>
|
|
|
|
|
|
|
|
|
|
<para><filename>/etc/init.d/bridge</filename><programlisting>#!/bin/sh
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
|
# Script to create a bridge
|
|
|
|
|
#
|
|
|
|
|
# (c) 2004 - Tom Eastep (teastep@shorewall.net)
|
|
|
|
|
#
|
|
|
|
|
# Modify the following variables to match your configuration
|
|
|
|
|
#
|
|
|
|
|
#### BEGIN INIT INFO
|
|
|
|
|
# Provides: bridge
|
|
|
|
|
# Required-Start: coldplug
|
|
|
|
|
# Required-Stop:
|
|
|
|
|
# Default-Start: 2 3 5
|
|
|
|
|
# Default-Stop: 0 1 6
|
|
|
|
|
# Description: starts and stops a bridge
|
|
|
|
|
### END INIT INFO
|
|
|
|
|
#
|
|
|
|
|
# chkconfig: 2345 05 89
|
|
|
|
|
# description: GRE/IP Tunnel
|
|
|
|
|
#
|
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
|
|
|
|
|
|
|
|
|
|
INTERFACES="eth1 eth0"
|
|
|
|
|
BRIDGE="br0"
|
|
|
|
|
MODULES="tulip"
|
|
|
|
|
|
|
|
|
|
do_stop() {
|
|
|
|
|
echo "Stopping Bridge $BRIDGE"
|
|
|
|
|
brctl delbr $BRIDGE
|
|
|
|
|
for interface in $INTERFACES; do
|
|
|
|
|
ip link set $interface down
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
do_start() {
|
|
|
|
|
|
|
|
|
|
echo "Starting Bridge $BRIDGE"
|
|
|
|
|
for module in $MODULES; do
|
|
|
|
|
modprobe $module
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
sleep 5
|
|
|
|
|
|
|
|
|
|
for interface in $INTERFACES; do
|
|
|
|
|
ip link set $interface up
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
brctl addbr $BRIDGE
|
|
|
|
|
|
|
|
|
|
for interface in $INTERFACES; do
|
|
|
|
|
brctl addif $BRIDGE $interface
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
|
start)
|
|
|
|
|
do_start
|
|
|
|
|
;;
|
|
|
|
|
stop)
|
|
|
|
|
do_stop
|
|
|
|
|
;;
|
|
|
|
|
restart)
|
|
|
|
|
do_stop
|
|
|
|
|
sleep 1
|
|
|
|
|
do_start
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
echo "Usage: $0 {start|stop|restart}"
|
|
|
|
|
exit 1
|
|
|
|
|
esac
|
|
|
|
|
exit 0</programlisting></para>
|
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
|
|
|
<para>Voici une contribution de Axel Westerhold qui propose cet exemple de
|
|
|
|
|
configuration d'un pont ayant une adresse statique sur un syst<73>me Fedora
|
2006-01-01 15:11:39 +01:00
|
|
|
|
(Core 1 and Core 2 Test 1). Remarquez que ces fichiers configurent
|
2005-12-19 19:34:56 +01:00
|
|
|
|
<20>galement le pont ce qui <20>vite d'avoir <20> <20>crire un script de configuration
|
|
|
|
|
s<>par<61>.</para>
|
|
|
|
|
|
|
|
|
|
<blockquote>
|
|
|
|
|
<para><filename>/etc/sysconfig/network-scripts/ifcfg-br0:</filename></para>
|
|
|
|
|
|
|
|
|
|
<programlisting>DEVICE=br0
|
|
|
|
|
TYPE=Bridge
|
|
|
|
|
IPADDR=192.168.50.14
|
|
|
|
|
NETMASK=255.255.255.0
|
|
|
|
|
ONBOOT=yes</programlisting>
|
|
|
|
|
|
|
|
|
|
<para><filename>/etc/sysconfig/network-scripts/ifcfg-eth0:</filename><programlisting>DEVICE=eth0
|
|
|
|
|
TYPE=ETHER
|
|
|
|
|
BRIDGE=br0
|
|
|
|
|
ONBOOT=yes</programlisting><filename>/etc/sysconfig/network-scripts/ifcfg-eth1:</filename><programlisting>DEVICE=eth1
|
|
|
|
|
TYPE=ETHER
|
|
|
|
|
BRIDGE=br0
|
|
|
|
|
ONBOOT=yes</programlisting></para>
|
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
|
|
|
<para>Florin Grad de <trademark>Mandriva</trademark> fournit ce script
|
|
|
|
|
pour configurer un pont:</para>
|
|
|
|
|
|
|
|
|
|
<blockquote>
|
|
|
|
|
<programlisting>#!/bin/sh
|
|
|
|
|
# chkconfig: 2345 05 89
|
|
|
|
|
# description: Layer 2 Bridge
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
[ -f /etc/sysconfig/bridge ] && . /etc/sysconfig/bridge
|
|
|
|
|
|
|
|
|
|
PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
|
|
|
|
|
|
|
|
|
|
do_stop() {
|
|
|
|
|
echo "Stopping Bridge"
|
|
|
|
|
for i in $INTERFACES $BRIDGE_INTERFACE ; do
|
|
|
|
|
ip link set $i down
|
|
|
|
|
done
|
|
|
|
|
brctl delbr $BRIDGE_INTERFACE
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
do_start() {
|
|
|
|
|
|
|
|
|
|
echo "Starting Bridge"
|
|
|
|
|
for i in $INTERFACES ; do
|
|
|
|
|
ip link set $i up
|
|
|
|
|
done
|
|
|
|
|
brctl addbr br0
|
|
|
|
|
for i in $INTERFACES ; do
|
|
|
|
|
ip link set $i up
|
|
|
|
|
brctl addif br0 $i
|
|
|
|
|
done
|
|
|
|
|
ifup $BRIDGE_INTERFACE
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
|
start)
|
|
|
|
|
do_start
|
|
|
|
|
;;
|
|
|
|
|
stop)
|
|
|
|
|
do_stop
|
|
|
|
|
;;
|
|
|
|
|
restart)
|
|
|
|
|
do_stop
|
|
|
|
|
sleep 1
|
|
|
|
|
do_start
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
echo "Usage: $0 {start|stop|restart}"
|
|
|
|
|
exit 1
|
|
|
|
|
esac
|
|
|
|
|
exit 0</programlisting>
|
|
|
|
|
|
|
|
|
|
<para>Le fichier <filename>/etc/sysconfig/bridge</filename>:</para>
|
|
|
|
|
|
|
|
|
|
<programlisting>BRIDGE_INTERFACE=br0 #The name of your Bridge
|
|
|
|
|
INTERFACES="eth0 eth1" #The physical interfaces to be bridged</programlisting>
|
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
|
|
|
<para>Andrzej Szelachowski a propos<6F> la contribution suivante:</para>
|
|
|
|
|
|
|
|
|
|
<blockquote>
|
|
|
|
|
<programlisting>Here is how I configured bridge in Slackware:
|
|
|
|
|
|
|
|
|
|
1) I had to compile bridge-utils (It's not in the standard distribution)
|
|
|
|
|
2) I've created rc.bridge in /etc/rc.d:
|
|
|
|
|
|
|
|
|
|
#########################
|
|
|
|
|
#! /bin/sh
|
|
|
|
|
|
|
|
|
|
ifconfig eth0 0.0.0.0
|
|
|
|
|
ifconfig eth1 0.0.0.0
|
|
|
|
|
#ifconfig lo 127.0.0.1 #this line should be uncommented if you don't use rc.inet1
|
|
|
|
|
|
|
|
|
|
brctl addbr most
|
|
|
|
|
|
|
|
|
|
brctl addif most eth0
|
|
|
|
|
brctl addif most eth1
|
|
|
|
|
|
|
|
|
|
ifconfig most 192.168.1.31 netmask 255.255.255.0 up
|
|
|
|
|
#route add default gw 192.168.1.1 metric 1 #this line should be uncommented if
|
|
|
|
|
#you don't use rc.inet1
|
|
|
|
|
#########################
|
|
|
|
|
|
|
|
|
|
3) I made rc.brige executable and added the following line to /etc/rc.d/rc.local
|
|
|
|
|
|
|
|
|
|
/etc/rc.d/rc.bridge </programlisting>
|
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
|
|
|
<para>Joshua Schmidlkofer a <20>crit:</para>
|
|
|
|
|
|
|
|
|
|
<blockquote>
|
|
|
|
|
<programlisting>Bridge Setup for Gentoo
|
|
|
|
|
|
|
|
|
|
#install bridge-utils
|
|
|
|
|
emerge bridge-utils
|
|
|
|
|
|
|
|
|
|
## create a link for net.br0
|
|
|
|
|
cd /etc/init.d
|
|
|
|
|
ln -s net.eth0 net.br0
|
|
|
|
|
|
|
|
|
|
# Remove net.eth*, add net.br0 and bridge.
|
|
|
|
|
rc-update del net.eth0
|
|
|
|
|
rc-update del net.eth1
|
|
|
|
|
rc-update add net.br0 default
|
|
|
|
|
rc-update add bridge boot
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/etc/conf.d/bridge:
|
|
|
|
|
|
|
|
|
|
#bridge contains the name of each bridge you want created.
|
|
|
|
|
bridge="br0"
|
|
|
|
|
|
|
|
|
|
# bridge_<bridge>_devices contains the devices to use at bridge startup.
|
|
|
|
|
bridge_br0_devices="eth0 eth1"
|
|
|
|
|
|
|
|
|
|
/etc/conf.d/net
|
|
|
|
|
|
|
|
|
|
iface_br0="10.0.0.1 broadcast 10.0.0.255 netmask 255.255.255.0"
|
|
|
|
|
#for dhcp:
|
|
|
|
|
#iface_br0="dhcp"
|
|
|
|
|
#comment this out if you use dhcp.
|
|
|
|
|
gateway="eth0/10.0.0.1" </programlisting>
|
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
|
|
|
<para>Les utilisateurs qui r<>ussissent dans la configuration d'un pont sur
|
|
|
|
|
d'autres distributions que celles pr<70>sent<6E>es plus haut, sont encourag<61>s <20>
|
2006-01-01 15:11:39 +01:00
|
|
|
|
<ulink url="mailto:webmaster@shorewall.net">m'envoyer</ulink> leurs
|
2005-12-19 19:34:56 +01:00
|
|
|
|
configurations afin que je puisse les publier ici.</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section>
|
|
|
|
|
<title>Configuration de Shorewall</title>
|
|
|
|
|
|
|
|
|
|
<para>Dans Shorewall, on active le mode Pont avec l'option BRIDGING du
|
|
|
|
|
fichier <filename>/etc/shorewall/shorewall.conf</filename>:</para>
|
|
|
|
|
|
|
|
|
|
<programlisting>BRIDGING=Yes</programlisting>
|
|
|
|
|
|
|
|
|
|
<para>Dans le sc<73>nario pr<70>sent<6E> plus haut, il y aurait probablement deux
|
|
|
|
|
zones d<>finies. - une pour internet et une pour le r<>seau local, ce qui
|
2006-01-01 15:11:39 +01:00
|
|
|
|
donnerait un fichier <filename>/etc/shorewall/zones</filename> comme
|
2005-12-19 19:34:56 +01:00
|
|
|
|
celui-ci:</para>
|
|
|
|
|
|
|
|
|
|
<programlisting>#ZONE TYPE OPTIONS
|
|
|
|
|
fw firewall
|
|
|
|
|
net ipv4
|
|
|
|
|
loc ipv4
|
|
|
|
|
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE</programlisting>
|
|
|
|
|
|
|
|
|
|
<para>Une politique habituelle <20> deux zones est parfaitement adapt<70>e <20> ce
|
|
|
|
|
cas — <filename>/etc/shorewall/policy</filename>:</para>
|
|
|
|
|
|
|
|
|
|
<programlisting>#SOURCE DEST POLICY LOG LIMIT:BURST
|
|
|
|
|
loc net ACCEPT
|
|
|
|
|
net all DROP info
|
|
|
|
|
all all REJECT info
|
|
|
|
|
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE</programlisting>
|
|
|
|
|
|
|
|
|
|
<para>Puisque c'est le pont lui-m<>me qui est configur<75> avec une adresse
|
|
|
|
|
IP, seul ce dispositif doit <20>tre d<>fini pour Shorewall dans
|
|
|
|
|
<filename>/etc/shorewall/interfaces</filename>:</para>
|
|
|
|
|
|
|
|
|
|
<programlisting>#ZONE INTERFACE BROADCAST OPTIONS
|
|
|
|
|
- br0 192.168.1.255
|
|
|
|
|
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE</programlisting>
|
|
|
|
|
|
|
|
|
|
<para>Les zones sont d<>finies en utilisant le fichier
|
|
|
|
|
<filename>/etc/shorewall/hosts</filename>. En supposant que le routeur est
|
|
|
|
|
connect<63> <20> <filename class="devicefile">eth0</filename> et que le switch
|
|
|
|
|
est connect<63> <20> <filename class="devicefile">eth1</filename>:</para>
|
|
|
|
|
|
|
|
|
|
<programlisting>#ZONE HOST(S) OPTIONS
|
|
|
|
|
net br0:eth0
|
|
|
|
|
loc br0:eth1
|
|
|
|
|
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS LINE -- DO NOT REMOVE</programlisting>
|
|
|
|
|
|
|
|
|
|
<para>M<EFBFBD>me lorsque Shorewall est arr<72>t<EFBFBD>, vous voudrez probablement
|
|
|
|
|
autoriser le trafic <20> transiter par le pont —
|
|
|
|
|
<filename><filename>/etc/shorewall/routestopped</filename></filename>:</para>
|
|
|
|
|
|
|
|
|
|
<programlisting>#INTERFACE HOST(S) OPTIONS
|
|
|
|
|
br0 192.168.1.0/24 routeback
|
|
|
|
|
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE</programlisting>
|
|
|
|
|
|
|
|
|
|
<para>Pour la d<>finition de votre jeu de r<>gles pour votre firewall, vous
|
|
|
|
|
pouvez prendre comme point de d<>part le fichier
|
|
|
|
|
<filename>/etc/shorewall/rules</filename> pr<70>sent<6E> dans l'exemple de
|
|
|
|
|
Firewall <20> Deux Interfaces.</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section id="bridge-router">
|
2006-01-01 15:11:39 +01:00
|
|
|
|
<title>Combinaison Pont/Routeur</title>
|
2005-12-19 19:34:56 +01:00
|
|
|
|
|
|
|
|
|
<para>Un syst<73>me Shorewall n'a pas <20> s'ex<65>cuter exclusivement comme un
|
|
|
|
|
pont ou bien comme un routeur -- il peut parfaitement faire les deux.
|
|
|
|
|
Voici un exemple:<graphic fileref="images/bridge2.png" /></para>
|
|
|
|
|
|
|
|
|
|
<para>Il s'agit quasiment de la m<>me configuration que celle pr<70>sent<6E>e
|
|
|
|
|
dans le <ulink url="shorewall_setup_guide_fr.htm">Guide de Configuration
|
|
|
|
|
de Shorewall</ulink> si ce n'est que la DMZ utilise un pont plut<75>t qu'un
|
|
|
|
|
Proxy ARP. Les modifications <20> apporter <20> la configuration pr<70>sent<6E>e dans
|
|
|
|
|
le Guide de Configuration sont les suivants:</para>
|
|
|
|
|
|
|
|
|
|
<orderedlist>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Le fichier <filename>/etc/shorewall/proxyarp</filename> doit
|
|
|
|
|
<20>tre vide dans cette configuration.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Le fichier <filename>/etc/shorewall/interfaces</filename>
|
|
|
|
|
ressemble <20> ceci:<programlisting>#ZONE INTERFACE BROADCAST OPTIONS
|
|
|
|
|
- br0 detect routefilter
|
|
|
|
|
loc eth1 detect</programlisting></para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Le fichier <filename>/etc/shorewall/hosts</filename> devrait
|
|
|
|
|
avoir:</para>
|
|
|
|
|
|
|
|
|
|
<programlisting>#ZONE HOSTS OPTIONS
|
|
|
|
|
net br0:eth0
|
|
|
|
|
dmz br0:eth2</programlisting>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Les syst<73>mes en DMZ ont besoin d'avoir une route par 192.0.2.176
|
2006-01-01 15:11:39 +01:00
|
|
|
|
vers le r<>seau 192.168.201.0/24 afin qu'ils puissent communiquer avec
|
2005-12-19 19:34:56 +01:00
|
|
|
|
le r<>seau local.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</orderedlist>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section>
|
|
|
|
|
<title>Limites</title>
|
|
|
|
|
|
|
|
|
|
<para>Avec certaines cartes sans fil, le mode pont ne fonctionne pas
|
|
|
|
|
— vous pouvez regarder <20> <ulink
|
|
|
|
|
url="http://bridge.sf.net">http://bridge.sf.net</ulink>.</para>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section>
|
|
|
|
|
<title>Liens</title>
|
|
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para><ulink
|
|
|
|
|
url="http://wiki.buenosaireslibre.org/HowTos_2fBridgedFirewall">Vous
|
|
|
|
|
trouverez ici un article en Espagnol</ulink> qui pr<70>sente de mani<6E>re
|
|
|
|
|
d<>taill<6C>e comment <quote>ponter</quote> un r<>seau public et un r<>seau
|
|
|
|
|
local avec Shorewall. Il s'agit d'une autre configuration en
|
|
|
|
|
Pont/Routeur.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
</section>
|
|
|
|
|
</article>
|