Mehrere DHCP-Leases auf einer einzigen Schnittstelle

7

Wenn ich 2 statische IP-Adressen haben möchte, kann ich Folgendes tun:

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

Ich möchte jedoch DHCP verwenden, um Adressen abzurufen. Ich habe folgendes versucht:

auto eth0
    iface eth0 inet dhcp

auto eth0:0
    iface eth0:0 inet dhcp

... aber am Ende habe ich nur eth0 und keine zweite IP. Gibt es einen einfachen Weg, dies zu tun?

Dan
quelle

Antworten:

5

Nach ein wenig Recherche kann man das anscheinend nicht machen.

Die Subschnittstelle kann keine andere IP-Adresse anfordern, da sie dieselbe MAC-Adresse wie die physische Schnittstelle verwendet. Da DHCP-Anforderungen nach MAC-Adresse erfolgen, können Sie nicht zwei IPs für dieselbe Schnittstelle abrufen.

Eine Antwort von SuperUser schlägt die folgenden zwei Methoden vor:

Methode 1

Erstellen Sie ein Skript, das ungefähr so ​​funktioniert (mit einer auf der Primärseite definierten Unterschnittstelle):

  1. Die primäre Schnittstelle gibt DHCP aus und erhält die IP-Adresse.
  2. Macchanger ändert MAC-Adresse der Schnittstelle,
  3. Subschnittstelle gibt DHCP aus und erhält IP-Adresse,
  4. Mac-Adresse mit Macchanger zurücksetzen.
  5. Beenden Sie den DHCP-Client, damit er später nicht automatisch ausgeführt wird.

Berechnen Sie die Lease-Zeit der angegebenen IP-Adresse und planen Sie die erneute Ausführung dieses Skripts, bevor die Lease abläuft.

Methode 2

Dazu müssen Sie iproute2installiert haben. Der folgende Befehl fügt eine virtuelle Schnittstelle hinzu, die an eine vorhandene eth0-Schnittstelle gebunden ist:

ip link add link eth0 address 00:11:22:33:44:55 virtual0 type macvlan

Ersetzen Sie den Mac und den Namen "virtual0" der Benutzeroberfläche nach Belieben. Mach es an:

ip link set virtual0 up

Konfigurieren Sie dann nach Bedarf mit dhcpd oder dhclient oder ifconfig. Ich habe dies auf Debian Squeeze getestet - in Ihrer Distribution ist möglicherweise nicht alles im Kernel aktiviert (insbesondere Macvlan).

Quelle: SuperUser : Abrufen von 2 IP-Adressen auf einer Netzwerkkarte mithilfe von DHCP

Andere Quellen:

Alaa Ali
quelle
6

Sie müssen auch sicherstellen, dass die primäre Schnittstelle für den Promiscuous-Modus konfiguriert ist:

ip link set dev eth0 promisc on

Wenn Sie eine virtuelle Maschine verwenden, stellen Sie außerdem sicher, dass Ihr VM-Host dem Gast die Verwendung des Promiscuous-Modus ermöglicht.

Sie können dies alles so zusammenführen /etc/network/interfaces:

# 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

...usw

David Harrold
quelle
0

Als ich Davids Antwort erweiterte, funktionierte es für mich, ohne einen Promsic-Modus zu benötigen. Ich fand es hilfreich, einen Hostnamen hinzuzufügen, damit mein Router DNS für jede Schnittstelle auflöst.

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