2. 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!