  Linux Bridge+Firewall Mini-HOWTO version 1.2.0
  Peter Breuer (ptb@it.uc3m.es)
  Adaptation francaise par Etienne BERNARD (eb@via.ecp.fr)
  19 Decembre 1997

  11..  IInnttrroodduuccttiioonn

  Vous      devriez      lire     l'original     Bridging     mini-HOWTO
  <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/Bridge> (NdT : ou  en
  version                                                      francaise
  <ftp://ftp.lip6.fr/pub/linux/french/docs/mini/Bridge>) par Chris  Cole
  pour une vision differente sur le sujet. L'adresse email de Chris Cole
  est chris@polymer.uakron.edu. La version de cet HOWTO, a partir duquel
  ce document est construit est la version 1.03, date du 23 aout 1996.

  22..  QQuuooii,, eett ppoouurrqquuooii ((eett ccoommmmeenntt ??))

  22..11..  QQuuooii

  Un  pont  est  un element qui connecte intelligement des brins grace a
  deux cartes ethernet.  Un _f_i_r_e_w_a_l_l est un element isolant intelligent.

  22..22..  PPoouurrqquuooii

  Si  vous avez de nombreux ordinateur, vous pouvez desirer installer un
  pont :

  1. pour economiser le prix d'un nouveau _h_u_b lorsqu'il  se  trouve  que
     vous avez une carte ethernet libre ;

  2. pour  eviter  d'avoir a apprendre l'_I_P_-_f_o_r_w_a_r_d_i_n_g et d'autres trucs
     alors que vous _a_v_e_z deux cartes dans votre ordinateur ;

  3. pour eviter des travaux de maintenance pour d'eventuels changements
     futurs !

  Le  terme  ``nombreux  ordinateurs''  peut  meme representer seulement
  trois ordinateurs, si ceux-ci font du routage ou du pontage ou  qu'ils
  changent  de  place dans la piece de temps en temps ! Vous pouvez meme
  vouloir un pont pour vous amuser  a  trouver  a  quoi  cela  sert.  Je
  voulais un pont pour la raison ``2''.

  Si  vous  etes  interesse par le point ``1'', vous etes peu dans votre
  cas.                Lisez                le                NET-2-HOWTO
  <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/NET-2-HOWTO> et le Serial-
  HOWTO  <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/Serial-HOWTO>  pour
  de meilleurs astuces.

  Vous desirez un _f_i_r_e_w_a_l_l si :

  1. vous essayez de proteger votre reseau des acces exterieur, ou

  2. vous  desirez  interdire l'acces au monde exterieur aux machines de
     votre reseau.

  Bizarrement, j'avais besoin du point ``2'' ici aussi. La politique  de
  mon  universite  pour  le  moment  est  de  ne  pas  jouer  le role de
  fournisseur d'acces a Internet pour les _u_n_d_e_r_g_r_a_d_u_a_t_e_s.

  22..33..  CCoommmmeenntt

  J'ai commence par du pontage entre deux cartes reseau sur une  machine
  jouant  le  role de _f_i_r_e_w_a_l_l, et j'ai fini par lancer le _f_i_r_e_w_a_l_l sans
  avoir coupe le pont. Cela a l'air de fonctionner,  et  c'est  beaucoup
  plus  flexible  que  chaque  configuration  isolee. Je peux arreter le
  _f_i_r_e_w_a_l_l et continuer a faire fonctionner le pont ou arreter  le  pont
  lorsque je veux etre plus prudent.

  Je  suppose  que la partie ``pont'' du noyau se trouve juste au-dessus
  de la couche physique et que la partie _f_i_r_e_w_a_l_l  se  trouve  dans  une
  couche  reseau  superieure,  afin  que  les  parties  de pontage et de
  _f_i_r_e_w_a_l_l_i_n_g agissent en fait comme  si  elles  etaient  connectees  en
  ``serie''  et  non  pas  en  ``parallele''  (aie  !),  selon le schema
  suivant :

       -> Pont-entrant -> Firewall-entrant -> Noyau -> Firewall-sortant -> Pont-sortant ->

  Il n'y a pas d'autre facon d'expliquer comment une machine  peut  etre
  en  meme  temps  ``conducteur''  et  ``isolant''.  Il  existe quelques
  embuches, mais j'en parlerai plus tard.  Schematiquement,  vous  devez
  router  les  paquets  que vous  voulez filtrer. De toute facon, cela a
  l'air de fonctionner parfaitement pour moi, et voici comment...

  33..  PPOONNTT

  33..11..  LLooggiicciieell

  Recuperez     l'utilitaire     de      configuration      du      pont
  <ftp://shadow.cabi.net/pub/Linux/BRCFG.tgz> depuis la page personnelle
  d'Alan Cox. C'est la meme reference que dans le document de Chris.  Je
  n'ai pas compris que c'etait un URL _f_t_p en non un URL _h_t_t_p...

  33..22..  LLeeccttuurree pprreelliimmiinnaaiirreess

  Lisez           le           Multiple          Ethernet          HOWTO
  <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/Multiple-Ethernet>
  pour  obtenir  des  conseils pour faire reconnaitre et pour configurer
  plus d'une carte reseau.

  Vous pourrez trouver encore plus de details sur le type  de  commandes
  magiques  a  passer  au  _p_r_o_m_p_t  se trouvent dans le Boot Prompt HOWTO
  <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/BootPrompt-HOWTO>.

  Pour    completer    vos    lectures,    lisez    le    NET-2    HOWTO
  <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/NET-2-HOWTO>.   C'est   un
  document plutot long, et vous devrez y piocher les  details  qui  vous
  interessent.

  33..33..  CCoonnffiigguurraattiioonn ddee llaanncceemmeenntt

  Les  lectures  precedentes vont vous indiquer ce dont vous avez besoin
  pour preparer le noyau a reconnaitre un deuxieme peripherique ethernet
  lors  du  demarrage,  en ajoutant la ligne suivante dans votre fichier
  /etc/lilo.conf, et en relancant lilo :

       append = 'ether=0,0,eth1'

  Notez le 'eth1'. 'eth0' represente la premiere carte.  'eth1'  est  la
  seconde  carte.  Vous  pouvez  egalement  ajouter  les  parametres  de
  demarrage a la ligne de commande  que  lilo  vous  offre.  Pour  trois
  cartes :

       linux ether=0,0,eth1 ether=0,0,eth2

  J'utilise loadlin pour lancer mon noyau Linux depuis DOS :

       loadlin.exe c:\vmlinuz root=/dev/hda3 ro ether=0,0,eth1 ether=0,0,eth2

  Notez  que  cette  astuce  oblige  le  noyau  a detecter les cartes au
  demarrage. La  detection  ne  sera  pas  faite  si  vous  chargez  les
  gestionnaires  de  peripherique  ethernet  en  mmoodduullee  (par  securite,
  puisque l'ordre de detection ne peut etre  determine),  donc  si  vous
  utilisez  des  modules,  vous  aurez  a ajouter l'IRQ appropriee et le
  parametre de port pour le  gestionnaire  de  peripherique  dans  votre
  fichier /etc/conf.modules. Dans mon cas, j'ai les lignes :

       alias eth0 3c509
       alias eth1 de620
       options 3c509 irq=5 io=0x210
       options de620 irq=7 bnc=1

  Vous  pouvez  savoir  si  vous  utilisez les modules en utilisant ``ps
  -aux'' pour voir si kerneld est lance, et en verifiant qu'il y  a  des
  fichiers  .o  dans  un  sous-repertoire  du  repertoire  /lib/modules.
  Utilisez le nom de repertoire que vous donne la commande uname -r.  Si
  vous  avez  un  kerneld lance et/ou vous avez un fichier foo.o, editez
  /etc/conf.modules et lisez avec soin la page de manuel de depmod.

  Notez egalement que jusque recemment (noyau 2.0.25), le _d_r_i_v_e_r pour la
  carte  33cc550099  ne  pouvait  pas etre utilise pour plus d'une carte s'il
  etait utilise en module. J'ai vu un _p_a_t_c_h quelque part  pour  corriger
  cette  limitation.  Il  devrait etre inclus dans le noyau a l'heure ou
  vous lisez ces lignes.

  33..44..  CCoonnffiigguurraattiioonn dduu nnooyyaauu

  Recompilez le noyau avec le _b_r_i_d_g_i_n_g :

       CONFIG_BRIDGE=y

  J'ai egalement compile mon noyau avec le _f_i_r_e_w_a_l_l_i_n_g,  l'_I_P_-_f_o_r_w_a_r_d_i_n_g
  et  l'_I_P_-_m_a_s_q_u_e_r_a_d_i_n_g.  C'est  seulement  si  vous desirez utiliser le
  _f_i_r_e_w_a_l_l_i_n_g egalement...

       CONFIG_FIREWALL=y
       CONFIG_NET_ALIAS=y
       CONFIG_INET=y
       CONFIG_IP_FORWARD=y
       CONFIG_IP_MULTICAST=y
       CONFIG_IP_FIREWALL=y
       CONFIG_IP_FIREWALL_VERBOSE=y
       CONFIG_IP_MASQUERADE=y

  Vous aurez besoin en plus de la configuration reseau standard :

       CONFIG_NET=y

  et je ne pense pas que vous deviez vous preocupper des autres  options
  reseau.  Les  options  que  je  n'ai  pas  compile  dans le noyau sont
  selectionnees en tant que modules  afin  que  je  puisse  les  ajouter
  eventuellement plus tard.

  Installez le nouveau noyau, relancez lilo et redemarrez sur le nouveau
  noyau. Rien ne devrait avoir change pour l'instant !

  33..55..  AAddrreesssseess rreesseeaauu

  Chris dit qu'un pont ne doit pas avoir d'adresse IP mais ce n'est  pas
  la configuration qui est presente ici.

  Vous allez utiliser la machine pour vous connecter au reseau donc vous
  avez besoin d'une adresse et vous devez vous  assurer  que  le  device
  _l_o_o_p_b_a_c_k   configure   normalement   afin  que  vos  logiciels  puisse
  communiquer avec ce a quoi ils s'attendent. Si _l_o_o_p_b_a_c_k est desactive,
  le _r_e_s_o_l_v_e_u_r _d_e _n_o_m_s ou d'autres services ne fonctionneront pas. Voyez
  le NET-2-HOWTO, mais votre configuration standard devrait  deja  avoir
  fait cela :

       ifconfig lo 127.0.0.1
       route add -net 127.0.0.0

  Vous allez devoir donner des adresses a vos cartes reseau. J'ai change
  le fichier /etc/rc.d/rc.inet1 de ma slackware  (3.x)  pour  configurer
  deux   cartes   et   vous  devrez  juste  regarder  votre  fichier  de
  configuration du reseau et doubler ou tripler le nombre d'instructions
  s'y trouvant. Supposons que vous ayez deja une adresse a

       192.168.2.100

  (cette  adresse  fait  partie  des adresses reservees pour des reseaux
  prives, mais ne faites pas attention, cela ne  cassera  rien  si  vous
  utilisez  cette  adresse  par erreur) alors vous avez probablement une
  ligne ressemblant a

       ifconfig eth0 192.168.2.100 netmask 255.255.255.0 metric 1

  dans votre fichier de configuration. La premiere chose que vous  allez
  probablement  vouloir faire est couper l'espace des adresses atteintes
  par cette carte en deux afin de pouvoir eventuellement faire  un  pont
  ou  filtrer  entre les deux moities. Ajoutez donc une ligne qui reduit
  le masque de  sous-reseau  pour  adresser  un  plus  petit  nombre  de
  machines :

       ifconfig eth0 netmask 255.255.255.128

  Essayez  cette  configuration.  Cela restreint la carte a l'espace des
  adresses entre .0 et .127.

  A present,  vous  pouvez  configurer  votre  deuxieme  carte  dans  la
  deuxieme  moitie  de  l'espace  des adresses locales. Assurez vous que
  personne n'utilise l'adresse que vous allez prendre. Pour des  raisons
  de  symetrie,  j'utiliserai  ici 228=128+100. N'importe quelle adresse
  conviendra, a condition qu'elle ne se trouve pas  dans  le  masque  de
  l'autre  carte.  Evitez  les  adresses  speciales  comme .0, .1, .128,
  etc... a moins que vous sachiez ce que vous faites.

       ifconfig eth1 192.168.2.228 netmask 255.255.255.128 metric 1

  Cela restreint la deuxieme carte aux adresses entre .128 et .255.

  33..66..  RRoouuttaaggee rreesseeaauu

  C'est ici que les defauts de l'utilisation simultannee du pont  et  du
  firewall  :  vous  ne  pouvez  pas filtrer des paquets qui ne sont pas
  routes. Pas de route, pas de firewall. Cette  regle  est  verifiee  en
  tout cas dans les version 2.0.30 ou suivantes du noyau. Les filtres du
  firewall sont etroitement lies au code source de l'IP-Forwarding.

  Cela ne signifie pas que vous ne pouvez pas  utiliser  le  pont.  Vous
  pouvez  installer  un pont entre deux cartes et filtrer a partir d'une
  troisieme. Vous pouvez n'avoir que deux cartes et  les  faire  filtrer
  une  adresse  IP externe, comme celle d'un routeur proche, a condition
  que le routeur relie a une seule carte.

  En  d'autres  termes,  puisque  je  veux  utiliser  la  machine  comme
  firewall,  je dois controler avec precision la destination physique de
  certains paquets.

  J'ai le petit reseau de machines  sur  un  _h_u_b  connecte  a  eth0,  je
  configure donc un reseau de ce cote :

       route add -net 192.168.2.128 netmask 255.255.255.128 dev eth0

  Remplacez  le  128 par un 0 pour un reseau de classe C entier. Ici, je
  ne le fais pas puisque j'ai juste divise en deux l'espace d'adressage.
  Le  'dev eth0' n'est pas necessaire ici, puisque l'adresse de la carte
  fait partie de ce reseau, mais il peut  etre  necessaire  de  l'ecrire
  chez vous. On pourrait desirer plus d'une carte prenant ce sous reseau
  en charge (127 machines sur un  segment,  bravo  !)  mais  ces  cartes
  utiliseraient  le  meme  masque de sous-reseau et seraient considerees
  comme une seule par la partie routage du noyau.

  Sur l'autre carte, j'ai une ligne qui passe directement a  travers  un
  gros routeur, auquel je fais confiance.

                                               client 129
           __                                        |    __
  client 1   \    .0                    .128         |   /   net 1
  client 2 --- Hub - eth0 - Kernel - eth1 - Hub - Router --- net 2
  client 3 __/       .100            .228         .2 |   \__ net 3
                                                     |
                                               client 254

  J'utilise  une  route  fixe  (c'est-a-dire 'statique') depuis la carte
  vers ce routeur, puisque sinon il ferait partie  du  masque  de  sous-
  reseau  de  la premiere carte et le noyau se tromperait sur la maniere
  d'envoyer les paquets au routeur. Je veux filtrer ces paquets et c'est
  une raison de plus de les router explicitement.

       route add 192.168.2.2 dev eth1

  Je  n'en  ai  pas  besoin,  puisque je n'ai pas d'autres machines dans
  cette moitie de l'espace d'adressage, mais je declare un reseau sur la
  seconde  carte. La separation de mes interfaces reseau en deux groupes
  grace au routage me permettra eventuellement de faire du filtrage tres
  precis,  mais vous pouvez tres bien vous en sortir avec beaucoup moins
  de routage que cela.

       route add -net 192.168.2.128 netmask 255.255.255.128 dev eth1

  J'ai egalement besoin d'envoyez tous les paquets non-locaux  au  monde
  et je dis donc au noyau de les envoyer au gros routeur :

       route add default gw 192.168.2.2

  33..77..  ccoonnffiigguurraattiioonn ddee llaa ccaarrttee

  Nous avions auparavant une configuration standard pour le reseau, mais
  comme nous faisons du _b_r_i_d_g_i_n_g, nous devons ecouter sur  chaque  carte
  les  paquets  qui  ne  nous sont pas destines. Ceci doit aller dans le
  fichier de configuration reseau :

       ifconfig promisc eth0
       ifconfig promisc eth1

  La page de manuel indique d'utiliser allmulti=promisc,  mais  cela  ne
  fonctionnait pas pour moi.

  33..88..  RRoouuttaaggee aaddddiittiioonnnneell

  J'ai remarque une chose : j'ai du passer la seconde carte dans un mode
  lui permettant aux questions du gros routeur a propos des machines que
  je cache sur mon reseau local.

       ifconfig arp eth1

  Pour  faire  bonne  mesure, j'ai effectue cette operation pour l'autre
  carte aussi.

       ifconfig arp eth0

  33..99..  CCoonnffiigguurraattiioonn dduu ppoonntt

  Ajoutez la mise en route du pont dans votre fichier de configuration :

       brcfg -enable

  La  configuration  du pont mettra en route certains ports. Vous pouvez
  experimenter l'allumage et l'extinction des ports un a la fois :

       brcfg -port 0 -disable/-enable
       brcfg -port 1 -disable/-enable

  Vous pouvez obtenir un rapport sur l'etat courant avec :

       brcfg

  sans aucun parametres. Vous pourrez voir que le pont ecoute,  apprend,
  et  effectue  le  _f_o_r_w_a_r_d_i_n_g.  (Je  ne  comprends pas pourquoi le code
  repete la meme adresse materielle  pour  mes  deux  cartes,  mais  peu
  importe... le HOWTO de Chris affirme que c'est correct).

  33..1100..  EEssssaaiiss

  Si  le  reseau  est  encore  en  fonction,  essayez  votre  script  de
  configuration en vrai en arretant les deux cartes et en l'executant :

       ifconfig eth0 down
       ifconfig eth1 down
       /etc/rc.d/rc.inet1

  Avec un peu de chance, les divers systemes tel nnffss, yyppbbiinndd, etc...  ne
  s'en  rendront  pas  compte.  _N_'_e_s_s_a_y_e_z  _p_a_s  _c_e_c_i  _s_i _v_o_u_s _n_'_e_t_e_s _p_a_s
  _d_e_r_r_i_e_r_e _l_e _c_l_a_v_i_e_r _!

  Si vous desirez etre plus prudent que cela,  vous  devrez  arreter  le
  plus  de  demons  possible,  et  demonter les repertoires NFS. Le pire
  qu'il puisse vous arriver est d'avoir a rebooter en  mode  _s_i_n_g_l_e_-_u_s_e_r
  (le  parametre  'ssiinnggllee'  de  lilo  ou  loadlin),  et de restaurer les
  fichiers a leur valeur d'avant les modifications.

  33..1111..  VVeerriiffiiccaattiioonnss

  Verifiez qu'il existe un trafic different sur chaque interface :

       tcpdump -i eth0

       tcpdump -i eth1

  Vous devriez etre habitue a l'utilisation de ttccppdduummpp pour trouver  des
  evenements  qui  ne  devraient  pas se passer, ou qui existent mais ne
  devraient pas.

  Par exemple, recherchez les paquets qui ont traverse le pont  vers  la
  seconde  carte  depuis  le reseau interne. Ici, je cherche les paquets
  venant de la machine avec l'adresse .22 :

       tcpdump -i eth1 -e host 192.168.2.22

  A present, envoyez un ping depuis l'hote en .22 vers le routeur.  Vous
  devriez voir le paquet affiche par tcpdump.

  A  present,  vous devriez avoir un pont, et qui possede egalement deux
  adresses  reseau.  Verifiez  que  vous  pouvez   les   pinger   depuis
  l'exterieur  de  votre  reseau  local  et depuis l'interieur, que vous
  pouvez utiliser telnet et ftp depuis et vers l'interieur du reseau.

  44..  FFIIRREEWWAALLLLIINNGG

  44..11..  LLooggiicciieell eett lleeccttuurreess

  Vous         devriez          lire          le          Firewall-HOWTO
  <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/Firewall-HOWTO>.

  Il  vous indiquera ou trouver ipfwadm si vous ne l'avez pas deja. Vous
  pouvez egalement recuperer d'autres outils, mais seulement ipfwadm m'a
  ete  utile.  C'est  pratique  et  de  bas  niveau  !  Vous pouvez voir
  exactement ce qu'il fait.

  44..22..  VVeerriiffiiccaattiioonnss pprreelliimmiinnaaiirreess

  Vous avez compile l'IP-forwarding et le masquerading dans le noyau, et
  vous  allez  verifier que le _f_i_r_e_w_a_l_l est dans son etat par defaut (il
  accepte) grace a :

       ipfwadm -I -l
       ipfwadm -O -l
       ipfwadm -F -l

  Ce  qui,  dans  l'ordre,  'affiche  les  regles  affectant  la  partie
  ..'entrante  ou  sortante  ou  qui  fait  suivre (_m_a_s_q_u_e_r_a_d_i_n_g) '.. du
  _f_i_r_e_w_a_l_l'. L'option '-l' signifie 'lister'.

  Si vous avez compile l'IP accounting egalement :

       ipfwadm -A -l

  Vous devriez constater qu'aucune regle n'est definir et  que  l'action
  par  defaut  est  d'accepter tous les paquets. Vous pouvez retourner a
  cet etat a tout moment, avec :

       ipfwadm -I -f
       ipfwadm -O -f
       ipfwadm -F -f

  L'option '-f' signifie 'flush' (en francais, 'vider').  Vous  pourriez
  en avoir besoin.

  44..33..  RReeggllee ppaarr ddeeffaauutt

  Je  veux  interdire l'acces au monde entier depuis mon reseau interne,
  et rien d'autre, donc je vais donner comme derniere regle (comme regle
  par defaut) une regle indiquant d'ignorer les paquets venant du reseau
  interne et diriges vers l'exterieur. Je place toutes les regles  (dans
  cet  ordre) dans le fichier /etc/rc.d/rc.firewall que j'execute depuis
  /etc/rc.d/rc.local au demarrage.

       ipfwadm -I -a reject -S 192.168.2.0/255.255.255.128 -D 0.0.0.0/0.0.0.0

  Le '-S' represente l'adresse source/masque  de  sous-reseau.  L'option
  '-D' est pour l'adresse destination/masque de sous-reseau.

  Ce  format  n'a  plus  le  vent  en  poupe. ipfwadm est intelligent et
  connait des abreviations courantes. Verifier les pages de manuel.

  Il peut etre plus pratique de placer certaines ou  toutes  les  regles
  sur  la  partie  sortante du firewall en utilise '-O' au lieu de '-I',
  mais je supposerai que les regles sont concues pour etre utilisees sur
  la moitie entrante.

  44..44..  AAcccceess ppaarr aaddrreessssee

  Avant  la  regle  par  defaut,  je  dois placer des regles qui servent
  d'exceptions pour cette interdiction generale des services  exterieurs
  aux clients interieurs.

  Je  veux  traiter  les  adresses  des machines derriere le firewall de
  maniere speciale. Je veux empecher  aux  gens  de  se  loguer  sur  la
  machine  qui  sert  de  firewall a moins qu'elles aient une permission
  speciale, mais une fois connectees, elles devraient etre  capables  de
  parler au monde exterieur.

       ipfwadm -I -i accept -S 192.168.2.100/255.255.255.255 \
        -D 0.0.0.0/0.0.0.0

  Je veux egalement que les clients internes soient capables de parler a
  la machine faisant _f_i_r_e_w_a_l_l. Peut-etre pourront-elles la persuader  de
  les laisser sortir !

  ipfwadm -I -i accept -S 192.168.2.0/255.255.255.128 \
   -D 192.168.2.100/255.255.255.255

  Verifiez  que  vous  pouvez  joindre  les  machines  a  l'interieur du
  firewall depuis l'exterieur par telnet, mais que vous  ne  pouvez  pas
  sortir.  Vous pouvez faire le premier pas, mais les clients ne peuvent
  pas vous envoyer de messages. Essayez egalement rlogin  et  ping  avec
  tcpdump  lance  sur une carte ou l'autre. Vous devriez etre capable de
  comprendre ce que vous lirez.

  44..55..  AAcccceess ppaarr pprroottooccoollee

  J'assouplis les regles protocole par protocole. Je veux que les  pings
  depuis  l'exterieur  vers  l'interieur  obtiennent  une  reponse,  par
  exemple, donc j'ai ajoute la regle :

       ipfwadm -I -i accept -P icmp -S 192.168.2.0/255.255.255.128 \
        -D 0.0.0.0/0.0.0.0

  L'option '-P icmp' correspond au protocole tout entier.

  Avant que j'installe un _p_r_o_x_y _f_t_p, j'autorise egalement les appels ftp
  sortants  en  relachant  les restrictions sur un port donne. Ceci vise
  les ports 20, 21 et 115 sur les machines externes :

       ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 \
        -D 0.0.0.0/0.0.0.0 20 21 115

  Je n'ai pas pu faire fonctionner sendmail  entre  les  clients  locaux
  sans   serveur  de  noms.  Au  lieu  d'installer  un  serveur  de  nom
  directement sur le _f_i_r_e_w_a_l_l, j'ai juste autorise les requetes  TCP  de
  resolution  de nom visant le plus proche serveur de nom, et j'ai place
  son adresse dans le fichier /etc/resolv.conf des clients. ('nameserver
  123.456.789.31' sur une ligne separee).

       ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 \
        -D 123.456.789.31/255.255.255.255 54

  Vous  pouvez  trouver  quel  numero  de  port et protocole requiert un
  service grace a tcpdump. Utilisez ce service avec un ftp ou un  telnet
  ou  autre  vers  ou depuis une machine interne, et observez-le sur les
  ports d'entree et de sortie du _f_i_r_e_w_a_l_l avec tcpdump :
       tcpdump -i eth1 -e host client04

  par exemple. Le  fichier  /etc/services/  est  une  importante  source
  d'indices. Pour laisser ENTRER le telnet et le ftp depuis l'exterieur,
  vous devez autoriser un  client  local  a  envoyer  des  donnees  vers
  l'exterieur  sur  un  port  donne.  Je  comprends  pourquoi  ceci  est
  necessaire pour le ftp (c'est le serveur qui etablit la  connexion  de
  donnees), mais je me demande pourquoi telnet en a egalement besoin.

       ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 ftp telnet \
        -D 0.0.0.0/0.0.0.0

  Il  existe  un probleme particulier avec certains demons qui cherchent
  le nom d'hote de la machine _f_i_r_e_w_a_l_l afin de decider quelle  est  leur
  adresse  reseau.  J'ai eu des problemes avec rpc.yppasswdd. Il insiste
  sur des informations _b_r_o_a_d_c_a_s_t qui indiquent qu'il se trouve en dehors
  du  _f_i_r_e_w_a_l_l  (sur  la seconde carte). Cela signifie que les clients a
  l'interieur ne peuvent pas le contacter.

  Au lieu de lancer l'IP aliasing ou de changer le code source du demon,
  j'ai  traduit  le nom vers l'adresse de la carte du cote interieur sur
  les clients, dans leur fichier /etc/hosts.

  44..66..  VVeerriiffiiccaattiioonnss

  Vous voudrez tester que vous pouvez toujours utiliser  telnet,  rlogin
  et  ping  depuis  l'exterieur.  Depuis  l'interieur, vous devriez etre
  capable d'utiliser ping vers la sortie. Vous  devriez  egalement  etre
  capables   d'utiliser  le  telnet  vers  la  machine  _f_i_r_e_w_a_l_l  depuis
  l'interieur, et cette derniere  manipulation  devrait  vous  permettre
  d'acceder au reste.

  Et  voila.  A  present,  vous voulez probablement apprendre rrppcc/YYellow
  PPages et leur interaction avec le fichier de mots de passe. Le  reseau
  derriere  le  firewall  devrait  vouloir empecher aux utilisateurs non
  privilegies de se logguer sur le _f_i_r_e_w_a_l_l, et donc  de  sortir.  C'est
  traite dans un autre HOWTO !

