Mini How-To sur la configuration de l'aliasing IP sous Linux
 Harish Pillay,  [email protected]
 Version Francaise par Laurent Caillat-Vallet,  caillat@univ-
 lyon1.fr
 13 Janvier 1997

 C'est une recette de cuisine pour configurer et utiliser l'aliasing IP
 sous Linux.

 11..  SSyynnooppssiiss

 C'est  une  recette  de  cuisine  sur  la  maniere  de  configurer  et
 d'utiliser  l'aliasing  IP  sur une machine Linux. De plus, il y a des
 instructions pour configurer la  machine  pour  recevoir  du  courrier
 electronique sur les numeros alias IP.
 adresses IP sur la meme interface reseau.)

 22..  MMaa ccoonnffiigguurraattiioonn

 +o  le        dernier        noyau        (2.0.27        -       depuis
    ftp.funet.fi:/pub/Linux/kernel/src/v2.0) cela fonctionne depuis les
    noyaux 1.3.7x.

 +o  Aliasing IP compile en module chargeable. Vous auriez du indiquer a
    la commande "make config", pour  compiler  votre  noyau,  que  vous
    voulez  compiler  l'option  IP  masquerade  en ((MM))odule (NDT: c'est
    plutot l'option IP Aliasing).  Verifiez  dans  le  HOW-TO  sur  les
    modules    (s'il    existe),    ou   verifiez   dans   le   fichier
    /usr/src/linux/Documentation/modules.txt.

 +o  Je dois fournir 2 adresses IP en  plus  de  celle  qui  m'est  deja
    attribuee.

 +o  Un  adaptateur  de poche D-Link DE620 (ce n'est pas important, cela
    fonctionne avec  n'importe  quel  adaptateur  reseau  supporte  par
    Linux).

 33..  CCoommmmaannddeess

 +o  Premierement,  chargez le module IP alias (vous pouvez sauter cette
    etape si vous avez compile ce module dans le noyau):

      /sbin/insmod /lib/modules/`uname -r`/ipv4/ip_alias.o

 +o  Deuxiemement, configurez les interfaces loopback, eth0 et tous  les
    numeros   IP,  en  commencant  par  le  numero  IP  principal  pour
    l'interface eth0:

      /sbin/ifconfig lo 127.0.0.1
      /sbin/ifconfig eth0 up
      /sbin/ifconfig eth0 172.16.3.1
      /sbin/ifconfig eth0:0 172.16.3.10
      /sbin/ifconfig eth0:1 172.16.3.100

 172.16.3.1 est le numero IP principal, alors que .10 et .100 sont  les
 aliases.   La  magie vient de eth0:x, ou x=0,1,3,...n pour les differ-
 ents numeros IP.  Le numero IP principal n'a pas besoin d'alias.

 +o  Troisiemement,  configurez  les  routes.  D'abord  la  route   pour
    l'interface  loopback, puis le reseau, et finalement les numeros IP
    varies en commencant par celui par defaut (alloue originellement):

      /sbin/route add -net 127.0.0.0
      /sbin/route add -net 172.16.3.0 dev eth0
      /sbin/route add -host 172.16.3.1 dev eth0
      /sbin/route add -host 172.16.3.10 dev eth0:0
      /sbin/route add -host 172.16.3.100 dev eth0:1
      /sbin/route add default gw 172.16.3.200

 C'est tout.

 Dans l'exemple ci-dessus, j'utilise les numeros IP prives  (RFC  1918)
 dans  un but d'illustration. Remplacez-les par vos propres numeros IP,
 officiels ou prives.

 L'exemple ne montre que 3 numeros IP. Le maximum est defini a 256 dans
 /usr/include/linux/net_alias.h.  256  numeros  IP sur UNE carte, c'est
 beaucoup :-) !

 Voila a quoi ressemble mon /sbin/ifconfig:

      lo        Link encap:Local Loopback
                inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
                UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
                RX packets:5088 errors:0 dropped:0 overruns:0
                TX packets:5088 errors:0 dropped:0 overruns:0

      eth0      Link encap:10Mbps Ethernet  HWaddr 00:8E:B8:83:19:20
                inet addr:172.16.3.1  Bcast:172.16.3.255  Mask:255.255.255.0
                UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
                RX packets:334036 errors:0 dropped:0 overruns:0
                TX packets:11605 errors:0 dropped:0 overruns:0
                Interrupt:7 Base address:0x378

      eth0:0    Link encap:10Mbps Ethernet  HWaddr 00:8E:B8:83:19:20
                inet addr:172.16.3.10  Bcast:172.16.3.255  Mask:255.255.255.0
                UP BROADCAST RUNNING  MTU:1500  Metric:1
                RX packets:0 errors:0 dropped:0 overruns:0
                TX packets:0 errors:0 dropped:0 overruns:0

      eth0:1    Link encap:10Mbps Ethernet  HWaddr 00:8E:B8:83:19:20
                inet addr:172.16.3.100  Bcast:172.16.3.255  Mask:255.255.255.0
                UP BROADCAST RUNNING  MTU:1500  Metric:1
                RX packets:1 errors:0 dropped:0 overruns:0
                TX packets:0 errors:0 dropped:0 overruns:0

 Et /proc/net/aliases:

 device           family address
 eth0:0           2      172.16.3.10
 eth0:1           2      172.16.3.100

 Et proc/net/alias_types:

      type    name            n_attach
      2       ip              2

 Bien sur, les donnees de /proc/net ont  ete  creees  par  la  commande
 ifconfig, et non a la main!

 44..  QQuueessttiioonnss

 44..11..  CCoommmmeenntt ggaarrddeerr llaa ccoonnffiigguurraattiioonn aapprreess uunn rreebboooott??

 Reponse:

 +o  que  vous  utilisiez  un init a la maniere BSD ou a la maniere SysV
    (RedHat par  exemple),  vous  pouvez  toujours  inclure  cela  dans
    /etc/rc.d/rc.local.

 +o  Voici ce que j'ai dans mon systeme init SysV (RedHat 3.0.3 et 4.0):

 +o  Mon /etc/rc.d/rc.local: (edite pour  ne  montrer  que  les  parties
    interessantes)

      # configuration des interfaces avec IP alias
      echo "Configuration des aliases IP: 172.16.3.1, 172.16.3.10, 172.16.3.100..."
      /sbin/ifconfig lo 127.0.0.1
      /sbin/ifconfig eth0 up
      /sbin/ifconfig eth0 172.16.3.1
      /sbin/ifconfig eth0:0 172.16.3.10
      /sbin/ifconfig eth0:1 172.16.3.100
      # configuration des routes
      echo "Configuration des routes IP..."
      /sbin/route add -net 127.0.0.0
      /sbin/route add -net 172.16.3.0 dev eth0
      /sbin/route add -host 172.16.3.1 eth0
      /sbin/route add -host 172.16.3.10 eth0:0
      /sbin/route add -host 172.16.3.100 eth0:1
      /sbin/route add default gw 172.16.3.200
      #

 44..22..    CCoommmmeenntt  ccoonnffiigguurreerr  sseennddmmaaiill  ppoouurr  rreecceevvooiirr  ddeess  mmaaiillss  ssuurr
 pplluussiieeuurrss nnuummeerrooss IIPP??

 Reponse:

 +o  Creer  (s'il  n'existe  pas  deja)  un fichier appele, par exemple,
    /etc/mes_noms.cw. Il ne doit pas forcemement s'appeler ainsi, ni se
    trouver dans le repertoire /etc.

 +o  Dans  ce  fichier,  placer les noms officiels des numeros alias IP.
    Si ces numeros n'ont pas de nom dans un domaine, alors vous  pouvez
    indiquer le numero IP lui-meme.

      /etc/mes_noms.cw:
      -----------------
      # /etc/mes_noms.cw - inclure ici tous les aliases pour votre machine
      #                    # est un commentaire

      domaine.un.net
      domaine.deux.com
      domaine.trois.org
      4.5.6.7

 +o  Dans votre fichier sendmail.cf, a l'endroit ou on definit une macro
    de classe fichier Fw, ajoutez:

      #################
      # infos locales #
      #################
      # fichier contenant les noms des hotes pour lesquels on recoit du courrier
      Fw/etc/mes_noms.cw

 +o  Cela  devrait  suffire.  Testez  votre  nouvelle  configuration  en
    lancant sendmail en mode de test, par exemple:

 ganymede$ /usr/lib/sendmail -bt
 ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
 Enter < ruleset> < address>
 < 0 [email protected]
 rewrite: ruleset  0   input: moi @ 4 . 5 . 6 . 7
 rewrite: ruleset 98   input: moi @ 4 . 5 . 6 . 7
 rewrite: ruleset 98 returns: moi @ 4 . 5 . 6 . 7
 rewrite: ruleset 97   input: moi @ 4 . 5 . 6 . 7
 rewrite: ruleset  3   input: moi @ 4 . 5 . 6 . 7
 rewrite: ruleset 96   input: moi < @ 4 . 5 . 6 . 7 >
 rewrite: ruleset 96 returns: moi < @ 4 . 5 . 6 . 7 . >
 rewrite: ruleset  3 returns: moi < @ 4 . 5 . 6 . 7 . >
 rewrite: ruleset  0   input: moi < @ 4 . 5 . 6 . 7 . >
 rewrite: ruleset 98   input: moi < @ 4 . 5 . 6 . 7 . >
 rewrite: ruleset 98 returns: moi < @ 4 . 5 . 6 . 7 . >
 rewrite: ruleset  0 returns: $# local $: moi
 rewrite: ruleset 97 returns: $# local $: moi
 rewrite: ruleset  0 returns: $# local $: moi
 < 0 [email protected]
 rewrite: ruleset  0   input: moi @ 4 . 5 . 6 . 8
 rewrite: ruleset 98   input: moi @ 4 . 5 . 6 . 8
 rewrite: ruleset 98 returns: moi @ 4 . 5 . 6 . 8
 rewrite: ruleset 97   input: moi @ 4 . 5 . 6 . 8
 rewrite: ruleset  3   input: moi @ 4 . 5 . 6 . 8
 rewrite: ruleset 96   input: moi < @ 4 . 5 . 6 . 8 >
 rewrite: ruleset 96 returns: moi < @ 4 . 5 . 6 . 8 >
 rewrite: ruleset  3 returns: moi < @ 4 . 5 . 6 . 8 >
 rewrite: ruleset  0   input: moi < @ 4 . 5 . 6 . 8 >
 rewrite: ruleset 98   input: moi < @ 4 . 5 . 6 . 8 >
 rewrite: ruleset 98 returns: moi < @ 4 . 5 . 6 . 8 >
 rewrite: ruleset 95   input: < > moi < @ 4 . 5 . 6 . 8 >
 rewrite: ruleset 95 returns: moi < @ 4 . 5 . 6 . 8 >
 rewrite: ruleset  0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: moi < @ 4 . 5 . 6 . 8 >
 rewrite: ruleset 97 returns: $# smtp $@ 4 . 5 . 6 . 8 $: moi < @ 4 . 5 . 6 . 8 >
 rewrite: ruleset  0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: moi < @ 4 . 5 . 6 . 8 >
 >

 Notez  que  lorsque j'ai teste [email protected], cela a envoye le mail a la
 machine locale, alors que [email protected] a ete envoye a l'agent de trans-
 port smtp.  C'est la reponse correcte.

 +o  Tout est configure maintenant.

 55..  CCoonncclluussiioonn

 J'espere que ce qui precede sera utile a quelqu'un.

 Merci  a  tous  ceux  qui  ont  superbement  travaille  sur  Linux  et
 l'aliasing IP.

 Et particulierement a Juan Jose  Ciarlante  pour  avoir  clarifie  mes
 questions.   Merci  aussi  a  tous ceux qui ont remarque mes fautes de
 frappe et m'ont fourni des suggestions!

 Si vous trouvez ce document utile, ou si  vous  avez  des  suggestions
 pour  des  ameliorations,  envoyez  moi  un  courrier  electronique a:
 [email protected].

 Amusez-vous bien.

 Des   questions?   envoyez   moi   un    courrier    electronique    a
 [email protected].