Mini How-To sur la configuration de l'aliasing IP sous Linux

Harish Pillay

2001-01-23

Historique des versions
Version 1.2 2001-01-26 Revu par�: JEY
Version 1.1 2001-01-24 Revu par�: JEY
Version 1.0 1997-01-13 Revu par�: HP

C'est une recette de cuisine pour configurer et utiliser l'aliasing IP sur une machine Linux, et pour configurer cette machine pour recevoir du courrier �lectronique sur les adresses IP utilisant l'aliasing. (NDT: l'aliasing IP permet d'associer plusieurs adresses IP sur la m�me interface r�seau.)


Ma configuration


Commandes

  1. Chargez le module IP alias (vous pouvez sauter cette �tape si vous avez compil� ce module dans le noyau):

    /sbin/insmod /lib/modules/`uname -r`/ipv4/ip_alias.o
  2. Configurez les interfaces loopback, eth0 et tous les num�ros IP, en commen�ant par le num�ro 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 num�ro IP principal, alors que .10 et .100 sont les aliases. La magie vient de eth0:x, o� x=0,1,3,...n pour les diff�rents num�ros IP. Le num�ro IP principal n'a pas besoin d'alias.

  3. Configurez les routes. D'abord la route pour l'interface loopback, puis le r�seau, et finalement les divers num�ros IP en commen�ant par celui par d�faut (allou� 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 num�ros IP priv�s (RFC 1918) dans un but d'illustration. Remplacez-les par vos propres num�ros IP, officiels ou priv�s.

L'exemple ne montre que 3 num�ros IP. Le maximum est d�fini � 256 dans /usr/include/linux/net_alias.h. 256 num�ros IP sur UNE carte, c'est beaucoup :-) !

Voil� � 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 s�r, les donn�es de /proc/net ont �t� cr��es par la commande ifconfig, et non � la main!


Probl�mes: Questions et R�ponses

Question: Comment garder la configuration apr�s un red�marrage?

R�ponse: que vous utilisiez un init � la mani�re BSD ou � la mani�re SysV (RedHat par exemple), vous pouvez toujours inclure cela dans /etc/rc.d/rc.local. Voici ce que j'ai dans mon syst�me init SysV (RedHat 3.0.3 et 4.0):

Mon /etc/rc.d/rc.local: (�dit� pour ne montrer que les parties int�ressantes)

# 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
# 

Question: Comment configurer sendmail pour recevoir des mails sur plusieurs num�ros IP?

R�ponse: Cr�er (s'il n'existe pas d�j�) un fichier appel�, par exemple, /etc/mes_noms.cw. Il ne doit pas forc�mement s'appeler ainsi, ni se trouver dans le repertoire /etc directory.

Dans ce fichier, placer les noms officiels des num�ros alias IP. Si ces num�ros n'ont pas de nom dans un domaine, alors vous pouvez indiquer le num�ro IP lui-m�me.

Le fichier /etc/mes_noms.cw pourrait ressembler � �a:

# /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 

Dans votre fichier sendmail.cf, � l'endroit o� on d�finit une macro de classe fichier Fw, ajoutez:

     
##################
# infos locales  #
##################
                                     
                                     
# fichier contenant les noms des h�tes pour lesquels on re�oit du courrier
Fw/etc/mes_noms.cw
                                 

Cela devrait suffire. Testez votre nouvelle configuration en lan�ant sendmail en mode de test, par exemple:

ganymede$ /usr/lib/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter < ruleset> < address>
> 0 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 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 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 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 test� moi@4.5.6.7, cela a envoy� le mail � la machine locale, alors que moi@4.5.6.8 a �t� envoy� � l'agent de transport smtp. C'est la r�ponse correcte.

Tout est configur� maintenant.


Remerciements

Merci � tous ceux qui ont fait ce travail grandiose sur Linux et l'Aliasing IP. Et particuli�rement � Juan Jose Ciarlante pour avoir clarifi� mes questions.

Gloire aux as de la programmation!

Si vous trouvez ce document utile, ou si vous avez des suggestions pour des am�liorations, envoyez moi un courrier �lectronique �: . (NDT: l'auteur n'�tant probablement pas francophone, pensez � r�diger vos courriers en anglais...)

Amusez-vous bien.

Pour plus d'information � propos de r�seau, vous pouvez consulter le Linux Networking Overview HOWTO (NDT: pour la version fran�aise: Possibilit�s r�seau de Linux HOWTO).