Configuration de l'aliasing IP
Configuration de l'aliasing IP sous Linux
Harish
Pillay, h.pillay@ieee.org
Version
Française par
Laurent
Caillat-Vallet, caillat@univ-lyon1.fr
13 Janvier 1997
Table des matières
ISynopsis 1
IIMa configuration 1
IIICommandes 2
IVQuestions 4
IV.1Comment garder la configuration après un reboot? 4
IV.2Comment configurer sendmail pour recevoir des mails sur plusieurs numéros IP? 4
VConclusion 7
C'est une recette de cuisine sur la manière 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
électronique sur les numéros alias IP.
(NDT:
l'aliasing IP permet d'associer plusieurs adresses IP sur la même
interface réseau.
)
le dernier noyau (2.0.27 - depuis ftp.funet.fi:/pub/Linux/kernel/src/v2.0) cela fonctionne depuis les noyaux 1.3.7x.
Aliasing IP compilé en
module chargeable. Vous auriez du indiquer à la commande
"make config", pour compiler 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).
Premièrement, 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
Deuxièmement, 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
, ou
x=0,1,3,...n pour les différents numéros IP. Le numéro
IP principal n'a pas besoin d'alias.
Troisièmement, configurez les routes. D'abord la route pour l'interface loopback, puis le réseau, et finalement les numéros IP variés 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 :-) !
Voila à 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
.
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.
/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
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 hotes pour lesquels on recoit 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.
J'espère que ce qui précède sera utile à quelqu'un.
Merci à tous ceux qui ont superbement travaillé sur Linux et l'aliasing IP.
Et particulièrement à Juan Jose Ciarlante pour avoir clarifié mes questions. Merci aussi à tous ceux qui ont remarqué mes fautes de frappe et m'ont fourni des suggestions!
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 .
Amusez-vous bien.
Des questions? envoyez moi un courrier électronique à h.pillay@ieee.org .