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!