web-dev-qa-db-fra.com

Plusieurs baux DHCP sur une seule interface

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?

7
Dan

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):

  1. L’interface principale émet le protocole DHCP et obtient l’adresse IP,
  2. macchanger change l'adresse MAC de l'interface,
  3. La sous-interface émet un DHCP et obtient une adresse IP.
  4. Rétablir l'adresse mac avec macchanger.
  5. 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:

5
Alaa Ali

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

6
David Harrold

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
0
mknoll