[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Comment créer une interface virtuelle ?



Salut,

giggz a écrit :

Je désire créer une interface virtuelle : j'aimerais faire une boucle
locale avec comme adresse une IP 130.66.xx.xx

en gros je veux que si je ping cette adresse, ça fasse comme si je
pinguais 127.0.0.1.

En fait tu n'as pas besoin de créer une interface virtuelle pour cela. C'est déjà ce qui se passe avec n'importe quelle adresse de n'importe quelle interface de la machine. Par exemple si l'interface ethernet eth0 a pour adresse 1.2.3.4, le trafic émis localement vers cette adresse passe en fait par l'interface de loopback (lo). Pour vérifier, c'est facile : il suffit de désactiver lo avec la commande "ifconfig lo down" et d'essayer ensuite d'atteindre n'importe quelle adresse locale.

Comment puis je réalisé ce tour de passe passe?

Cela n'a rien d'un tour de passe-passe : il suffit de créer une route locale vers cette adresse, ce qui peut être fait de diverses façons.

1) Méthode "traditionnelle" : créer avec ifconfig un "alias IP" d'une interface existante, appellé parfois "interface virtuelle" :

$ ifconfig lo:1 130.66.xx.xx netmask <masque>
ou
$ ifconfig lo add 130.66.xx.xx netmask <masque>

Note : avec la seconde formulation, le nom de l'alias est déterminé automatiquement.


2) Avec une interface "dummy" si le noyau a été compilé avec l'option CONFIG_DUMMY :

$ modprobe dummy  # si en module
$ ifconfig dummy0 130.66.xx.xx netmask <masque>

Note : le trafic émis localement vers l'adresse passe toujours par l'interface de loopback. L'interface dummy est un trou noir qui avale les paquets qu'on y envoie et dont rien ne sort.

3) Méthode "moderne" pour ajouter une adresse à une interface avec "ip addr" :

$ ip addr add 130.66.xx.xx/<longueur masque> dev lo

Note : l'adresse ajoutée ainsi n'est pas visible avec ifconfig mais seulement avec "ip addr".


4) Méthode "originale" consistant à seulement créer une route "locale" vers cette adresse (ou un bloc d'adresses) avec "ip route" :

$ ip route add local 130.66.xx.xx dev lo

En effet ce sont en réalité ces routes locales qui au final font qu'une machine répond à une adresse. Elles sont visibles avec la commande suivante :

$ ip route list type local table local



Reply to: