Si je veux avoir 2 adresses IP statiques, je peux faire quelque chose comme ceci:
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
broadcast 192.168.1.255
auto eth0:0
iface eth0:0 inet static
address 192.168.1.11
netmask 255.255.255.0
broadcast 192.168.1.255
Cependant, j'aimerais utiliser DHCP pour obtenir des adresses. J'ai essayé ce qui suit:
auto eth0
iface eth0 inet dhcp
auto eth0:0
iface eth0:0 inet dhcp
... mais je finis seulement avec eth0, et pas de deuxième adresse IP. Y a-t-il un moyen simple de s'y prendre?
Après un peu de recherche, apparemment, vous ne pouvez pas faire cela.
La sous-interface ne peut pas demander une autre adresse IP car elle utilise la même adresse MAC que l'interface physique et, comme les demandes DHCP sont définies par adresse MAC, vous ne pouvez pas obtenir deux adresses IP pour la même interface.
Une réponse de SuperUser suggère les deux méthodes suivantes:
Méthode 1
Créez un script qui fera quelque chose comme ceci (avec une sous-interface définie sur le primaire):
- L’interface principale émet le protocole DHCP et obtient l’adresse IP,
- macchanger change l'adresse MAC de l'interface,
- La sous-interface émet un DHCP et obtient une adresse IP.
- Rétablir l'adresse mac avec macchanger.
- Tuez le client DHCP afin qu'il ne s'exécute pas automatiquement plus tard.
Déterminez la durée de bail de l'adresse IP qui vous a été attribuée et programmez l'exécution de ce script avant l'expiration du bail.
Méthode 2
Pour cela, vous aurez besoin de
iproute2
. La commande suivante ajoute une interface virtuelle liée à une interface eth0 existante:ip link add link eth0 address 00:11:22:33:44:55 virtual0 type macvlan
Remplacez le nom mac et "virtual0" de l'interface par tout ce que vous voulez. Allume ça:
ip link set virtual0 up
Configurez ensuite avec dhcpd ou dhclient ou ifconfig selon vos besoins. J'ai testé cela sur Debian Squeeze - votre distribution n'a peut-être pas tout le nécessaire activé dans le noyau (macvlan en particulier).
Source: SuperUser: Obtenir 2 adresses IP sur une carte réseau, en utilisant DHCP
Autres sources:
Vous devez également vous assurer que l'interface principale est configurée pour le mode promiscuous:
ip link set dev eth0 promisc on
Si vous utilisez une machine virtuelle, assurez-vous également que votre hôte VM permet à l'invité d'utiliser le mode promiscuous.
Vous pouvez rassembler tout cela dans /etc/network/interfaces
comme ceci:
# Primary interface
auto eth0
iface eth0 inet dhcp
up ip link set dev eth0 promisc on
# Macvlan interfaces
auto vir1
iface vir1 inet dhcp
pre-up ip link add link eth0 address 02:cd:ab:00:10:01 vir1 type macvlan
post-down ip link delete vir1
auto vir2
iface vir2 inet dhcp
pre-up ip link add link eth0 address 02:cd:ab:00:10:02 vir2 type macvlan
post-down ip link delete vir2
...etc
En développant la réponse de David, cela a fonctionné pour moi, sans avoir besoin du mode Promsic. J'ai trouvé utile d'ajouter un nom d'hôte pour que mon routeur résolve le DNS pour chaque interface.
auto vir1
iface vir1 inet dhcp
hostname vir1-hostname
pre-up ip link add link eth0 address 02:cd:ab:00:10:01 vir1 type macvlan
post-down ip link delete vir1