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].