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 |
L'aliasing IP est en standard dans les noyaux 2.0.x et 2.2.x, et disponible en option de compilation dans les versions 2.4.x. (L'aliasing IP a �t� d�sapprouv� dans les 2.4.x et remplac� par un m�canisme de pare-feu plus puissant.)
Aliasing IP compil� en module chargeable. Vous auriez du indiquer pendant la commande "make config", pour construire votre noyau, que vous voulez compiler l'option "IP Masquerade" en (M)odule. (NDT: c'est plut�t l'option IP Aliasing). V�rifiez dans le HOW-TO sur les modules (s'il existe), ou v�rifiez dans le fichier /usr/src/linux/Documentation/modules.txt.
Je dois fournir 2 adresses IP en plus de celle qui m'est d�j� attribu�e.
Un adaptateur de poche D-Link DE620 (ce n'est pas important, cela fonctionne avec n'importe quel adaptateur r�seau support� par Linux).
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
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.
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!
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 #
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.
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 �: <h.pillay@ieee.org>
. (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).